feishu-image について
feishu-imageは、Feishuの会話に画像を送るスキルです。OpenClaw、単独のCLI、Node.jsライブラリとして利用でき、個人やグループへの送信とテキストの添付に対応します。
主な機能
- 01Feishuユーザーへの画像送信
- 02グループチャットへの画像送信
- 03画像への任意テキスト添付
- 04OpenClaw、CLI、Node.jsでの利用
活用シーン
- 01スクリーンショットや写真の送信
- 02チャートや図の共有
- 03グループチャットでの画像告知
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ zrong/ skills --skill feishu-imageインストール後、Claude Code で/feishu-imageを入力して読み込まれたか確認します。
同梱ファイルscripts/feishu-image.js
詳細
Feishu 画像送信
画像を Feishu(Lark)の会話に送信します。このスキルは OpenClaw 内でも、スタンドアロンの CLI ツールとしても動作します。
このスキルを使用する場面
- ユーザーが「スクリーンショットを送って」と依頼した場合
- Feishu 経由で画像ファイルを共有したい場合
- Feishu 経由で視覚コンテンツ(グラフ、図、写真)を送信する必要がある場合
- OpenClaw の組み込みメッセージツールで画像を送信できない場合
設定
OpenClaw ユーザーの場合
OpenClaw 内で実行すると、このスキルは OpenClaw の Feishu 設定から認証情報を自動的に読み込みます。手動での設定は不要です。
スタンドアロンで使用する場合
次の環境変数を設定します。
export FEISHU_APP_ID="cli_xxxxxxxxxxxxxxxx"
export FEISHU_APP_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
または、プロジェクトのルートに .env ファイルを作成します。
FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
注:認証情報を設定せずに OpenClaw の外部で実行した場合、このスキルは設定手順を含む明確なエラーメッセージを表示します。
Feishu アプリの設定
- Feishu 開発者コンソールにアクセスします
- 新しいアプリを作成します(エンタープライズ向けセルフビルドアプリ)
- 次の権限を有効にします:
im:resource- 画像のアップロードim:message- メッセージの送信
- アプリの認証情報ページから App ID と App Secret を取得します
- アプリを公開し、組織で利用できるようにします
使用方法
OpenClaw のスキルとして使用する場合
このスキルは OpenClaw の Feishu 設定を自動的に使用します。
// Example: User asks to "send me a screenshot"
// The skill will automatically:
// 1. Read OpenClaw config for Feishu credentials
// 2. Upload the screenshot to Feishu
// 3. Send it to the user
CLI ツールとして使用する場合
Feishu ユーザーに画像を送信します。
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
Node.js ライブラリとして使用する場合
const { FeishuImage } = require('./scripts/feishu-image.js');
const sender = new FeishuImage({
appId: 'cli_xxxxxxxxxxxxxxxx',
appSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
});
// Send image to a user
await sender.sendImage({
imagePath: '/path/to/screenshot.png',
receiveId: 'ou_xxxxxxxx',
receiveType: 'user'
});
// Send image with text
await sender.sendImage({
imagePath: '/path/to/chart.png',
receiveId: 'ou_xxxxxxxx',
receiveType: 'user',
text: 'Here is the sales report'
});
CLI リファレンス
オプション
| オプション | 短縮形 | 説明 | 必須 |
|---|---|---|---|
--image | -i | 画像ファイルのパス | はい |
--to | -t | 受信者の Feishu open_id または chat_id | はい |
--text | 追加する任意のテキストメッセージ | いいえ | |
--chat | -c | チャットグループに送信します(デフォルト:ユーザー) | いいえ |
--help | -h | ヘルプメッセージを表示します | いいえ |
例
# Basic usage
node feishu-image.js -i screenshot.png -t ou_123456
# With message
node feishu-image.js --image chart.png --to ou_123456 --text "Q4 Report"
# To group chat
node feishu-image.js -i announcement.png -t oc_789012 --chat
ライブラリ API リファレンス
new FeishuImage(config)
新しい Feishu 画像送信インスタンスを作成します。
パラメーター:
config.appId(string):Feishu アプリ IDconfig.appSecret(string):Feishu アプリシークレット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)
画像をアップロードし、Feishu の会話に送信します。
パラメーター:
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 | Feishu API での認証に失敗しました | app_id と app_secret が正しいことを確認してください |
FILE_NOT_FOUND | 画像ファイルが存在しません | 画像のパスが正しいことを確認してください |
UPLOAD_FAILED | Feishu への画像のアップロードに失敗しました | ネットワーク接続とファイルサイズの上限を確認してください |
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);
}
}
制限事項
- 画像サイズ:Feishu API の制限に準じます(現在の制限については Feishu のドキュメントを確認してください)
- 対応形式:PNG、JPG、GIF(Feishu がサポートする形式)
- レート制限:Feishu API のレート制限に準じます
関連情報
コメント
Markdown 対応