feishu-image by zrong/skills
npx skills add https://github.com/zrong/skills --skill feishu-image向飞书(Lark)会话发送图片。此技能既可在 OpenClaw 内部使用,也可作为独立的 CLI 工具使用。
在 OpenClaw 内部运行时,此技能会自动从 OpenClaw 的飞书配置中读取凭证。无需手动设置。
设置以下环境变量:
export FEISHU_APP_ID="cli_xxxxxxxxxxxxxxxx"
export FEISHU_APP_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
或在项目根目录创建 .env 文件:
FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
注意:如果在 OpenClaw 外部运行且未配置凭证,此技能将显示清晰的错误信息及设置说明。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
im:resourceim:message - 发送消息该技能将自动使用 OpenClaw 的飞书配置:
// 示例:用户要求“send me a screenshot”
// 该技能将自动:
// 1. 从 OpenClaw 配置中读取飞书凭证
// 2. 将截图上传到飞书
// 3. 发送给用户
向飞书用户发送图片:
node feishu-image.js --image /path/to/screenshot.png --to ou_xxxxxxxx
附带可选消息:
node feishu-image.js --image chart.png --to ou_xxxxxxxx --text "Q4 Sales Report"
发送到聊天群组:
node feishu-image.js --image announcement.png --to oc_xxxxxxxx --chat
const { FeishuImage } = require('./scripts/feishu-image.js');
const sender = new FeishuImage({
appId: 'cli_xxxxxxxxxxxxxxxx',
appSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
});
// 向用户发送图片
await sender.sendImage({
imagePath: '/path/to/screenshot.png',
receiveId: 'ou_xxxxxxxx',
receiveType: 'user'
});
// 发送带文本的图片
await sender.sendImage({
imagePath: '/path/to/chart.png',
receiveId: 'ou_xxxxxxxx',
receiveType: 'user',
text: 'Here is the sales report'
});
| 选项 | 简写 | 描述 | 必需 |
|---|---|---|---|
--image | -i | 图片文件路径 | 是 |
--to | -t | 接收者的飞书 open_id 或 chat_id | 是 |
--text | 可选的附带文本消息 | 否 | |
--chat | -c | 发送到聊天群组(默认:用户) | 否 |
--help | -h | 显示帮助信息 | 否 |
# 基本用法
node feishu-image.js -i screenshot.png -t ou_123456
# 附带消息
node feishu-image.js --image chart.png --to ou_123456 --text "Q4 Report"
# 发送到群聊
node feishu-image.js -i announcement.png -t oc_789012 --chat
new FeishuImage(config)创建一个新的飞书图片发送器实例。
参数:
config.appId (string): 飞书应用 IDconfig.appSecret (string): 飞书应用密钥config.baseUrl (string, optional): API 基础 URL,默认为 'https://open.feishu.cn/open-apis'示例:
const sender = new FeishuImage({
appId: process.env.FEISHU_APP_ID,
appSecret: process.env.FEISHU_APP_SECRET
});
async sendImage(options)上传图片并将其发送到飞书会话。
参数:
options.imagePath (string, required): 本地图片文件路径options.receiveId (string, required): 接收者的 open_id(用户)或 chat_id(群组)options.receiveType (string, optional): 'user' 或 'chat',默认为 'user'options.text (string, optional): 与图片一起发送的可选文本消息返回: Promise - 已发送消息的 ID
抛出:
FeishuImageError - 各种错误代码:MISSING_CREDENTIALS, AUTH_FAILED, FILE_NOT_FOUND, UPLOAD_FAILED, SEND_FAILED示例:
try {
const messageId = await sender.sendImage({
imagePath: '/path/to/screenshot.png',
receiveId: 'ou_xxxxxxxx',
receiveType: 'user',
text: 'Here is the screenshot you requested'
});
console.log('Image sent successfully, message ID:', messageId);
} catch (error) {
console.error('Failed to send image:', error.message);
}
所有错误都是 FeishuImageError 的实例,具有特定的错误代码:
| 错误代码 | 描述 | 解决方案 |
|---|---|---|
MISSING_CREDENTIALS | 未设置 FEISHU_APP_ID 或 FEISHU_APP_SECRET | 设置环境变量或传递给构造函数 |
AUTH_FAILED | 与飞书 API 认证失败 | 检查 app_id 和 app_secret 是否正确 |
FILE_NOT_FOUND | 图片文件不存在 | 检查图片路径是否正确 |
UPLOAD_FAILED | 图片上传到飞书失败 | 检查网络连接和文件大小限制 |
SEND_FAILED | 消息发送失败 | 检查接收者 ID 和权限 |
错误处理示例:
const { FeishuImage, FeishuImageError } = require('./scripts/feishu-image.js');
try {
await sender.sendImage({ ... });
} catch (error) {
if (error instanceof FeishuImageError) {
switch (error.code) {
case 'MISSING_CREDENTIALS':
console.error('Please set FEISHU_APP_ID and FEISHU_APP_SECRET');
break;
case 'AUTH_FAILED':
console.error('Invalid credentials. Check your app ID and secret.');
break;
case 'FILE_NOT_FOUND':
console.error(`Image file not found: ${error.details.path}`);
break;
default:
console.error(`Error: ${error.message}`);
}
} else {
console.error('Unexpected error:', error);
}
}
每周安装数
167
代码仓库
GitHub 星标数
2
首次出现
2026年3月7日
安全审计
安装于
kimi-cli166
gemini-cli166
amp166
cline166
github-copilot166
codex166
通过 LiteLLM 代理让 Claude Code 对接 GitHub Copilot 运行 | 高级变通方案指南
33,600 周安装