mcpField
F
feishu-image

feishu-image

github.com/zrong生産性13277 回インストール2 週間前に更新
リポジトリ

feishu-image について

feishu-imageは、Feishuの会話に画像を送るスキルです。OpenClaw、単独のCLI、Node.jsライブラリとして利用でき、個人やグループへの送信とテキストの添付に対応します。

主な機能

  1. 01Feishuユーザーへの画像送信
  2. 02グループチャットへの画像送信
  3. 03画像への任意テキスト添付
  4. 04OpenClaw、CLI、Node.jsでの利用

活用シーン

  1. 01スクリーンショットや写真の送信
  2. 02チャートや図の共有
  3. 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 アプリの設定
  1. Feishu 開発者コンソールにアクセスします
  2. 新しいアプリを作成します(エンタープライズ向けセルフビルドアプリ)
  3. 次の権限を有効にします:
    • im:resource - 画像のアップロード
    • im:message - メッセージの送信
  4. アプリの認証情報ページから App ID と App Secret を取得します
  5. アプリを公開し、組織で利用できるようにします

使用方法

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 アプリ ID
  • config.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_CREDENTIALSFEISHU_APP_ID または FEISHU_APP_SECRET が設定されていません環境変数を設定するか、コンストラクターに渡してください
AUTH_FAILEDFeishu API での認証に失敗しましたapp_id と app_secret が正しいことを確認してください
FILE_NOT_FOUND画像ファイルが存在しません画像のパスが正しいことを確認してください
UPLOAD_FAILEDFeishu への画像のアップロードに失敗しましたネットワーク接続とファイルサイズの上限を確認してください
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 のレート制限に準じます

関連情報

コメント