lark-wiki について
lark-wiki は、Lark CLI でナレッジベース(Wiki)を管理するためのエージェントスキルです。コマンドラインやコーディングエージェントから Lark のナレッジスペースを操作したいユーザーを想定しています。スペース、ノード、メンバーの一般的な操作をまとめ、スペース削除などの高リスクな書き込みには確認手順を設けています。
主な機能
- 01ナレッジスペースとノードの一覧取得、参照、作成、複製
- 02ノードの移動(Drive フォルダへの移動を含む)
- 03ナレッジスペースメンバーの参照、追加、削除
- 04スペース削除前の候補確認と space_id の解決
- 05既定の user ID と bot ID の制限の明示
活用シーン
- 01トピックごとにドキュメントを集めて移動先ノードへ配置
- 02ナレッジスペースのノードツリーの確認と整理
- 03ユーザー、グループ、部門、アプリをスペースメンバーとして追加または削除
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ larksuite/ cli --skill lark-wikiインストール後、Claude Code で/lark-wikiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/lark-wiki-delete-space.mdlark-wiki-member-add.mdlark-wiki-member-list.mdlark-wiki-member-remove.mdlark-wiki-move-to-drive.mdlark-wiki-move.mdlark-wiki-node-copy.mdlark-wiki-node-create.mdlark-wiki-node-delete.mdlark-wiki-node-get.mdlark-wiki-node-list.mdlark-wiki-space-create.mdlark-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_collectorworkflow。该 workflow 使用 Drive 全量搜索召回,再按 Wiki 目标解析、确认和移动;不要只用 Wiki 节点列表做局部遍历。 - 用户要整理 / 盘点 / 归类 / 重构知识库、个人文档库、文档库目录或 Wiki 节点结构,或要生成整理方案、目标目录树、移动计划时,不要只使用 Wiki 节点 API。必须先阅读
../lark-drive/references/lark-drive-workflow.md,再按其中Workflow Registry进入knowledge_organizeworkflow;该 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 做宽松匹配(nametrim 空格、大小写不敏感、子串包含)。 - 关键安全约束:无论精确还是模糊,无论命中 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再传。
- URL(
- 用户要在知识库中创建新节点,优先使用
lark-cli wiki +node-create。 - 用户要原地重命名 Wiki 节点 / 修改节点标题:使用
lark-cli drive +update-title --url '<wiki_url>' --title '<new_title>'。该命令保留同一个node_token,并会根据 API 返回给出准确的缺失 scope 和授权提示;不要探索 rawwiki.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 | 説明 |
|---|---|
+move | Wiki ノードを移動するか、Drive ドキュメントを Wiki に移動します |
+move-to-drive | Wiki ノードを Drive フォルダーに移動し、非同期タスクの完了をポーリングします |
+node-create | スペースを自動解決して Wiki ノードを作成します |
+delete-space | Wiki スペースを削除し、必要に応じて非同期削除タスクの完了をポーリングします |
+space-list | 呼び出し元がアクセスできるすべての Wiki スペースを一覧表示します |
+space-create | Wiki スペースを作成します(ユーザー ID のみ) |
+node-list | スペース内または親ノード配下の Wiki ノードを一覧表示します(ページネーションに対応) |
+node-copy | Wiki ノードを対象スペースまたは親ノードにコピーします |
+node-get | node_token/obj_token/Lark URL を使って Wiki ノードの詳細を取得します |
+node-delete | Wiki ノードを削除し、必要に応じて非同期削除タスクの完了をポーリングします |
+member-add | Wiki スペースにメンバーを追加します |
+member-remove | Wiki スペースからメンバーを削除します |
+member-list | Wiki スペースのメンバーを一覧表示します(ページネーションに対応) |
メンバー追加の手順
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
コメント
Markdown 対応