{
  "schemaVersion": "1.0",
  "item": {
    "slug": "feishu-proactive-messenger",
    "name": "Feishu Proactive Messenger",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ziwenwang28/feishu-proactive-messenger",
    "canonicalUrl": "https://clawhub.ai/ziwenwang28/feishu-proactive-messenger",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/feishu-proactive-messenger",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=feishu-proactive-messenger",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "clawdis.yaml",
      "scripts/feishu_proactive_messenger.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/feishu-proactive-messenger"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/feishu-proactive-messenger",
    "agentPageUrl": "https://openagent3.xyz/skills/feishu-proactive-messenger/agent",
    "manifestUrl": "https://openagent3.xyz/skills/feishu-proactive-messenger/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/feishu-proactive-messenger/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Feishu Proactive Messenger | 飞书主动消息发送器",
        "body": "飞书渠道只支持被动回复——用户先发消息，agent 才能回复。当 agent 需要主动发起对话（如 Agent A 派任务给 Agent B，Agent B 需要在自己的飞书窗口回复用户），飞书渠道没有这个能力。本 skill 通过直接调用飞书 OpenAPI 发送文本消息，补齐主动投递能力。\n\nThe Feishu channel only supports passive replies — the user must send a message first before the agent can respond. When an agent needs to proactively initiate a conversation (e.g. Agent A dispatches a task to Agent B, and Agent B needs to reply in its own Feishu chat window), the channel lacks this capability. This skill fills that gap by calling Feishu OpenAPI to send text messages directly."
      },
      {
        "title": "快速开始 | Quick Start",
        "body": "python3 scripts/feishu_proactive_messenger.py --agent <agent_id> --text \"Mission accomplished\"\n\n--agent 指定当前 agent 的 id（如 coder、data、life），脚本会自动读取对应的飞书凭证和 defaultTo 目标用户。若省略 --agent，则通过 cwd 自动匹配。\n\n--agent specifies the current agent's id (e.g. coder, data, life). The script reads the corresponding Feishu credentials and defaultTo target automatically. If --agent is omitted, the script resolves the agent by matching cwd."
      },
      {
        "title": "使用方法 | Usage",
        "body": "python3 scripts/feishu_proactive_messenger.py \\\n  --agent <agent_id> \\\n  --text \"要发送的消息内容\" \\\n  --receive-id <chat_id|open_id> \\\n  --receive-id-type <chat_id|open_id|user_id>"
      },
      {
        "title": "参数说明 | Arguments",
        "body": "--agent（推荐）：agent id（如 coder、data、main）。用于确定使用哪个飞书应用的凭证。若省略，通过 cwd 自动匹配（在被派发任务场景下可能不准确，建议显式指定）。\n\n\n--text（必填）：要发送的消息文本。\n\n\n--receive-id（可选）：目标 chat_id 或 open_id。若省略，依次从环境变量\nOPENCLAW_CHAT_ID / OPENCLAW_RECEIVE_ID / FEISHU_CHAT_ID 或 account 的\ndefaultTo 配置中读取。\n\n\n--receive-id-type（可选）：若省略，根据前缀自动识别：\n\noc_ → chat_id\nou_ → open_id\non_ → user_id\n\n\n\n--agent (recommended): Agent id (e.g. coder, data, main). Determines which Feishu app credentials to use. If omitted, resolves by matching cwd (may be inaccurate in dispatched-task scenarios; explicit is recommended).\n\n\n--text (required): The message text to send.\n\n\n--receive-id (optional): Target chat_id or open_id. If omitted, reads from\nenv OPENCLAW_CHAT_ID / OPENCLAW_RECEIVE_ID / FEISHU_CHAT_ID, or from\nthe account's defaultTo config.\n\n\n--receive-id-type (optional): If omitted, auto-detect by prefix:\n\noc_ → chat_id\nou_ → open_id\non_ → user_id"
      },
      {
        "title": "工作原理 | How It Works",
        "body": "通过 --agent 参数或 cwd 匹配确定当前 agent id。\n\n\n根据 agent id 从 ~/.openclaw/openclaw.json 读取对应 account 的 appId/appSecret。\n\n\n从同一 account 的 defaultTo 读取默认目标用户（如未通过参数指定）。\n\n\n获取 tenant access token。\n\n\n通过飞书 bot/v3/info API 获取 bot 显示名称。\n\n\n调用飞书 发送消息 API（im/v1/messages）发送文本消息。\n\n\n输出简洁结果：✅ [Bot名称] 消息已发送。\n\n\nDetermine agent id via --agent parameter or by matching cwd.\n\n\nRead appId/appSecret from ~/.openclaw/openclaw.json based on the agent id.\n\n\nRead the default target user from the same account's defaultTo (if not specified via args).\n\n\nObtain a tenant access token.\n\n\nRetrieve the bot's display name via Feishu bot/v3/info API.\n\n\nCall Feishu Send Message API (im/v1/messages) to deliver the text message.\n\n\nOutput clean result: ✅ [BotName] 消息已发送."
      },
      {
        "title": "前置配置 | Prerequisites",
        "body": "每个飞书 account 需要配置 defaultTo，指向目标用户的 open_id：\n\nEach Feishu account needs a defaultTo pointing to the target user's open_id:\n\nopenclaw config set channels.feishu.accounts.<account>.defaultTo \"user:ou_xxx\"\n\n注意：飞书的 open_id 是按应用隔离的，同一个用户在不同 bot 下有不同的 open_id。\n\nNote: Feishu open_id is app-scoped — the same user has different open_ids under different bots."
      },
      {
        "title": "错误处理 | Error Handling",
        "body": "缺少凭证 → 确保 channels.feishu.accounts 存在于\n~/.openclaw/openclaw.json，且 bindings 映射 agentId → accountId。\n\n\n机器人不在聊天中（230002） → 用户需要先跟该 bot 发起过对话。\n\n\n缺少 receive_id → 传入 --receive-id，设置 OPENCLAW_CHAT_ID，\n或配置 defaultTo。\n\n\nHTTP 错误 → 查看飞书错误返回中的 log_id 进行排查。\n\n\nMissing credentials → Ensure channels.feishu.accounts exists in\n~/.openclaw/openclaw.json and bindings map agentId → accountId.\n\n\nBot not in chat (code 230002) → The user must have initiated a chat with\nthe bot at least once.\n\n\nMissing receive_id → Pass --receive-id, set OPENCLAW_CHAT_ID,\nor configure defaultTo.\n\n\nHTTP errors → Check the returned log_id in Feishu error payload."
      },
      {
        "title": "安全说明 | Security",
        "body": "本技能从 ~/.openclaw/openclaw.json 读取飞书凭证：\n\nchannels.feishu.accounts.*.appId\nchannels.feishu.accounts.*.appSecret\n\n凭证仅用于获取 tenant access token 并发送消息。技能不会存储或向其他地方传输凭证。\n\nThis skill reads Feishu credentials from ~/.openclaw/openclaw.json:\n\nchannels.feishu.accounts.*.appId\nchannels.feishu.accounts.*.appSecret\n\nThese values are used only to obtain a tenant access token and send the message.\nThe skill does not store or transmit credentials anywhere else."
      },
      {
        "title": "备注 | Notes",
        "body": "本技能面向 所有 agent 设计，通过 --agent 参数或工作区匹配选择正确的飞书应用凭证。\n\n\n配合 defaultTo 使用时，agent 无需知道任何 ID 即可主动发消息。\n\n\n与 feishu-file-sender 互补：一个发文件，一个发文本。\n\n\nDesigned for all agents; uses --agent parameter or workspace matching to choose credentials.\n\n\nWhen used with defaultTo, agents can send messages without knowing any IDs.\n\n\nComplements feishu-file-sender: one sends files, the other sends text."
      },
      {
        "title": "随附脚本 | Bundled Script",
        "body": "scripts/feishu_proactive_messenger.py"
      },
      {
        "title": "1.0.1",
        "body": "新增 --agent 参数，显式指定 agent 身份（解决被派发任务时 cwd 匹配不准确的问题）\n新增通过飞书 bot/v3/info API 获取 bot 显示名称\n输出简化为 ✅ [Bot名称] 消息已发送，不再暴露 open_id 等敏感信息\nresolve_agent_id 支持 agents.defaults.workspace 作为 fallback"
      },
      {
        "title": "1.0.0",
        "body": "初始版本"
      }
    ],
    "body": "Feishu Proactive Messenger | 飞书主动消息发送器\n\n飞书渠道只支持被动回复——用户先发消息，agent 才能回复。当 agent 需要主动发起对话（如 Agent A 派任务给 Agent B，Agent B 需要在自己的飞书窗口回复用户），飞书渠道没有这个能力。本 skill 通过直接调用飞书 OpenAPI 发送文本消息，补齐主动投递能力。\n\nThe Feishu channel only supports passive replies — the user must send a message first before the agent can respond. When an agent needs to proactively initiate a conversation (e.g. Agent A dispatches a task to Agent B, and Agent B needs to reply in its own Feishu chat window), the channel lacks this capability. This skill fills that gap by calling Feishu OpenAPI to send text messages directly.\n\n快速开始 | Quick Start\npython3 scripts/feishu_proactive_messenger.py --agent <agent_id> --text \"Mission accomplished\"\n\n\n--agent 指定当前 agent 的 id（如 coder、data、life），脚本会自动读取对应的飞书凭证和 defaultTo 目标用户。若省略 --agent，则通过 cwd 自动匹配。\n\n--agent specifies the current agent's id (e.g. coder, data, life). The script reads the corresponding Feishu credentials and defaultTo target automatically. If --agent is omitted, the script resolves the agent by matching cwd.\n\n使用方法 | Usage\npython3 scripts/feishu_proactive_messenger.py \\\n  --agent <agent_id> \\\n  --text \"要发送的消息内容\" \\\n  --receive-id <chat_id|open_id> \\\n  --receive-id-type <chat_id|open_id|user_id>\n\n参数说明 | Arguments\n\n--agent（推荐）：agent id（如 coder、data、main）。用于确定使用哪个飞书应用的凭证。若省略，通过 cwd 自动匹配（在被派发任务场景下可能不准确，建议显式指定）。\n\n--text（必填）：要发送的消息文本。\n\n--receive-id（可选）：目标 chat_id 或 open_id。若省略，依次从环境变量 OPENCLAW_CHAT_ID / OPENCLAW_RECEIVE_ID / FEISHU_CHAT_ID 或 account 的 defaultTo 配置中读取。\n\n--receive-id-type（可选）：若省略，根据前缀自动识别：\n\noc_ → chat_id\nou_ → open_id\non_ → user_id\n\n--agent (recommended): Agent id (e.g. coder, data, main). Determines which Feishu app credentials to use. If omitted, resolves by matching cwd (may be inaccurate in dispatched-task scenarios; explicit is recommended).\n\n--text (required): The message text to send.\n\n--receive-id (optional): Target chat_id or open_id. If omitted, reads from env OPENCLAW_CHAT_ID / OPENCLAW_RECEIVE_ID / FEISHU_CHAT_ID, or from the account's defaultTo config.\n\n--receive-id-type (optional): If omitted, auto-detect by prefix:\n\noc_ → chat_id\nou_ → open_id\non_ → user_id\n工作原理 | How It Works\n\n通过 --agent 参数或 cwd 匹配确定当前 agent id。\n\n根据 agent id 从 ~/.openclaw/openclaw.json 读取对应 account 的 appId/appSecret。\n\n从同一 account 的 defaultTo 读取默认目标用户（如未通过参数指定）。\n\n获取 tenant access token。\n\n通过飞书 bot/v3/info API 获取 bot 显示名称。\n\n调用飞书 发送消息 API（im/v1/messages）发送文本消息。\n\n输出简洁结果：✅ [Bot名称] 消息已发送。\n\nDetermine agent id via --agent parameter or by matching cwd.\n\nRead appId/appSecret from ~/.openclaw/openclaw.json based on the agent id.\n\nRead the default target user from the same account's defaultTo (if not specified via args).\n\nObtain a tenant access token.\n\nRetrieve the bot's display name via Feishu bot/v3/info API.\n\nCall Feishu Send Message API (im/v1/messages) to deliver the text message.\n\nOutput clean result: ✅ [BotName] 消息已发送.\n\n前置配置 | Prerequisites\n\n每个飞书 account 需要配置 defaultTo，指向目标用户的 open_id：\n\nEach Feishu account needs a defaultTo pointing to the target user's open_id:\n\nopenclaw config set channels.feishu.accounts.<account>.defaultTo \"user:ou_xxx\"\n\n\n注意：飞书的 open_id 是按应用隔离的，同一个用户在不同 bot 下有不同的 open_id。\n\nNote: Feishu open_id is app-scoped — the same user has different open_ids under different bots.\n\n错误处理 | Error Handling\n\n缺少凭证 → 确保 channels.feishu.accounts 存在于 ~/.openclaw/openclaw.json，且 bindings 映射 agentId → accountId。\n\n机器人不在聊天中（230002） → 用户需要先跟该 bot 发起过对话。\n\n缺少 receive_id → 传入 --receive-id，设置 OPENCLAW_CHAT_ID， 或配置 defaultTo。\n\nHTTP 错误 → 查看飞书错误返回中的 log_id 进行排查。\n\nMissing credentials → Ensure channels.feishu.accounts exists in ~/.openclaw/openclaw.json and bindings map agentId → accountId.\n\nBot not in chat (code 230002) → The user must have initiated a chat with the bot at least once.\n\nMissing receive_id → Pass --receive-id, set OPENCLAW_CHAT_ID, or configure defaultTo.\n\nHTTP errors → Check the returned log_id in Feishu error payload.\n\n安全说明 | Security\n\n本技能从 ~/.openclaw/openclaw.json 读取飞书凭证：\n\nchannels.feishu.accounts.*.appId\nchannels.feishu.accounts.*.appSecret\n\n凭证仅用于获取 tenant access token 并发送消息。技能不会存储或向其他地方传输凭证。\n\nThis skill reads Feishu credentials from ~/.openclaw/openclaw.json:\n\nchannels.feishu.accounts.*.appId\nchannels.feishu.accounts.*.appSecret\n\nThese values are used only to obtain a tenant access token and send the message. The skill does not store or transmit credentials anywhere else.\n\n备注 | Notes\n\n本技能面向 所有 agent 设计，通过 --agent 参数或工作区匹配选择正确的飞书应用凭证。\n\n配合 defaultTo 使用时，agent 无需知道任何 ID 即可主动发消息。\n\n与 feishu-file-sender 互补：一个发文件，一个发文本。\n\nDesigned for all agents; uses --agent parameter or workspace matching to choose credentials.\n\nWhen used with defaultTo, agents can send messages without knowing any IDs.\n\nComplements feishu-file-sender: one sends files, the other sends text.\n\n随附脚本 | Bundled Script\nscripts/feishu_proactive_messenger.py\n更新日志 | Changelog\n1.0.1\n新增 --agent 参数，显式指定 agent 身份（解决被派发任务时 cwd 匹配不准确的问题）\n新增通过飞书 bot/v3/info API 获取 bot 显示名称\n输出简化为 ✅ [Bot名称] 消息已发送，不再暴露 open_id 等敏感信息\nresolve_agent_id 支持 agents.defaults.workspace 作为 fallback\n1.0.0\n初始版本"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ziwenwang28/feishu-proactive-messenger",
    "publisherUrl": "https://clawhub.ai/ziwenwang28/feishu-proactive-messenger",
    "owner": "ziwenwang28",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/feishu-proactive-messenger",
    "downloadUrl": "https://openagent3.xyz/downloads/feishu-proactive-messenger",
    "agentUrl": "https://openagent3.xyz/skills/feishu-proactive-messenger/agent",
    "manifestUrl": "https://openagent3.xyz/skills/feishu-proactive-messenger/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/feishu-proactive-messenger/agent.md"
  }
}