mcpField
A
add-feishu

add-feishu

github.com/sugarforever生産性139455 回インストール1 週間前に更新
リポジトリ

add-feishu について

NanoClawにFeishuのメッセージングチャネルを追加するスキルです。コード変更を適用し、アプリ設定、チャット登録、接続確認、トラブルシューティング、削除を案内します。

主な機能

  1. 01Feishuチャネルのコード変更を適用
  2. 02Feishu Node.js SDKのインストール
  3. 03アプリ認証情報とイベント購読の設定
  4. 04チャット登録とメッセージ送受信の確認
  5. 05トラブルシューティングと削除手順の提示

活用シーン

  1. 01NanoClawにFeishuボットを追加
  2. 02Feishuアプリを設定してチャットに接続
  3. 03メッセージを送受信できないボットの調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sugarforever/01coder-agent-skills --skill add-feishu

インストール後、Claude Code で/add-feishuを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

manifest.yaml
add/src/channels/
feishu.ts
modify/src/
index.ts
index.ts.intent.md

詳細

Feishu チャネルの追加

このスキルは、スキルエンジンを使って確定的なコード変更を適用し、その後、対話形式でセットアップを進めることで、NanoClaw に Feishu(飞书)のサポートを追加します。

フェーズ 1:事前確認

すでに適用済みか確認する

.nanoclaw/state.yaml を読み取ります。applied_skills に feishu が含まれている場合は、フェーズ 3(セットアップ)に進みます。コード変更はすでに適用されています。

ユーザーに確認する

AskUserQuestion を使って、設定情報を収集します。

AskUserQuestion: Feishu アプリをすでにお持ちですか。それとも新しく作成する必要がありますか?

アプリをお持ちの場合は、ここで FEISHU_APP_ID と FEISHU_APP_SECRET を収集します。お持ちでない場合は、フェーズ 3 で作成します。

フェーズ 2:コード変更の適用

スキルエンジンを実行して、このスキルのコードパッケージを適用します。パッケージのファイルは、このディレクトリ内の SKILL.md と同じ場所にあります。

スキルシステムを初期化する(必要な場合)

.nanoclaw/ ディレクトリがまだ存在しない場合:

npx tsx scripts/apply-skill.ts --init
スキルを適用する
npx tsx scripts/apply-skill.ts .claude/skills/add-feishu

これにより、次の変更が確定的に適用されます。

  • src/channels/feishu.ts を追加します(Channel インターフェースを実装する FeishuChannel クラス)
  • src/index.ts に Feishu のサポートを三者マージします(readEnvFile で認証情報を読み取り、設定されていれば FeishuChannel を作成します)
  • @larksuiteoapi/node-sdk npm 依存関係をインストールします
  • .env を FEISHU_APP_ID と FEISHU_APP_SECRET で更新します
  • 適用内容を .nanoclaw/state.yaml に記録します

適用時にマージの競合が報告された場合は、意図ファイルを読み取ります。

  • modify/src/index.ts.intent.md — index.ts の変更内容と不変条件
コード変更を検証する
npm run build

先に進む前に、ビルドがエラーなく完了する必要があります。

フェーズ 3:セットアップ

Feishu アプリを作成する(必要な場合)

ユーザーが Feishu アプリを持っていない場合は、次のように伝えます。

Feishu ボットを作成してください。

  1. Feishu Open Platform にアクセスし、新しいアプリを作成します
  2. Credentials で App ID と App Secret をコピーします
  3. Event Subscriptions で Long Connection (WebSocket) モードを有効にします
  4. イベント im.message.receive_v1(メッセージを受信)を追加します
  5. Permissions で次の権限を追加します。
    • im:message:send_as_bot(ボットとしてメッセージを送信)
    • im:message(メッセージを読み取り)
  6. アプリを公開します(またはバージョンを作成して承認します)

ユーザーから App ID と App Secret が提供されるまで待ちます。

環境を設定する

.env に追加します。

FEISHU_APP_ID=<their-app-id>
FEISHU_APP_SECRET=<their-app-secret>
ビルドして再起動する
npm run build
launchctl kickstart -k gui/$(id -u)/com.nanoclaw  # macOS
# Linux: systemctl --user restart nanoclaw

フェーズ 4:登録

Chat ID を取得する

ユーザーに次のように伝えます。

  1. ボットを起動します:npm run dev
  2. Feishu でボットに任意のメッセージを送信します(DM またはグループ)
  3. ログを確認します。メタデータに chat_id が表示されます
  4. JID の形式は {chat_id}@feishu です

または、データベースを直接確認します。

sqlite3 store/messages.db "SELECT jid FROM chats WHERE jid LIKE '%@feishu'"
チャットを登録する

SQLite に直接登録します。

INSERT INTO registered_groups (jid, name, folder, trigger_pattern, added_at, requires_trigger)
VALUES ('{chat_id}@feishu', 'feishu', 'feishu', '@{ASSISTANT_NAME}', datetime('now'), 0);

注:requires_trigger は 0(false)に設定されているため、@メンションなしでボットがすべてのメッセージに応答します。

新しい登録を反映するため、サービスを再起動します。

フェーズ 5:確認

接続をテストする

ユーザーに次のように伝えます。

Feishu でボットにメッセージを送信します。数秒以内に応答するはずです。

必要に応じてログを確認する
tail -f logs/nanoclaw.log
# Or run interactively:
npm run dev

次のログを確認します。

  • Feishu bot info fetched — ボットが接続し、自身を識別しました
  • Connected to Feishu via WebSocket — WebSocket 接続が確立されました
  • Feishu message sent — 送信メッセージが配信されました

トラブルシューティング

ボットが応答しない

次の項目を確認します。

  1. .env に FEISHU_APP_ID と FEISHU_APP_SECRET が設定されている
  2. チャットが登録されている:sqlite3 store/messages.db "SELECT * FROM registered_groups WHERE jid LIKE '%@feishu'"
  3. アプリが Feishu Open Platform で公開されている(下書きアプリはイベントを受信しません)
  4. イベントサブスクリプション im.message.receive_v1 が有効になっている
  5. Long Connection (WebSocket) モードが有効になっている(webhook ではありません)
  6. サービスが稼働している:launchctl list | grep nanoclaw(macOS)または systemctl --user status nanoclaw(Linux)
ボットは接続するがメッセージを受信しない
  • アプリに im:message 権限があることを確認します
  • イベント im.message.receive_v1 がサブスクライブされていることを確認します
  • アプリのバージョンが公開され、承認されていることを確認します
Bot は受信できるが送信できない
  • アプリに im:message:send_as_bot 権限があることを確認してください
  • グループチャットの場合:まず Bot をグループに追加する必要があります
「Failed to fetch Feishu bot info」

重大ではない警告です。Bot メッセージの検出(自身のメッセージのフィルタリング)は機能しませんが、メッセージの送受信は引き続き機能します。通常、Bot API エンドポイントにアクセスできないことを意味します。ネットワーク接続を確認してください。

削除

Feishu 連携を削除するには:

  1. src/channels/feishu.ts を削除します
  2. src/index.ts から FeishuChannel のインポートと生成ブロックを削除します
  3. 他のチャンネルで使用していない場合は、readEnvFile のインポートを削除します
  4. .env から FEISHU_APP_ID と FEISHU_APP_SECRET を削除します
  5. Feishu の登録を削除します:sqlite3 store/messages.db "DELETE FROM registered_groups WHERE jid LIKE '%@feishu'"
  6. アンインストールします:npm uninstall @larksuiteoapi/node-sdk
  7. 再ビルドします:npm run build && launchctl kickstart -k gui/$(id -u)/com.nanoclaw(macOS)または npm run build && systemctl --user restart nanoclaw(Linux)

コメント