add-feishu について
NanoClawにFeishuのメッセージングチャネルを追加するスキルです。コード変更を適用し、アプリ設定、チャット登録、接続確認、トラブルシューティング、削除を案内します。
主な機能
- 01Feishuチャネルのコード変更を適用
- 02Feishu Node.js SDKのインストール
- 03アプリ認証情報とイベント購読の設定
- 04チャット登録とメッセージ送受信の確認
- 05トラブルシューティングと削除手順の提示
活用シーン
- 01NanoClawにFeishuボットを追加
- 02Feishuアプリを設定してチャットに接続
- 03メッセージを送受信できないボットの調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sugarforever/ 01coder-agent-skills --skill add-feishuインストール後、Claude Code で/add-feishuを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
manifest.yamladd/src/channels/feishu.tsmodify/src/index.tsindex.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-sdknpm 依存関係をインストールします.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 ボットを作成してください。
- Feishu Open Platform にアクセスし、新しいアプリを作成します
- Credentials で App ID と App Secret をコピーします
- Event Subscriptions で Long Connection (WebSocket) モードを有効にします
- イベント
im.message.receive_v1(メッセージを受信)を追加します- Permissions で次の権限を追加します。
im:message:send_as_bot(ボットとしてメッセージを送信)im:message(メッセージを読み取り)- アプリを公開します(またはバージョンを作成して承認します)
ユーザーから 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 を取得する
ユーザーに次のように伝えます。
- ボットを起動します:
npm run dev- Feishu でボットに任意のメッセージを送信します(DM またはグループ)
- ログを確認します。メタデータに chat_id が表示されます
- 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— 送信メッセージが配信されました
トラブルシューティング
ボットが応答しない
次の項目を確認します。
.envにFEISHU_APP_IDとFEISHU_APP_SECRETが設定されている- チャットが登録されている:
sqlite3 store/messages.db "SELECT * FROM registered_groups WHERE jid LIKE '%@feishu'" - アプリが Feishu Open Platform で公開されている(下書きアプリはイベントを受信しません)
- イベントサブスクリプション
im.message.receive_v1が有効になっている - Long Connection (WebSocket) モードが有効になっている(webhook ではありません)
- サービスが稼働している:
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 連携を削除するには:
src/channels/feishu.tsを削除しますsrc/index.tsからFeishuChannelのインポートと生成ブロックを削除します- 他のチャンネルで使用していない場合は、
readEnvFileのインポートを削除します .envからFEISHU_APP_IDとFEISHU_APP_SECRETを削除します- Feishu の登録を削除します:
sqlite3 store/messages.db "DELETE FROM registered_groups WHERE jid LIKE '%@feishu'" - アンインストールします:
npm uninstall @larksuiteoapi/node-sdk - 再ビルドします:
npm run build && launchctl kickstart -k gui/$(id -u)/com.nanoclaw(macOS)またはnpm run build && systemctl --user restart nanoclaw(Linux)