mcpField
L
lark-wiki

lark-wiki

larksuiteエージェントワークフロー17.9k474.1k 回インストール今日更新
リポジトリ

lark-wiki について

lark-wiki は、Lark CLI でナレッジベース(Wiki)を管理するためのエージェントスキルです。コマンドラインやコーディングエージェントから Lark のナレッジスペースを操作したいユーザーを想定しています。スペース、ノード、メンバーの一般的な操作をまとめ、スペース削除などの高リスクな書き込みには確認手順を設けています。

主な機能

  1. 01ナレッジスペースとノードの一覧取得、参照、作成、複製
  2. 02ノードの移動(Drive フォルダへの移動を含む)
  3. 03ナレッジスペースメンバーの参照、追加、削除
  4. 04スペース削除前の候補確認と space_id の解決
  5. 05既定の user ID と bot ID の制限の明示

活用シーン

  1. 01トピックごとにドキュメントを集めて移動先ノードへ配置
  2. 02ナレッジスペースのノードツリーの確認と整理
  3. 03ユーザー、グループ、部門、アプリをスペースメンバーとして追加または削除

インストール

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

$npx skills add https://github.com/larksuite/cli --skill lark-wiki

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

同梱ファイル

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

references/
lark-wiki-delete-space.md
lark-wiki-member-add.md
lark-wiki-member-list.md
lark-wiki-member-remove.md
lark-wiki-move-to-drive.md
lark-wiki-move.md
lark-wiki-node-copy.md
lark-wiki-node-create.md
lark-wiki-node-delete.md
lark-wiki-node-get.md
lark-wiki-node-list.md
lark-wiki-space-create.md
lark-wiki-space-list.md

詳細

wiki (v2)

CRITICAL — 开始前 MUST 先用 Read 工具读取 ../lark-shared/SKILL.md,其中包含认证、权限处理

成员管理硬限制:

  • 如果目标是“部门”,先判断身份,再决定是否继续。
  • --as bot 对应 tenant_access_token。官方限制:这种身份下不能使用部门 ID (opendepartmentid) 添加知识空间成员。
  • 遇到“部门 + --as bot”时,禁止先调用 lark-cli wiki +member-add 试错;直接说明该路径不可行。
  • 如果用户明确要求“以 bot 身份运行”,且目标是部门,必须停下说明 bot 路径无法完成,不要静默切到 --as user。

身份选择:优先使用 user 身份

知识空间和节点都是用户的个人资源,策略上应优先显式使用 --as user(CLI 的 --as 默认值为 auto,不带 --as 时常被解析成 bot,列出的是应用所属空间而非用户的)。仅当用户明确要求“应用 / bot 视角”时才用 --as bot(仍受上面的成员管理硬限制约束)。

快速决策

  • 用户要按特定主题 / 关键词 / 内容线索查找资料并收集到知识库节点或新建知识库节点下,必须先阅读 ../lark-drive/references/lark-drive-workflow.md,再按其中 Workflow Registry 进入 topic_move_collector workflow。该 workflow 使用 Drive 全量搜索召回,再按 Wiki 目标解析、确认和移动;不要只用 Wiki 节点列表做局部遍历。
  • 用户要整理 / 盘点 / 归类 / 重构知识库、个人文档库、文档库目录或 Wiki 节点结构,或要生成整理方案、目标目录树、移动计划时,不要只使用 Wiki 节点 API。必须先阅读 ../lark-drive/references/lark-drive-workflow.md,再按其中 Workflow Registry 进入 knowledge_organize workflow;该 workflow 负责 Drive / Wiki / 个人文档库的统一入口解析、资源盘点、分类计划、写前确认和结果验证。
  • 用户要把已有 Wiki 节点移出知识库,放到 Drive 文件夹或“我的空间”根目录:使用 wiki +move-to-drive,不要使用 wiki +move 或 drive +move。这是会改变节点归属和权限继承的写操作,执行前确认源节点与目标位置。
  • 用户给的是知识库 URL(.../wiki/<token>),且后续要查成员/加成员/删成员:先确定下游成员操作的身份(默认 user;用户明确要求应用 / bot 视角时用 bot),再调用 lark-cli wiki +node-get --node-token '<wiki_url>' --as user --format json,从 data.space_id 获取空间 ID;下游使用 bot 时将示例中的身份改为 --as bot。节点解析与后续成员操作必须使用相同身份。
  • 用户要删除知识空间(wiki +delete-space)但只给了名称或 URL:不能把名称 / URL 原样传给 --space-id,必须先解析出真实 space_id。解析方式:
    • URL(.../wiki/<token>):先确定后续 wiki +delete-space 的身份(默认 user;明确要求 bot 视角时用 bot),再调用 lark-cli wiki +node-get --node-token '<wiki_url>' --as user --format json,读取 data.space_id;下游使用 bot 时将示例中的身份改为 --as bot。解析和删除必须使用相同身份。
    • 只知名称:lark-cli wiki spaces list --format json,边翻页边收集 items 并按 name 精确匹配;一旦任一页累计到至少 1 条精确匹配就停止翻页。只有当翻完所有页(has_more=false)仍无精确匹配时,才对已收集的全量 items 做宽松匹配(name trim 空格、大小写不敏感、子串包含)。
    • 关键安全约束:无论精确还是模糊,无论命中 1 条还是多条,发起删除前都必须把候选(name + space_id + description + space_type)列给用户,由用户明确选定一个 space_id 再执行。不要因为"只命中一条"就自动执行删除。
    • 命中 0 条:停下来问用户是名称拼错了还是调用方无权限;不要自行改名字重试。
    • 用户明确选定后再执行 lark-cli wiki +delete-space --space-id <ID> --yes(高风险写操作,必须显式 --yes)。
    • 反例:不要把 wiki URL / 名称直接当 --space-id(如 --space-id "https://.../wiki/<wiki_token>");务必先用 wiki +node-get 解析出 data.space_id 再传。
  • 用户要在知识库中创建新节点,优先使用 lark-cli wiki +node-create。
  • 用户要原地重命名 Wiki 节点 / 修改节点标题:使用 lark-cli drive +update-title --url '<wiki_url>' --title '<new_title>'。该命令保留同一个 node_token,并会根据 API 返回给出准确的缺失 scope 和授权提示;不要探索 raw wiki.nodes 的 update_title 端点,也不要通过复制或新建第二个节点实现改名。
  • 用户要列出 Wiki 节点:先用 wiki +space-list --as user 拿数字 space_id,再用 wiki +node-list --space-id <space_id>。不要把 wiki URL、node token、doc token、名称直接当 --space-id。钻子节点时 --parent-node-token 必须是 wiki node token;如果用户给的是 docx/sheet/base URL,先用 wiki +node-get --node-token <url> 解析出 node_token。
  • wiki +node-list 命中 invalid_parameters、not_found、permission_denied 时,不要重复调用同一参数;按 hint 修 space_id / parent_node_token / 权限。只有 rate_limit 才做退避重试。
  • 用户说“给知识库添加成员/管理员”:先把目标解析成“用户 / 群 / 部门 / 应用”四类之一,再决定 --member-type,不要先调 wiki +member-add 再根据报错反推类型。
  • 用户说“部门 + bot”:这是已知不支持路径。不要继续尝试 wiki +member-add --as bot;直接提示必须改成 --as user,或明确告知当前要求无法完成。
  • 用户说“用户 / 群 / 应用 + 添加成员”:先解析对应 ID,再执行 wiki +member-add。
  • 用户说“查看 / 列出空间成员”:用 wiki +member-list;该 shortcut 默认只取一页,多成员场景显式加 --page-all。
  • 用户说“移除 / 删除空间成员”:用 wiki +member-remove,必须传齐原始授予时的 --member-type 和 --member-role(不知道就先 wiki +member-list 查一下)。

ショートカット(優先して使用することを推奨)

Shortcut は、よく使う操作を高度にラップしたものです(lark-cli wiki +<verb> [flags])。Shortcut がある操作は、優先して使用してください。

Wiki ノードの取得または解析には、space_id、node_token、obj_token、obj_type の取得のみが目的の中間ステップも含め、wiki +node-get を一律に使用してください。

Shortcut説明
+moveWiki ノードを移動するか、Drive ドキュメントを Wiki に移動します
+move-to-driveWiki ノードを Drive フォルダーに移動し、非同期タスクの完了をポーリングします
+node-createスペースを自動解決して Wiki ノードを作成します
+delete-spaceWiki スペースを削除し、必要に応じて非同期削除タスクの完了をポーリングします
+space-list呼び出し元がアクセスできるすべての Wiki スペースを一覧表示します
+space-createWiki スペースを作成します(ユーザー ID のみ)
+node-listスペース内または親ノード配下の Wiki ノードを一覧表示します(ページネーションに対応)
+node-copyWiki ノードを対象スペースまたは親ノードにコピーします
+node-getnode_token/obj_token/Lark URL を使って Wiki ノードの詳細を取得します
+node-deleteWiki ノードを削除し、必要に応じて非同期削除タスクの完了をポーリングします
+member-addWiki スペースにメンバーを追加します
+member-removeWiki スペースからメンバーを削除します
+member-listWiki スペースのメンバーを一覧表示します(ページネーションに対応)

メンバー追加の手順

  • lark-cli wiki +member-add を呼び出す前に、自然言語の「ユーザー/グループ/部署/アプリ」を正しい --member-id に解決してください。形式を推測してはいけません。
  • ユーザーの場合は、デフォルトで --member-type=openid を優先します。lark-cli contact +search-user --query "<姓名/邮箱/手机号>" --format json を使って open_id を取得してください。
  • グループの場合は --member-type=openchat を使用します。lark-cli im +chat-search --query "<群名关键词>" --format json を使って chat_id を取得してください。
  • アプリの場合は --member-type=appid を使用します。--member-id にはアプリ ID を渡します。通常、形式は cli_xxx です。
  • userid/unionid は、下流で明示的に必要とされる場合にのみ使用してください。まず open_id を取得し、その後 lark-cli api GET /open-apis/contact/v3/users/<open_id> --params '{"user_id_type":"open_id"}' --format json を呼び出して user_id/union_id を読み取ります。
  • 部署の場合は --member-type=opendepartmentid を使用します。現在の CLI に Shortcut はないため、lark-cli api POST /open-apis/contact/v3/departments/search --as user --params '{"department_id_type":"open_department_id"}' --data '{"query":"<部门名>"}' を呼び出して open_department_id を取得してください。
  • 対象の種類と ID の両方について実行可能であることを確認してから、lark-cli wiki +member-add を呼び出してください。部署の場合は、--as user であることが必須です。

対象の意味に関する制約

  • 我的文档库/My Document Library/我的知识库/个人知识库/my_library は、いずれも Wiki のパーソナルライブラリ とみなし、Drive のルートディレクトリとはみなしません。
  • これらの対象を扱う場合は、まず my_library に対応する実際の space_id を解決してから、wiki +move、wiki +node-create またはその他の Wiki 書き込み操作を実行してください。
  • 明示的な space_id がないことを理由に、drive +move に切り替えてはいけません。
  • ユーザーが Drive フォルダー、クラウドスペース(クラウドドライブ/クラウドストレージ)のルートディレクトリ、我的空间 を明示的に指定した場合は、元のオブジェクトに応じて処理を振り分けてください。元のオブジェクトが Wiki ノードの場合は wiki +move-to-drive を、すでに Drive にある場合は drive +move を使用します。

API リソース

lark-cli schema wiki.<resource>.<method>   # 调用原生 API 前必须先查看 --data / --params 参数结构,不要猜测字段格式
lark-cli wiki <resource> <method> [flags]  # 调用 API
spaces
  • create — ナレッジスペースを作成します
  • get — ナレッジスペースの情報を取得します
  • list — ナレッジスペースの一覧を取得します
members
  • create — ナレッジスペースのメンバーを追加します
  • delete — ナレッジスペースのメンバーを削除します
  • list — ナレッジスペースのメンバー一覧を取得します
nodes
  • copy — ナレッジスペースのノードのコピーを作成します
  • create — ナレッジスペースのノードを作成します
  • list — ナレッジスペースの子ノード一覧を取得します

このスキルの対象外

  • ナレッジベースのノード配下にファイルをアップロードする → lark-drive(drive +upload --wiki-token)
  • Wiki ノードに対応するファイル(下層の obj_type が file)をダウンロードする → lark-drive:drive +download --wiki-token <node_token> または drive +download --url <wiki_url>(CLI が Wiki ノードを下層のファイルに解決してからダウンロードします)。下層が docx/sheet/bitable/slides などのオンラインドキュメントの場合は、drive +export を使用してください。
  • ドキュメント本文を編集する → lark-doc
  • 表計算シート/多次元テーブルのデータを操作する → lark-sheets/lark-base
  • 名前でドキュメント/Wiki/表計算ファイルを検索する、コメントや権限を管理する → lark-drive

コメント