- name
- nexlink
- version
- 0.15.9
- description
- 🔗 NexLink — Enterprise Connector for Nextcloud, Exchange & YouTube. Built by Firma de AI. Email, calendar, tasks, file management, document understanding, transcript extraction, contacts, analytics — with built-in security confirmations and least-privilege defaults.
- metadata
- openclaw
- requires
- bins
- env
- dependencies
- type
- pip
- version
- ==5.6.0
- type
- pip
- version
- ==1.3.0
- type
- pip
- version
- ==0.7.1
- description
- Secure XML parsing — fixes XXE vulnerability
- type
- pip
- version
- ==2.31.0
- type
- pip
- version
- ==6.0.2
- type
- pip
- version
- >=0.10.0
- optional
- true
- type
- pip
- version
- >=1.0.0
- description
- Document understanding features
- type
- pip
- version
- >=7.0.0
- optional
- true
- description
- Testing framework
- primaryEnv
- EXCHANGE_SERVER
- skillKey
- nextlink
- emoji
- 🔗
- homepage
- https://github.com/asistent-alex/openclaw-nexlink
- always
- false
- author
- Firma de AI
- links
- homepage
- https://firmade.ai
- repository
- https://github.com/asistent-alex/openclaw-nexlink
NexLink — Nextcloud, Exchange & YouTube Connector
Built by Firma de AI, supported by Firma de IT.
This skill connects Nextcloud, Exchange, and YouTube into one practical workflow layer for:
- Nextcloud: file operations, sharing, document understanding, workflow extraction
- Exchange: email, calendar, tasks, analytics
- YouTube: transcript extraction with language fallback
Available Modules
| Module | Description | Command | |||||
|---|---|---|---|---|---|---|---|
| Nextcloud | Files, sharing, summarization, Q&A, action extraction, Contacts (CardDAV) | `nexlink files <...> \ | nexlink contacts --source nextcloud <...>` | ||||
| Exchange | Email, Calendar, Tasks, Analytics, Contacts | `nexlink <mail\ | cal\ | tasks\ | analytics\ | sync\ | contacts>` |
| YouTube | Transcript extraction with language fallback | `nexlink youtube transcript\ | languages <url>` |
What it solves
Use this skill when you want to work with:
- Nextcloud files: listing, search, upload, download, move, sharing
- document understanding: extract-text, summarize, ask-file
- workflow extraction: extract actions from files and create Exchange tasks
- YouTube transcripts:
nexlink youtube transcript <url>(text/JSON, language fallback, save to Nextcloud) - emails, replies, drafts and attachments in Exchange
- calendar, meetings and follow-up tasks
- Exchange tasks, including delegate access
- Contacts: Exchange contacts (EWS) and Nextcloud contacts (CardDAV)
Quick Start
# Connection
nexlink mail connect
# List emails
nexlink mail read --limit 10
nexlink mail read --unread
# Send email
nexlink mail send --to "client@example.com" --subject "Offer" --body "..."
# Reply
nexlink mail reply --id EMAIL_ID --body "Reply"Calendar
# Events
nexlink cal today
nexlink cal week
nexlink cal list --days 7
# Create event
nexlink cal create --subject "Meeting" --start "2024-01-15 14:00" --duration 60
# With attendees
nexlink cal create --subject "Team Meeting" --start "2024-01-15 14:00" --to "user1@example.com,user2@example.com"Tasks
# List
nexlink tasks list
nexlink tasks list --overdue
# Create
nexlink tasks create --subject "Review proposal" --due "+7d" --priority high
# Complete
nexlink tasks complete --id TASK_IDAnalytics (Email Statistics)
# General statistics
nexlink analytics stats --days 30
# Average response time
nexlink analytics response-time --days 7
# Top senders
nexlink analytics top-senders --limit 20
# Activity heatmap
nexlink analytics heatmap --days 30
# Statistics per folder
nexlink analytics folders
# Full report
nexlink analytics report --days 30Contacts
# Exchange contacts (default source)
nexlink contacts list
nexlink contacts list --limit 10
# Get Exchange contact by ID
nexlink contacts get --id CONTACT_ID
# Create Exchange contact
nexlink contacts create --name "John Doe" --email "john@example.com" --phone "+40-700-000-000"
nexlink contacts create --name "Acme Corp" --phone "+40-711-111-111" --org "Acme" --title "CEO"
# Update Exchange contact
nexlink contacts update --id CONTACT_ID --phone "+40-722-222-222"
# Delete Exchange contact (moves to trash)
nexlink contacts delete --id CONTACT_ID
# Search contacts
nexlink contacts search --query "Acme"
# Nextcloud contacts (CardDAV — use --source nextcloud)
nexlink contacts addressbooks --source nextcloud
nexlink contacts list --source nextcloud
nexlink contacts list --source nextcloud --addressbook "/remote.php/dav/addressbooks/users/alex/contacts/"
# Get Nextcloud contact by UID
nexlink contacts get --uid CONTACT_UID --source nextcloud
# Create Nextcloud contact
nexlink contacts create --source nextcloud --name "Jane Doe" --email "jane@example.com" --phone "+40-733-333-333"
# Update Nextcloud contact
nexlink contacts update --uid CONTACT_UID --source nextcloud --phone "+40-744-444-444"
# Delete Nextcloud contact
nexlink contacts delete --uid CONTACT_UID --source nextcloudFiles (Nextcloud)
# List and search
nexlink files list /Documents/
nexlink files search contract /Clients/
# Upload / Download
nexlink files upload /local/report.pdf /Documents/
nexlink files download /Documents/report.pdf /local/
# Document understanding
nexlink files extract-text /Clients/contract.docx
nexlink files summarize /Clients/contract.docx
nexlink files ask-file /Clients/contract.docx "When is the renewal due?"
# Workflow extraction
nexlink files extract-actions /Clients/contract.txt
nexlink files create-tasks-from-file /Clients/contract.txt
nexlink files create-tasks-from-file /Clients/contract.txt --select 1,2 --execute
### YouTube Transcripts
Extract video subtitles with automatic language fallback:
Basic text transcript (English)
nexlink youtube transcript https://www.youtube.com/watch?v=VIDEO_ID
Romanian transcript with JSON output (includes timestamps)
nexlink youtube transcript https://youtu.be/VIDEO_ID --lang ro --format json
Try multiple languages, fall back in order
nexlink youtube transcript VIDEO_ID --lang ro,en
Save transcript to Nextcloud
nexlink youtube transcript VIDEO_ID --lang en --save
List available caption languages
nexlink youtube languages https://www.youtube.com/watch?v=VIDEO_ID
**Note:** Requires `pip install youtube-transcript-api` for the underlying library.
## Combined Workflows
### Email + Files
Send email with attachment from Nextcloud:
Download from Nextcloud and send
nexlink files download /Documents/offer.pdf /tmp/ nexlink mail send --to "client@example.com" --subject "Offer" --body "..." --attach /tmp/offer.pdf
Save attachment from email to Nextcloud:
Download attachment and upload to Nextcloud
nexlink mail download-attachment --id EMAIL_ID --name "contract.pdf" --output /tmp/ nexlink files upload /tmp/contract.pdf /Contracts/
### Calendar + Tasks
Create task from meeting request:
After meeting, create follow-up task
nexlink tasks create --subject "Follow-up meeting X" --due "+3d"
## Full Configuration
See [references/setup.md](references/setup.md) for detailed configuration.
## Positioning public / branding
For public listings, documentation, and SEO copy, prefer this positioning:
- **Public title:** `Firma de AI — Exchange & Nextcloud Assistant`
- **Subtitle:** `Email, files, tasks, and document workflows for teams`
- **Brand line:** `Built by Firma de AI, supported by Firma de IT.`
- **Links:** `https://firmade.ai` and `https://firmade.it`
This keeps the internal skill name `nexlink` while making the public positioning more accurate and searchable.
## Coding Standards
This project follows the [Hardshell Coding Standards](https://github.com/asistent-alex/openclaw-hardshell).
When writing or modifying Python code, see:
- **[Python Standards](https://github.com/asistent-alex/openclaw-hardshell/blob/main/references/languages/python.md)** - PEP 8, type hints, docstrings, security
- **[Testing Standards](https://github.com/asistent-alex/openclaw-hardshell/blob/main/references/testing.md)** - TDD, test pyramid, coverage
- **[Git Workflow](https://github.com/asistent-alex/openclaw-hardshell/blob/main/references/git-workflow.md)** - Conventional commits, PR process
Key rules:
- **PEP 8 formatting** - use `black` for formatting, `ruff` for linting
- **Type hints** - required for all function parameters and return types
- **Docstrings** - Google-style for all public functions and classes
- **Testing** - `pytest` with `pytest-cov` for coverage
- **Security** - never use `pickle` or `eval()` on untrusted input
- **Dependencies** - use `uv` or `poetry`, pin versions, audit with `pip-audit`
## Module Structure
modules/ ├── exchange/ # Email, Calendar, Tasks (Exchange on-prem) │ ├── SKILL.md # Module documentation │ ├── mail.py # Email operations │ ├── cal.py # Calendar operations │ ├── tasks.py # Task operations │ ├── sync.py # Sync and reminders │ └── ... ├── nextcloud/ # File management, doc understanding, workflow extraction │ ├── SKILL.md # Module documentation │ └── nextcloud.py # File operations and analysis └── (future modules)
## Notes
- Tasks are created in the default mailbox's Tasks folder or in the target mailbox when using delegate access
- For collaborative tasks, use calendar events with attendees
- Self-signed certificates require `verify_ssl: false`
## License
MIT License - see LICENSE file for details.