{"id":"a23c5589-8b0a-4a20-9771-e2be35e5fbb0","entityType":"agent","slug":"clawhub-openclawzhangchong-qq-mail-read-send","name":"qq-mail-read-send","canonicalUrl":"https://www.xpersona.co/agent/clawhub-openclawzhangchong-qq-mail-read-send","canonicalPath":"/agent/clawhub-openclawzhangchong-qq-mail-read-send","generatedAt":"2026-10-12T05:21:07.760Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-12T01:18:09.237Z","emptyReason":null},"description":"读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等 Skill: qq-mail-read-send Owner: openclawzhangchong Summary: 读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等 Tags: latest:1.0.1 Version history: v1.0.1 | 2026-05-03T15:36:59.500Z | user - 修正了文档中的编码异常和乱码问题，统一描述与参数命名 - 明确了配置、权限设置和安全建议的表述 - 修复并补全部分邮件场景和过滤说明 - 对示例代码和命令行使用说明进行了规范化完善 - 移除乱码字符，提升文档可读性 v1.0.0 | 2026-05-03T15:31:00.221Z | user - Initial release of qq-mail-read-send skill. - Supp","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 962 downloads reported by the source. Last updated 10/12/2026.","installCommand":"clawhub skill install s178cqx9kma3mpnvqe8evteyr983hvb4:qq-mail-read-send","sourceUrl":"https://clawhub.ai/openclawzhangchong/qq-mail-read-send","homepage":"https://clawhub.ai/openclawzhangchong/skills/qq-mail-read-send","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/openclawzhangchong/qq-mail-read-send","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/openclawzhangchong/skills/qq-mail-read-send","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等 Skill: qq-mail-read-send Owner: openclawzhangchong Summary: 读取和发送QQ邮箱邮件。使用IMAP协议"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:18:09.237Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:18:09.237Z","emptyReason":null},"stars":null,"forks":null,"downloads":962,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.1","tractionLabel":"962 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:18:09.166Z","emptyReason":null},"lastUpdatedAt":"2026-10-12T01:18:09.237Z","lastCrawledAt":"2026-10-12T01:18:09.166Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-13T01:18:09.166Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.1","createdAt":"2026-05-03T15:36:59.500Z","changelog":"- 修正了文档中的编码异常和乱码问题，统一描述与参数命名 - 明确了配置、权限设置和安全建议的表述 - 修复并补全部分邮件场景和过滤说明 - 对示例代码和命令行使用说明进行了规范化完善 - 移除乱码字符，提升文档可读性","fileCount":5,"zipByteSize":6645},{"version":"1.0.0","createdAt":"2026-05-03T15:31:00.221Z","changelog":"- Initial release of qq-mail-read-send skill. - Supports reading and sending emails via QQ Mail using IMAP and SMTP protocols. - Handles multiple character encodings for robust email parsing. - Provides detailed configuration and security instructions, including the use of QQ Mail authorization codes. - Includes Python code examples for both reading and sending emails. - Suitable for scenarios like checking inbox, searching, filtering, and sending emails from QQ Mail.","fileCount":4,"zipByteSize":5351}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s178cqx9kma3mpnvqe8evteyr983hvb4:qq-mail-read-send","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-12T05:21:07.760Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-openclawzhangchong-qq-mail-read-send/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-12T01:18:09.237Z","emptyReason":null},"readme":"Skill: qq-mail-read-send\n\nOwner: openclawzhangchong\n\nSummary: 读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等\n\nTags: latest:1.0.1\n\nVersion history:\n\nv1.0.1 | 2026-05-03T15:36:59.500Z | user\n\n- 修正了文档中的编码异常和乱码问题，统一描述与参数命名\n- 明确了配置、权限设置和安全建议的表述\n- 修复并补全部分邮件场景和过滤说明\n- 对示例代码和命令行使用说明进行了规范化完善\n- 移除乱码字符，提升文档可读性\n\nv1.0.0 | 2026-05-03T15:31:00.221Z | user\n\n- Initial release of qq-mail-read-send skill.\n- Supports reading and sending emails via QQ Mail using IMAP and SMTP protocols.\n- Handles multiple character encodings for robust email parsing.\n- Provides detailed configuration and security instructions, including the use of QQ Mail authorization codes.\n- Includes Python code examples for both reading and sending emails.\n- Suitable for scenarios like checking inbox, searching, filtering, and sending emails from QQ Mail.\n\nArchive index:\n\nArchive v1.0.1: 5 files, 6645 bytes\n\nFiles: qq_mail_sender.py (1826b), references/message-sending.md (1403b), skill-card.md (2498b), SKILL.md (6884b), _meta.json (136b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: qq-mail-read-send\ndescription: 读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等\nhomepage: https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256\nmetadata:\n  {\n    \"openclaw\": {\n      \"emoji\": \"📧\",\n      \"requires\": {\n        \"env\": [\"MAIL_USER\", \"MAIL_PASS\"],\n        \"config\": [\"~/.openclaw/secrets/mail_qq.env\"]\n      },\n      \"install\": []\n    }\n  }\n---\n\n# QQ邮箱读取和发送\n通过 IMAP 协议读取 QQ 邮箱邮件\n## 触发条件\n\n用户提到以下场景时使用：\n- \"查看邮箱\"\n- \"读取邮件\"\n- \"查看最近邮件\"\n- \"查看当天邮件\"\n- \"搜索邮件\"\n- \"有新的邮件吗\"\n\n## 配置\n\n需要提前配置QQ 邮箱 IMAP：\n1. 在 QQ 邮箱设置中开启 IMAP 服务\n2. 创建授权码（不是登录密码）\n3. 配置 secrets 文件：`~/.openclaw/secrets/mail_qq.env`\n   ```\n   MAIL_USER=your_email@qq.com\n   MAIL_PASS=your_auth_code\n   ```\n\n### 安全注意事项\n- 凭据文件必须设置权限为 `600`（仅所有者可读），防止其他用户读取敏感信息\n- `~/.openclaw/secrets/` 目录默认已经加入.gitignore，不会被提交到版本控制\n- 不要将授权码提交到代码仓库或分享给他人\n## 使用方法\n\n### 1. 连接邮箱\n\n```python\nimport imaplib\nimport email\nfrom email.header import decode_header\n\nIMAP_HOST = 'imap.qq.com'\nIMAP_PORT = 993\n\ndef connect_mail(user, password):\n    mail = imaplib.IMAP4_SSL(IMAP_HOST, IMAP_PORT)\n    mail.login(user, password)\n    mail.select('INBOX')\n    return mail\n```\n\n### 2. 搜索邮件\n\n```python\n# 搜索最近7天的邮件\nweek_ago = (datetime.now() - timedelta(days=7)).strftime('%d-%b-%Y')\ntyp, msg_ids = mail.search(None, f'SINCE {week_ago}')\n```\n\n### 3. 解析邮件\n\n```python\ndef decode_header_value(header_value):\n    \"\"\"兼容多种编码的解码\"\"\"\n    if not header_value:\n        return \"\"\n    decoded_parts = []\n    for content, encoding in decode_header(header_value):\n        if isinstance(content, bytes):\n            try:\n                decoded = content.decode(encoding if encoding else 'utf-8')\n            except:\n                # 尝试其他常见编码\n                for enc in ['gbk', 'gb2312', 'utf-8', 'big5', 'latin1']:\n                    try:\n                        decoded = content.decode(enc)\n                        break\n                    except:\n                        decoded = content.decode('utf-8', errors='ignore')\n        else:\n            decoded = str(content)\n        decoded_parts.append(decoded)\n    return ''.join(decoded_parts)\n```\n\n### 4. 提取正文\n\n邮件正文可能包含 HTML，需要清理：\n\n```python\nimport re\n\ndef get_text_body(msg):\n    body = ''\n    if msg.is_multipart():\n        for part in msg.walk():\n            if part.get_content_type() == 'text/html':\n                payload = part.get_payload(decode=True)\n                encoding = part.get_content_charset() or 'utf-8'\n                body = payload.decode(encoding, errors='ignore')\n                break\n    else:\n        payload = msg.get_payload(decode=True)\n        encoding = msg.get_content_charset() or 'utf-8'\n        body = payload.decode(encoding, errors='ignore')\n    \n    # 清理HTML标签\n    text = re.sub(r'<[^>]+>', ' ', body)\n    text = text.replace('&nbsp;', ' ')\n    text = text.replace('&amp;', '&')\n    text = re.sub(r'\\s+', ' ', text)\n    return text\n```\n\n## 邮件过滤\n\n根据用户需求过滤邮件，常见关键词类型：\n- 通知类：通知、提醒、公告\n- 业务类：订单、发货、支付\n- 职位类：面试、邀请、邀约（仅当用户明确需要时）\n## 注意事项\n\n1. QQ 邮箱必须使用授权码登录，非登录密码\n2. 邮件编码可能为GBK/GB2312/UTF-8 等，需要多种编码尝试\n3. IMAP 搜索不支持中文，使用 SINCE 获取所有邮件后本地过滤\n\n## 发送邮件\n通过 QQ 邮箱 SMTP 服务发送邮件，使用相同的授权码进行认证\n### 配置\n发送邮件使用与读取邮件相同的凭据文件 `~/.openclaw/secrets/mail_qq.env`\n```\nMAIL_USER=your_email@qq.com\nMAIL_PASS=your_auth_code\n```\n\n### SMTP 设置\n- 主机为 `smtp.qq.com`\n- 端口为 465 (SSL) 或 587 (STARTTLS)\n- 授权码： 与 IMAP 相同的授权码（非登录密码）\n### 使用方法\n\n#### 1. 使用 Python 模块发送邮件\n新建 `qq_mail_sender.py` 模块提供了发送邮件的功能\n```python\nfrom qq_mail_sender import send_email\n\nsend_email(\n    to=\"recipient@example.com\",\n    subject=\"测试邮件主题\",\n    body=\"这是一封测试邮件正文\"\n)\n```\n\n#### 2. 命令行方式\n```bash\npython qq_mail_sender.py recipient@example.com \"测试邮件主题\" \"这是一封测试邮件正文\"\n```\n\n#### 3. 详细代码示例（在 qq_mail_sender.py 中）\n\n```python\nimport smtplib\nimport ssl\nfrom email.message import EmailMessage\nfrom email.header import Header\nimport os\n\ndef load_credentials(env_path=r\"C:\\Users\\Administrator\\.openclaw\\secrets\\mail_qq.env\"):\n    \"\"\"从env文件加载MAIL_USER和MAIL_PASS\"\"\"\n    creds = {}\n    if os.path.exists(env_path):\n        with open(env_path, 'r') as f:\n            for line in f:\n                line = line.strip()\n                if line and not line.startswith('#'):\n                    if '=' in line:\n                        k, v = line.split('=', 1)\n                        creds[k.strip()] = v.strip()\n    return creds\n\ndef build_message(sender, to, subject, body, cc=None, bcc=None):\n    \"\"\"构建带有适当编码的EmailMessage\"\"\"\n    msg = EmailMessage()\n    msg['From'] = sender\n    msg['To'] = to\n    if cc:\n        msg['Cc'] = cc\n    if bcc:\n        msg['Bcc'] = bcc\n    msg['Subject'] = Header(subject, 'utf-8')\n    msg.set_content(body, charset='utf-8')\n    return msg\n\ndef send_email(to, subject, body, cc=None, bcc=None):\n    \"\"\"\n    通过QQ SMTP发送邮件\n    使用SSL连接端口465\n    \"\"\"\n    creds = load_credentials()\n    user = creds.get('MAIL_USER')\n    password = creds.get('MAIL_PASS')\n    if not user or not password:\n        raise ValueError(\"凭据文件中缺少MAIL_USER或MAIL_PASS\")\n\n    msg = build_message(user, to, subject, body, cc, bcc)\n\n    context = ssl.create_default_context()\n    with smtplib.SMTP_SSL('smtp.qq.com', 465, context=context) as server:\n        server.login(user, password)\n        server.send_message(msg)\n    print(f\"邮件已发送至 {to}\")\n```\n\n### 安全注意事项\n- 凭据文件必须设置权限为 `600`（仅所有者可读），防止其他用户读取敏感信息\n- `~/.openclaw/secrets/` 目录默认已经加入.gitignore，不会被提交到版本控制\n- 不要将授权码提交到代码仓库或分享给他人\n- 建议先用少量收件人进行测试\n### 参考文档\n详细的发送邮件参考请参见：`references/message-sending.md`\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn79hrrjng9fn12qahyeksj8mx83g8bf\",\n  \"slug\": \"qq-mail-read-send\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1777822619500\n}\n\nFile v1.0.1:references/message-sending.md\n\n# 发送邮件参考\n\n## 概述\n\n`qq_mail_sender` 模块提供了通过 QQ 邮箱 SMTP 服务发送邮件的功能。\n\n## 构建消息\n\n使用 `build_message` 函数可以创建一个带有适当编码的 `EmailMessage` 对象。\n\n```python\nmsg = build_message(\n    sender=\"your_email@qq.com\",\n    to=\"recipient@example.com\",\n    subject=\"测试主题\",\n    body=\"这是一封测试邮件\"\n)\n```\n\n## 发送邮件\n\n使用 `send_email` 函数通过 QQ SMTP 发送邮件。\n\n```python\nsend_email(\n    to=\"recipient@example.com\",\n    subject=\"测试主题\",\n    body=\"这是一封测试邮件\"\n)\n```\n\n## 示例\n\n### 简单文本邮件\n\n```python\nfrom qq_mail_sender import send_email\n\nsend_email(\n    to=\"friend@example.com\",\n    subject=\"你好\",\n    body=\"这是一封来自 QQ 邮箱的测试邮件。\"\n)\n```\n\n### 带抄送和密送\n\n```python\nsend_email(\n    to=\"primary@example.com\",\n    cc=\"secondary@example.com\",\n    bcc=\"hidden@example.com\",\n    subject=\"会议通知\",\n    body=\"请于明天上午 10 点参加会议。\"\n)\n```\n\n### 通过命令行发送\n\n```bash\npython qq_mail_sender.py friend@example.com \"测试主题\" \"这是一封测试邮件\"\n```\n\n## 错误处理\n\n如果凭据缺失或 SMTP 连接失败，将引发异常。建议在调用时使用 try-except 捕获异常。\n\n```python\ntry:\n    send_email(to, subject, body)\nexcept Exception as e:\n    print(f\"发送邮件失败: {e}\")\n```\n\nFile v1.0.1:skill-card.md\n\n## Description:\n\nReads and sends QQ Mail messages using IMAP for mailbox access and SMTP for outbound email, with guidance for authorization-code credentials and multi-encoding message parsing.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[openclawzhangchong](https://clawhub.ai/user/openclawzhangchong)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to have an agent inspect recent QQ Mail messages, search or filter mailbox content, and send simple text emails through QQ Mail after credentials are configured.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles QQ Mail credentials and mailbox access.\n\nMitigation: Use a dedicated QQ Mail authorization code, store it with owner-only permissions, and never commit or share the credential file.\n\nRisk: Outbound email sending can disclose information or send unintended messages.\n\nMitigation: Require explicit user confirmation before sending and verify recipients, subject, body, cc, and bcc before SMTP submission.\n\nRisk: The artifact shows inconsistent credential paths between the documentation and Python sender module.\n\nMitigation: Verify the active credential path before use and align the script configuration with the documented secrets file.\n\nRisk: Mailbox reads may expose private email content beyond the user's intended scope.\n\nMitigation: Confirm the requested mailbox scope and filters before reading, searching, summarizing, or displaying email content.\n\n## Reference(s):\n\n- [QQ Mail IMAP/SMTP Help](https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256)\n- [Message Sending Reference](references/message-sending.md)\n- [ClawHub Skill Page](https://clawhub.ai/openclawzhangchong/skills/qq-mail-read-send)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Code, Shell commands, Configuration, Text]\n\n**Output Format:** [Markdown with Python and bash examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires MAIL_USER and MAIL_PASS credentials and may perform mailbox reads or outbound email sends when the agent follows the skill.]\n\n## Skill Version(s):\n\n1.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.0: 4 files, 5351 bytes\n\nFiles: qq_mail_sender.py (1826b), references/message-sending.md (1403b), SKILL.md (7094b), _meta.json (136b)\n\nFile v1.0.0:SKILL.md\n\n---\r\nname: qq-mail-read-send\r\ndescription: 读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等�?homepage: https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256\r\nmetadata:\r\n  {\r\n    \"openclaw\": {\r\n      \"emoji\": \"📧\",\r\n      \"requires\": {\r\n        \"env\": [\"MAIL_USER\", \"MAIL_PASS\"],\r\n        \"config\": [\"~/.openclaw/secrets/mail_qq.env\"]\r\n      },\r\n      \"install\": []\r\n    }\r\n  }\r\n---\r\n\r\n# QQ邮箱读取和发�?\r\n通过 IMAP 协议读取 QQ 邮箱邮件�?\r\n## 触发条件\r\n\r\n用户提到以下场景时使用：\r\n- \"查看邮箱\"\r\n- \"读取邮件\"\r\n- \"查看最近邮�?\r\n- \"查看当天邮件\"\r\n- \"搜索邮件\"\r\n- \"有新的邮件吗\"\r\n\r\n## 配置\r\n\r\n需要提前配�?QQ 邮箱 IMAP�?1. �?QQ 邮箱设置中开�?IMAP 服务\r\n2. 创建授权码（不是登录密码�?3. 配置 secrets 文件：`~/.openclaw/secrets/mail_qq.env`\r\n   ```\r\n   MAIL_USER=your_email@qq.com\r\n   MAIL_PASS=your_auth_code\r\n   ```\r\n\r\n### 安全注意事项\r\n- 凭据文件必须设置权限�?`600`（仅所有者可读），防止其他用户读取敏感信�?- `~/.openclaw/secrets/` 目录默认已经�?gitignore，不会被提交到版本控�?- 不要将授权码提交到代码仓库或分享给他�?\r\n## 使用方法\r\n\r\n### 1. 连接邮箱\r\n\r\n```python\r\nimport imaplib\r\nimport email\r\nfrom email.header import decode_header\r\n\r\nIMAP_HOST = 'imap.qq.com'\r\nIMAP_PORT = 993\r\n\r\ndef connect_mail(user, password):\r\n    mail = imaplib.IMAP4_SSL(IMAP_HOST, IMAP_PORT)\r\n    mail.login(user, password)\r\n    mail.select('INBOX')\r\n    return mail\r\n```\r\n\r\n### 2. 搜索邮件\r\n\r\n```python\r\n# 搜索最�?天的邮件\r\nweek_ago = (datetime.now() - timedelta(days=7)).strftime('%d-%b-%Y')\r\ntyp, msg_ids = mail.search(None, f'SINCE {week_ago}')\r\n```\r\n\r\n### 3. 解析邮件\r\n\r\n```python\r\ndef decode_header_value(header_value):\r\n    \"\"\"兼容多种编码的解�?\"\"\r\n    if not header_value:\r\n        return \"\"\r\n    decoded_parts = []\r\n    for content, encoding in decode_header(header_value):\r\n        if isinstance(content, bytes):\r\n            try:\r\n                decoded = content.decode(encoding if encoding else 'utf-8')\r\n            except:\r\n                # 尝试其他常见编码\r\n                for enc in ['gbk', 'gb2312', 'utf-8', 'big5', 'latin1']:\r\n                    try:\r\n                        decoded = content.decode(enc)\r\n                        break\r\n                    except:\r\n                        decoded = content.decode('utf-8', errors='ignore')\r\n        else:\r\n            decoded = str(content)\r\n        decoded_parts.append(decoded)\r\n    return ''.join(decoded_parts)\r\n```\r\n\r\n### 4. 提取正文\r\n\r\n邮件正文可能包含 HTML，需要清理：\r\n\r\n```python\r\nimport re\r\n\r\ndef get_text_body(msg):\r\n    body = ''\r\n    if msg.is_multipart():\r\n        for part in msg.walk():\r\n            if part.get_content_type() == 'text/html':\r\n                payload = part.get_payload(decode=True)\r\n                encoding = part.get_content_charset() or 'utf-8'\r\n                body = payload.decode(encoding, errors='ignore')\r\n                break\r\n    else:\r\n        payload = msg.get_payload(decode=True)\r\n        encoding = msg.get_content_charset() or 'utf-8'\r\n        body = payload.decode(encoding, errors='ignore')\r\n    \r\n    # 清理HTML标签\r\n    text = re.sub(r'<[^>]+>', ' ', body)\r\n    text = text.replace('&nbsp;', ' ')\r\n    text = text.replace('&amp;', '&')\r\n    text = re.sub(r'\\s+', ' ', text)\r\n    return text\r\n```\r\n\r\n## 邮件过滤\r\n\r\n根据用户需求过滤邮件，常见关键词类型：\r\n- 通知类：通知、提醒、公�?- 业务类：订单、发货、支�?- 职位类：面试、邀请、邀约（仅当用户明确需要时�?\r\n## 注意事项\r\n\r\n1. QQ 邮箱必须使用授权码登录，非登录密�?2. 邮件编码可能�?GBK/GB2312/UTF-8 等，需要多种编码尝�?3. IMAP 搜索不支持中文，使用 SINCE 获取所有邮件后本地过滤\r\n\r\n## 发送邮�?\r\n通过 QQ 邮箱�?SMTP 服务发送邮件，使用相同的授权码进行认证�?\r\n### 配置\r\n发送邮件使用与读取邮件相同的凭据文�?`~/.openclaw/secrets/mail_qq.env`�?```\r\nMAIL_USER=your_email@qq.com\r\nMAIL_PASS=your_auth_code\r\n```\r\n\r\n### SMTP 设置\r\n- 主机�?`smtp.qq.com`\r\n- 端口�?465 (SSL) �?587 (STARTTLS)\r\n- 授权码： �?IMAP 相同的授权码（非登录密码�?\r\n### 使用方法\r\n\r\n#### 1. 使用 Python 模块发送邮�?\r\n新建�?`qq_mail_sender.py` 模块提供了发送邮件的功能�?\r\n```python\r\nfrom qq_mail_sender import send_email\r\n\r\nsend_email(\r\n    to=\"recipient@example.com\",\r\n    subject=\"测试邮件主题\",\r\n    body=\"这是一封测试邮件正�?\r\n)\r\n```\r\n\r\n#### 2. 命令行方�?\r\n```bash\r\npython qq_mail_sender.py recipient@example.com \"测试邮件主题\" \"这是一封测试邮件正�?\r\n```\r\n\r\n#### 3. 详细代码示例（在 qq_mail_sender.py 中）\r\n\r\n```python\r\nimport smtplib\r\nimport ssl\r\nfrom email.message import EmailMessage\r\nfrom email.header import Header\r\nimport os\r\n\r\ndef load_credentials(env_path=r\"C:\\Users\\Administrator\\.openclaw\\secrets\\mail_qq.env\"):\r\n    \"\"\"从env文件加载MAIL_USER和MAIL_PASS�?\"\"\r\n    creds = {}\r\n    if os.path.exists(env_path):\r\n        with open(env_path, 'r') as f:\r\n            for line in f:\r\n                line = line.strip()\r\n                if line and not line.startswith('#'):\r\n                    if '=' in line:\r\n                        k, v = line.split('=', 1)\r\n                        creds[k.strip()] = v.strip()\r\n    return creds\r\n\r\ndef build_message(sender, to, subject, body, cc=None, bcc=None):\r\n    \"\"\"构建带有适当编码的EmailMessage�?\"\"\r\n    msg = EmailMessage()\r\n    msg['From'] = sender\r\n    msg['To'] = to\r\n    if cc:\r\n        msg['Cc'] = cc\r\n    if bcc:\r\n        msg['Bcc'] = bcc\r\n    msg['Subject'] = Header(subject, 'utf-8')\r\n    msg.set_content(body, charset='utf-8')\r\n    return msg\r\n\r\ndef send_email(to, subject, body, cc=None, bcc=None):\r\n    \"\"\"\r\n    通过QQ SMTP发送邮件�?    使用SSL连接端口465�?    \"\"\"\r\n    creds = load_credentials()\r\n    user = creds.get('MAIL_USER')\r\n    password = creds.get('MAIL_PASS')\r\n    if not user or not password:\r\n        raise ValueError(\"凭据文件中缺少MAIL_USER或MAIL_PASS�?)\r\n\r\n    msg = build_message(user, to, subject, body, cc, bcc)\r\n\r\n    context = ssl.create_default_context()\r\n    with smtplib.SMTP_SSL('smtp.qq.com', 465, context=context) as server:\r\n        server.login(user, password)\r\n        server.send_message(msg)\r\n    print(f\"邮件已发送至 {to}\")\r\n```\r\n\r\n### 安全注意事项\r\n- 凭据文件必须设置权限�?`600`（仅所有者可读），防止其他用户读取敏感信�?- `~/.openclaw/secrets/` 目录默认已经�?gitignore，不会被提交到版本控�?- 不要将授权码提交到代码仓库或分享给他�?- 建议先用少量收件人进行测�?\r\n### 参考文�?详细的发送邮件参考请参见：`references/message-sending.md`\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn79hrrjng9fn12qahyeksj8mx83g8bf\",\n  \"slug\": \"qq-mail-read-send\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1777822260221\n}\n\nFile v1.0.0:references/message-sending.md\n\n# 发送邮件参考\n\n## 概述\n\n`qq_mail_sender` 模块提供了通过 QQ 邮箱 SMTP 服务发送邮件的功能。\n\n## 构建消息\n\n使用 `build_message` 函数可以创建一个带有适当编码的 `EmailMessage` 对象。\n\n```python\nmsg = build_message(\n    sender=\"your_email@qq.com\",\n    to=\"recipient@example.com\",\n    subject=\"测试主题\",\n    body=\"这是一封测试邮件\"\n)\n```\n\n## 发送邮件\n\n使用 `send_email` 函数通过 QQ SMTP 发送邮件。\n\n```python\nsend_email(\n    to=\"recipient@example.com\",\n    subject=\"测试主题\",\n    body=\"这是一封测试邮件\"\n)\n```\n\n## 示例\n\n### 简单文本邮件\n\n```python\nfrom qq_mail_sender import send_email\n\nsend_email(\n    to=\"friend@example.com\",\n    subject=\"你好\",\n    body=\"这是一封来自 QQ 邮箱的测试邮件。\"\n)\n```\n\n### 带抄送和密送\n\n```python\nsend_email(\n    to=\"primary@example.com\",\n    cc=\"secondary@example.com\",\n    bcc=\"hidden@example.com\",\n    subject=\"会议通知\",\n    body=\"请于明天上午 10 点参加会议。\"\n)\n```\n\n### 通过命令行发送\n\n```bash\npython qq_mail_sender.py friend@example.com \"测试主题\" \"这是一封测试邮件\"\n```\n\n## 错误处理\n\n如果凭据缺失或 SMTP 连接失败，将引发异常。建议在调用时使用 try-except 捕获异常。\n\n```python\ntry:\n    send_email(to, subject, body)\nexcept Exception as e:\n    print(f\"发送邮件失败: {e}\")\n```","readmeExcerpt":"Skill: qq-mail-read-send Owner: openclawzhangchong Summary: 读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等 Tags: latest:1.0.1 Version history: v1.0.1 | 2026-05-03T15:36:59.500Z | user - 修正了文档中的编码异常和乱码问题，统一描述与参数命名 - 明确了配置、权限设置和安全建议的表述 - 修复并补全部分邮件场景和过滤说明 - 对示例代码和命令行使用说明进行了规范化完善 - 移除乱码字符，提升文档可读性 v1.0.0 | 2026-05-03T15:31:00.221Z | user - Initial release of qq-mail-read-send skill. - Supp","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"MAIL_USER=your_email@qq.com\n   MAIL_PASS=your_auth_code"},{"language":"python","snippet":"import imaplib\nimport email\nfrom email.header import decode_header\n\nIMAP_HOST = 'imap.qq.com'\nIMAP_PORT = 993\n\ndef connect_mail(user, password):\n    mail = imaplib.IMAP4_SSL(IMAP_HOST, IMAP_PORT)\n    mail.login(user, password)\n    mail.select('INBOX')\n    return mail"},{"language":"python","snippet":"# 搜索最近7天的邮件\nweek_ago = (datetime.now() - timedelta(days=7)).strftime('%d-%b-%Y')\ntyp, msg_ids = mail.search(None, f'SINCE {week_ago}')"},{"language":"python","snippet":"def decode_header_value(header_value):\n    \"\"\"兼容多种编码的解码\"\"\"\n    if not header_value:\n        return \"\"\n    decoded_parts = []\n    for content, encoding in decode_header(header_value):\n        if isinstance(content, bytes):\n            try:\n                decoded = content.decode(encoding if encoding else 'utf-8')\n            except:\n                # 尝试其他常见编码\n                for enc in ['gbk', 'gb2312', 'utf-8', 'big5', 'latin1']:\n                    try:\n                        decoded = content.decode(enc)\n                        break\n                    except:\n                        decoded = content.decode('utf-8', errors='ignore')\n        else:\n            decoded = str(content)\n        decoded_parts.append(decoded)\n    return ''.join(decoded_parts)"},{"language":"python","snippet":"import re\n\ndef get_text_body(msg):\n    body = ''\n    if msg.is_multipart():\n        for part in msg.walk():\n            if part.get_content_type() == 'text/html':\n                payload = part.get_payload(decode=True)\n                encoding = part.get_content_charset() or 'utf-8'\n                body = payload.decode(encoding, errors='ignore')\n                break\n    else:\n        payload = msg.get_payload(decode=True)\n        encoding = msg.get_content_charset() or 'utf-8'\n        body = payload.decode(encoding, errors='ignore')\n    \n    # 清理HTML标签\n    text = re.sub(r'<[^>]+>', ' ', body)\n    text = text.replace('&nbsp;', ' ')\n    text = text.replace('&amp;', '&')\n    text = re.sub(r'\\s+', ' ', text)\n    return text"},{"language":"text","snippet":"MAIL_USER=your_email@qq.com\nMAIL_PASS=your_auth_code"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: qq-mail-read-send\ndescription: 读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等\nhomepage: https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256\nmetadata:\n  {\n    \"openclaw\": {\n      \"emoji\": \"📧\",\n      \"requires\": {\n        \"env\": [\"MAIL_USER\", \"MAIL_PASS\"],\n        \"config\": [\"~/.openclaw/secrets/mail_qq.env\"]\n      },\n      \"install\": []\n    }\n  }\n---\n\n# QQ邮箱读取和发送\n通过 IMAP 协议读取 QQ 邮箱邮件\n## 触发条件\n\n用户提到以下场景时使用：\n- \"查看邮箱\"\n- \"读取邮件\"\n- \"查看最近邮件\"\n- \"查看当天邮件\"\n- \"搜索邮件\"\n- \"有新的邮件吗\"\n\n## 配置\n\n需要提前配置QQ 邮箱 IMAP：\n1. 在 QQ 邮箱设置中开启 IMAP 服务\n2. 创建授权码（不是登录密码）\n3. 配置 secrets 文件：`~/.openclaw/secrets/mail_qq.env`\n   ```\n   MAIL_USER=your_email@qq.com\n   MAIL_PASS=your_auth_code\n   ```\n\n### 安全注意事项\n- 凭据文件必须设置权限为 `600`（仅所有者可读），防止其他用户读取敏感信息\n- `~/.openclaw/secrets/` 目录默认已经加入.gitignore，不会被提交到版本控制\n- 不要将授权码提交到代码仓库或分享给他人\n## 使用方法\n\n### 1. 连接邮箱\n\n```python\nimport imaplib\nimport email\nfrom email.header import decode_header\n\nIMAP_HOST = 'imap.qq.com'\nIMAP_PORT = 993\n\ndef connect_mail(user, password):\n    mail = imaplib.IMAP4_SSL(IMAP_HOST, IMAP_PORT)\n    mail.login(user, password)\n    mail.select('INBOX')\n    return mail\n```\n\n### 2. 搜索邮件\n\n```python\n# 搜索最近7天的邮件\nweek_ago = (datetime.now() - timedelta(days=7)).strftime('%d-%b-%Y')\ntyp, msg_ids = mail.search(None, f'SINCE {week_ago}')\n```\n\n### 3. 解析邮件\n\n```python\ndef decode_header_value(header_value):\n    \"\"\"兼容多种编码的解码\"\"\"\n    if not header_value:\n        return \"\"\n    decoded_parts = []\n    for content, encoding in decode_header(header_value):\n        if isinstance(content, bytes):\n            try:\n                decoded = content.decode(encoding if encoding else 'utf-8')\n            except:\n                # 尝试其他常见编码\n                for enc in ['gbk', 'gb2312', 'utf-8', 'big5', 'latin1']:\n                    try:\n                        decoded = content.decode(enc)\n                        break\n                    except:\n                        decoded = content.decode('utf-8', errors='ignore')\n        else:\n            decoded = str(content)\n        decoded_parts.append(decoded)\n    return ''.join(decoded_parts)\n```\n\n### 4. 提取正文\n\n邮件正文可能包含 HTML，需要清理：\n\n```python\nimport re\n\ndef get_text_body(msg):\n    body = ''\n    if msg.is_multipart():\n        for part in msg.walk():\n            if part.get_content_type() == 'text/html':\n                payload = part.get_payload(decode=True)\n                encoding = part.get_content_charset() or 'utf-8'\n                body = payload.decode(encoding, errors='ignore')\n                break\n    else:\n        payload = msg.get_payload(decode=True)\n        encoding = msg.get_content_charset() or 'utf-8'\n        body = payload.decode(encoding, errors='ignore')\n    \n    # 清理HTML标签\n    text = re.sub(r'<[^>]+>', ' ', body)\n    text = text.replace('&nbsp;', ' ')\n    text = text.replace('&amp;', '&')\n    text = re.sub(r'\\s+', ' ', text)\n    return text\n```\n\n## 邮件过滤\n\n根据用户需求过滤邮件，常见关键词类型：\n- 通知类：通知、提醒、公告\n- 业务类：订单、发货、支付\n- 职位类：面试、邀请、邀约（仅当用户明确需要时）\n## 注意事项\n\n1. QQ 邮箱必须"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn79hrrjng9fn12qahyeksj8mx83g8bf\",\n  \"slug\": \"qq-mail-read-send\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1777822619500\n}"},{"path":"references/message-sending.md","content":"# 发送邮件参考\n\n## 概述\n\n`qq_mail_sender` 模块提供了通过 QQ 邮箱 SMTP 服务发送邮件的功能。\n\n## 构建消息\n\n使用 `build_message` 函数可以创建一个带有适当编码的 `EmailMessage` 对象。\n\n```python\nmsg = build_message(\n    sender=\"your_email@qq.com\",\n    to=\"recipient@example.com\",\n    subject=\"测试主题\",\n    body=\"这是一封测试邮件\"\n)\n```\n\n## 发送邮件\n\n使用 `send_email` 函数通过 QQ SMTP 发送邮件。\n\n```python\nsend_email(\n    to=\"recipient@example.com\",\n    subject=\"测试主题\",\n    body=\"这是一封测试邮件\"\n)\n```\n\n## 示例\n\n### 简单文本邮件\n\n```python\nfrom qq_mail_sender import send_email\n\nsend_email(\n    to=\"friend@example.com\",\n    subject=\"你好\",\n    body=\"这是一封来自 QQ 邮箱的测试邮件。\"\n)\n```\n\n### 带抄送和密送\n\n```python\nsend_email(\n    to=\"primary@example.com\",\n    cc=\"secondary@example.com\",\n    bcc=\"hidden@example.com\",\n    subject=\"会议通知\",\n    body=\"请于明天上午 10 点参加会议。\"\n)\n```\n\n### 通过命令行发送\n\n```bash\npython qq_mail_sender.py friend@example.com \"测试主题\" \"这是一封测试邮件\"\n```\n\n## 错误处理\n\n如果凭据缺失或 SMTP 连接失败，将引发异常。建议在调用时使用 try-except 捕获异常。\n\n```python\ntry:\n    send_email(to, subject, body)\nexcept Exception as e:\n    print(f\"发送邮件失败: {e}\")\n```"},{"path":"skill-card.md","content":"## Description:\n\nReads and sends QQ Mail messages using IMAP for mailbox access and SMTP for outbound email, with guidance for authorization-code credentials and multi-encoding message parsing.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[openclawzhangchong](https://clawhub.ai/user/openclawzhangchong)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to have an agent inspect recent QQ Mail messages, search or filter mailbox content, and send simple text emails through QQ Mail after credentials are configured.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles QQ Mail credentials and mailbox access.\n\nMitigation: Use a dedicated QQ Mail authorization code, store it with owner-only permissions, and never commit or share the credential file.\n\nRisk: Outbound email sending can disclose information or send unintended messages.\n\nMitigation: Require explicit user confirmation before sending and verify recipients, subject, body, cc, and bcc before SMTP submission.\n\nRisk: The artifact shows inconsistent credential paths between the documentation and Python sender module.\n\nMitigation: Verify the active credential path before use and align the script configuration with the documented secrets file.\n\nRisk: Mailbox reads may expose private email content beyond the user's intended scope.\n\nMitigation: Confirm the requested mailbox scope and filters before reading, searching, summarizing, or displaying email content.\n\n## Reference(s):\n\n- [QQ Mail IMAP/SMTP Help](https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256)\n- [Message Sending Reference](references/message-sending.md)\n- [ClawHub Skill Page](https://clawhub.ai/openclawzhangchong/skills/qq-mail-read-send)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Code, Shell commands, Configuration, Text]\n\n**Output Format:** [Markdown with Python and bash examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires MAIL_USER and MAIL_PASS credentials and may perform mailbox reads or outbound email sends when the agent follows the skill.]\n\n## Skill Version(s):\n\n1.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等 Skill: qq-mail-read-send Owner: openclawzhangchong Summary: 读取和发送QQ邮箱邮件。使用IMAP协议读取，SMTP协议发送。支持多种编码解析。触发场景：用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件、发送邮件等 Tags: latest:1.0.1 Version history: v1.0.1 | 2026-05-03T15:36:59.500Z | user - 修正了文档中的编码异常和乱码问题，统一描述与参数命名 - 明确了配置、权限设置和安全建议的表述 - 修复并补全部分邮件场景和过滤说明 - 对示例代码和命令行使用说明进行了规范化完善 - 移除乱码字符，提升文档可读性 v1.0.0 | 2026-05-03T15:31:00.221Z | user - Initial release of qq-mail-read-send skill. - Supp","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":828,"uniquenessScore":55,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-12T01:18:09.237Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-12T01:18:09.237Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-12T05:21:07.760Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}