From 611bd23a7ca1e0bc49b7840160637184d841094e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?= Date: Wed, 11 Mar 2026 09:02:05 +0800 Subject: [PATCH] add skill --- config/local-upload.yaml | 9 + config/s3-upload-sparticle.yaml | 8 + docker-compose-with-pgsql.yml | 1 + docker-compose.yml | 1 + skills/imap-smtp-email/SKILL.md | 211 +++++++ skills/imap-smtp-email/scripts/imap.js | 588 ++++++++++++++++++ skills/imap-smtp-email/scripts/smtp.js | 234 +++++++ skills/imap-smtp-email/setup.sh | 199 ++++++ skills/r2-upload/.gitignore | 23 + skills/r2-upload/SKILL.md | 91 +++ skills/r2-upload/references/CONFIGURATION.md | 282 +++++++++ .../r2-upload/references/TROUBLESHOOTING.md | 405 ++++++++++++ skills/r2-upload/scripts/.r2-upload.yml | 17 + skills/r2-upload/scripts/r2-upload.py | 75 +++ skills/r2-upload/scripts/upload.py | 528 ++++++++++++++++ 15 files changed, 2672 insertions(+) create mode 100644 config/local-upload.yaml create mode 100644 config/s3-upload-sparticle.yaml create mode 100644 skills/imap-smtp-email/SKILL.md create mode 100644 skills/imap-smtp-email/scripts/imap.js create mode 100644 skills/imap-smtp-email/scripts/smtp.js create mode 100644 skills/imap-smtp-email/setup.sh create mode 100644 skills/r2-upload/.gitignore create mode 100644 skills/r2-upload/SKILL.md create mode 100644 skills/r2-upload/references/CONFIGURATION.md create mode 100644 skills/r2-upload/references/TROUBLESHOOTING.md create mode 100644 skills/r2-upload/scripts/.r2-upload.yml create mode 100644 skills/r2-upload/scripts/r2-upload.py create mode 100644 skills/r2-upload/scripts/upload.py diff --git a/config/local-upload.yaml b/config/local-upload.yaml new file mode 100644 index 0000000..34519bb --- /dev/null +++ b/config/local-upload.yaml @@ -0,0 +1,9 @@ +# Default bucket (used when no bucket specified) +default: local + +# Bucket configurations +buckets: + local: + mode: local + endpoint: http://localhost:8001/public + public_dir: public # relative to cwd, or use absolute path diff --git a/config/s3-upload-sparticle.yaml b/config/s3-upload-sparticle.yaml new file mode 100644 index 0000000..91b144e --- /dev/null +++ b/config/s3-upload-sparticle.yaml @@ -0,0 +1,8 @@ +default: local + +# Bucket configurations +buckets: + local: + mode: local + endpoint: http://localhost:8001/public + public_dir: public # relative to cwd, or use absolute path diff --git a/docker-compose-with-pgsql.yml b/docker-compose-with-pgsql.yml index 2c9ca52..4eaf91d 100644 --- a/docker-compose-with-pgsql.yml +++ b/docker-compose-with-pgsql.yml @@ -34,6 +34,7 @@ services: - DEFAULT_THINKING_ENABLE=true # PostgreSQL 配置 - CHECKPOINT_DB_URL=postgresql://postgres:E5ACJo6zJub4QS@postgres:5432/agent_db + - R2_UPLOAD_CONFIG=/app/config/local-upload.yaml volumes: # 挂载项目数据目录 - ./projects:/app/projects diff --git a/docker-compose.yml b/docker-compose.yml index 4f2efde..0adb11a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,7 @@ services: - BACKEND_HOST=http://api-dev.gbase.ai - MAX_CONTEXT_TOKENS=262144 - DEFAULT_THINKING_ENABLE=true + - R2_UPLOAD_CONFIG=/app/config/s3-upload-sparticle.yaml volumes: # 挂载项目数据目录 - ./projects:/app/projects diff --git a/skills/imap-smtp-email/SKILL.md b/skills/imap-smtp-email/SKILL.md new file mode 100644 index 0000000..908f901 --- /dev/null +++ b/skills/imap-smtp-email/SKILL.md @@ -0,0 +1,211 @@ +--- +name: imap-smtp-email +description: Read and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Works with any IMAP/SMTP server including Gmail, Outlook, 163.com, vip.163.com, 126.com, vip.126.com, 188.com, and vip.188.com. +metadata: + openclaw: + emoji: "📧" + requires: + env: + - IMAP_HOST + - IMAP_USER + - IMAP_PASS + - SMTP_HOST + - SMTP_USER + - SMTP_PASS + bins: + - node + - npm + primaryEnv: SMTP_PASS +--- + +# IMAP/SMTP Email Tool + +Read, search, and manage email via IMAP protocol. Send email via SMTP. Supports Gmail, Outlook, 163.com, vip.163.com, 126.com, vip.126.com, 188.com, vip.188.com, and any standard IMAP/SMTP server. + +## Configuration + +Create `.env` in the skill folder or set environment variables: + +```bash +# IMAP Configuration (receiving email) +IMAP_HOST=imap.gmail.com # Server hostname +IMAP_PORT=993 # Server port +IMAP_USER=your@email.com +IMAP_PASS=your_password +IMAP_TLS=true # Use TLS/SSL connection +IMAP_REJECT_UNAUTHORIZED=true # Set to false for self-signed certs +IMAP_MAILBOX=INBOX # Default mailbox + +# SMTP Configuration (sending email) +SMTP_HOST=smtp.gmail.com # SMTP server hostname +SMTP_PORT=587 # SMTP port (587 for STARTTLS, 465 for SSL) +SMTP_SECURE=false # true for SSL (465), false for STARTTLS (587) +SMTP_USER=your@gmail.com # Your email address +SMTP_PASS=your_password # Your password or app password +SMTP_FROM=your@gmail.com # Default sender email (optional) +SMTP_REJECT_UNAUTHORIZED=true # Set to false for self-signed certs +``` + +## Common Email Servers + +| Provider | IMAP Host | IMAP Port | SMTP Host | SMTP Port | +|----------|-----------|-----------|-----------|-----------| +| 163.com | imap.163.com | 993 | smtp.163.com | 465 | +| vip.163.com | imap.vip.163.com | 993 | smtp.vip.163.com | 465 | +| 126.com | imap.126.com | 993 | smtp.126.com | 465 | +| vip.126.com | imap.vip.126.com | 993 | smtp.vip.126.com | 465 | +| 188.com | imap.188.com | 993 | smtp.188.com | 465 | +| vip.188.com | imap.vip.188.com | 993 | smtp.vip.188.com | 465 | +| yeah.net | imap.yeah.net | 993 | smtp.yeah.net | 465 | +| Gmail | imap.gmail.com | 993 | smtp.gmail.com | 587 | +| Outlook | outlook.office365.com | 993 | smtp.office365.com | 587 | +| QQ Mail | imap.qq.com | 993 | smtp.qq.com | 587 | + +**Important for Gmail:** +- Gmail does **not** accept your regular account password +- You must generate an **App Password**: https://myaccount.google.com/apppasswords +- Use the generated 16-character App Password as `IMAP_PASS` / `SMTP_PASS` +- Requires Google Account with 2-Step Verification enabled + +**Important for 163.com:** +- Use **authorization code** (授权码), not account password +- Enable IMAP/SMTP in web settings first + +## IMAP Commands (Receiving Email) + +### check +Check for new/unread emails. + +```bash +node scripts/imap.js check [--limit 10] [--mailbox INBOX] [--recent 2h] +``` + +Options: +- `--limit `: Max results (default: 10) +- `--mailbox `: Mailbox to check (default: INBOX) +- `--recent