feishu-drive について
Feishu Drive APIを通じてクラウド上のファイルやフォルダーを管理するスキルです。整理、転送、共同作業に対応し、検索やアップロード、権限管理に加えて、バージョン、コメント、購読も操作できます。
主な機能
- 01フォルダーの作成、移動、複製、削除
- 02ファイルのアップロード、分割転送、ダウンロード
- 03ファイル検索とメタデータ照会
- 04共同作業者とアクセス権の管理
- 05バージョン、コメント、変更通知の購読管理
活用シーン
- 01プロジェクト用クラウドフォルダーの整理
- 02分割転送を含むファイルのアップロードやダウンロード
- 03共同作業者の追加とファイル権限の調整
- 04ファイルのバージョン、コメント、変更通知の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ alextangson/ feishu_skills --skill feishu-driveインストール後、Claude Code で/feishu-driveを入力して読み込まれたか確認します。
詳細
飛書クラウドスペースのファイル管理
Drive API を使用してファイルやフォルダーを管理します。
Base URL: https://open.feishu.cn/open-apis/drive/v1
認証と Token の取得
feishu_skills のルートディレクトリから共有スクリプトを実行します。
TOKEN="$(./scripts/get_feishu_token.sh)"
リクエストヘッダーには一律で Authorization: Bearer ${TOKEN} を使用します。
ビジネス API から token が無効、期限切れ、または 401 のエラーが返された場合は、強制的に更新してから元のリクエストを 1 回だけ再試行します。
TOKEN="$(./scripts/get_feishu_token.sh --force-refresh)"
環境変数:
FEISHU_APP_IDFEISHU_APP_SECRET
ローカルキャッシュ: ./.feishu_token_cache.json(有効期限内であればそのまま再利用し、デフォルトでは 5 分前に更新します)
クイックスタート(必読)
ファイルが「プライベートなブラックボックス」に入るのを防ぐため、次の手順を実行します。
- アンカーフォルダーを作成(例:
AI-Workspace) - ボットを認可:フォルダーの【共同作業】設定で、アプリに【管理】権限を付与します
- Token を取得:フォルダー URL から Token をコピーします
- テスト:
batch_queryを呼び出して、その Token を照会します
⚠️ API で作成したフォルダーはデフォルトでボットからしか見えないため、共同編集者を手動で追加する必要があります。
フォルダー操作
| API | エンドポイント | メソッド | リクエストボディの例 | 説明 |
|---|---|---|---|---|
| フォルダーを作成 | /folders | POST | {"name":"文件夹名","folder_token":"root"} | 新しいフォルダーを作成 |
| フォルダーのメタデータを取得 | /folders/{folder_token}/meta | GET | - | フォルダーの詳細を照会 |
| メタデータを一括取得 | /metas/batch_query | POST | {"request_list":[{"token":"fldxxx","type":"folder"}]} | ファイル/フォルダーを一括で照会 |
| フォルダーの内容を取得 | /folders/{folder_token}/children | GET | - | フォルダー内のファイル一覧を照会 |
| フォルダーを移動 | /folders/{folder_token}/move | POST | {"target_token":"fldxxx"} | フォルダーを移動 |
| フォルダーをコピー | /folders/{folder_token}/copy | POST | {"target_token":"fldxxx"} | フォルダーをコピー |
| フォルダーを削除 | /folders/{folder_token} | DELETE | - | 空のフォルダーを削除 |
ファイルのアップロード
| API | エンドポイント | メソッド | リクエストボディ | 説明 |
|---|---|---|---|---|
| 小さなファイルをアップロード | /files/upload_all | POST | multipart/form-data | 一括アップロード(<20MB) |
| 大きなファイルのアップロードを事前準備 | /files/upload_prepare | POST | {"file_name":"big.zip","size":104857600} | 分割アップロードを初期化 |
| 分割アップロード | /files/upload_part | POST | multipart/form-data | 個別の分割データをアップロード |
| 分割アップロードを完了 | /files/upload_finish | POST | {"upload_id":"xxx","block_num":10} | アップロードを完了 |
小さなファイルのアップロード:
POST /files/upload_all
Content-Type: multipart/form-data
file_name=test.txt
parent_type=explorer
parent_node=fldXXX
file=<binary>
ファイルのダウンロード
| API | エンドポイント | メソッド | 説明 |
|---|---|---|---|
| ファイルをダウンロード | /files/{file_token}/download | GET | ファイルのバイナリストリームを返す |
| ファイルのメタデータを取得 | /files/{file_token}/meta | GET | ファイルの詳細を照会 |
| ファイル一覧を取得 | /files | GET | パラメーター:親フォルダーの folder_token |
ファイル操作
| API | エンドポイント | メソッド | リクエストボディの例 | 説明 |
|---|---|---|---|---|
| ファイルを移動 | /files/{file_token}/move | POST | {"type":"explorer","folder_token":"fldXXX"} | ファイルを移動 |
| ファイルをコピー | /files/{file_token}/copy | POST | {"type":"explorer","folder_token":"fldXXX","name":"副本.txt"} | ファイルをコピー |
| ファイルを削除 | /files/{file_token} | DELETE | - | ファイルを削除 |
| ショートカットを作成 | /shortcuts | POST | {"target_token":"filexxx","parent_token":"fldxxx"} | ファイルのショートカットを作成 |
| ファイルの統計情報を取得 | /files/{file_token}/statistics | GET | - | ファイルのアクセス統計を照会 |
検索
| API | エンドポイント | メソッド | リクエストボディの例 | 説明 |
|---|---|---|---|---|
| ファイルを検索 | /files/search | POST | {"search_key":"关键词","owner_ids":["ou_xxx"]} | 全文検索 |
| 検索 V2 | /files/search_v2 | POST | 同上 | 新しい検索インターフェース |
権限管理
| API | エンドポイント | メソッド | リクエストボディの例 | 説明 |
|---|---|---|---|---|
| 共同編集者を追加 | /permissions/{token}/members | POST | {"member_type":"user","member_id":"ou_xxx","perm":"full_access"} | 権限を追加 |
| 共同編集者を削除 | /permissions/{token}/members/{member_id} | DELETE | - | 権限を削除 |
| 共同編集者を取得 | /permissions/{token}/members | GET | - | 権限一覧を照会 |
| 共同編集者を更新 | /permissions/{token}/members/{member_id}/patch | PATCH | {"perm":"edit"} | 権限を変更 |
| 所有者を譲渡 | /permissions/{token}/transfer_owner | POST | {"member_type":"user","member_id":"ou_xxx"} | 所有権を移転 |
| 権限設定を取得 | /permissions/{token}/public | GET | - | 公開アクセス設定を照会 |
| 権限設定を更新 | /permissions/{token}/public | PATCH | {"external_access":false} | 公開アクセスを変更 |
権限の種類: view(閲覧)/edit(編集)/full_access(フルアクセス)
ファイルのバージョン管理
| API | エンドポイント | メソッド | リクエストボディの例 | 説明 |
|---|---|---|---|---|
| バージョン一覧を取得 | /files/{file_token}/versions | GET | - | ファイルの過去のバージョンを照会 |
| バージョンの詳細を取得 | /files/{file_token}/versions/{version_id} | GET | - | 指定したバージョンの情報を照会 |
| バージョンを削除 | /files/{file_token}/versions/{version_id} | DELETE | - | 過去のバージョンを削除 |
文件评论
| API | 端点 | 方法 | 请求体示例 | 说明 |
|---|---|---|---|---|
| 获取全文评论 | /files/{file_token}/comments | GET | - | 查询文件所有评论 |
| 获取回复列表 | /files/{file_token}/comments/{comment_id}/replies | GET | - | 查询评论的回复 |
| 添加全文评论 | /files/{file_token}/comments | POST | {"content":{"text":"评论内容"}} | 添加评论 |
| 回复评论 | /files/{file_token}/comments/{comment_id}/replies | POST | {"content":{"text":"回复内容"}} | 回复评论 |
| 解决/重开评论 | /files/{file_token}/comments/{comment_id} | PATCH | {"is_solved":true} | 标记评论状态 |
订阅管理
| API | 端点 | 方法 | 请求体示例 | 说明 |
|---|---|---|---|---|
| 订阅文件 | /files/{file_token}/subscriptions | POST | {"subscription_type":"file_edit"} | 订阅文件变更通知 |
| 获取订阅状态 | /files/{file_token}/subscriptions/{subscription_id} | GET | - | 查询订阅状态 |
| 取消订阅 | /files/{file_token}/subscriptions/{subscription_id} | DELETE | - | 取消订阅 |
订阅类型: file_edit(文件编辑) / file_comment(评论) / file_share(分享)
最佳实践
- 创建文件夹后立即添加协作者(避免不可见)
- 大文件用分片上传(>20MB)
- 权限继承:父文件夹授权后,子文件夹自动继承
- 版本管理:定期清理历史版本节省空间
- 订阅通知:关键文件订阅变更通知,及时响应
コメント
Markdown 対応