jpskill.com
📦 その他 コミュニティ

feishu-contact

飞书组织架构与 ID 转换。搜索成员、部门管理、ID 互转(OpenID/UserID/UnionID)。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o feishu-contact.zip https://jpskill.com/download/21599.zip && unzip -o feishu-contact.zip && rm feishu-contact.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/21599.zip -OutFile "$d\feishu-contact.zip"; Expand-Archive "$d\feishu-contact.zip" -DestinationPath $d -Force; ri "$d\feishu-contact.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して feishu-contact.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → feishu-contact フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

飛書組織構造と ID 変換

Contact v3 API を通じて、メンバー検索、部門管理、ID 変換を実現します。


API の基本

ベース URL: https://open.feishu.cn/open-apis/contact/v3
認証: Authorization: Bearer {tenant_access_token}

認証とトークンの取得

feishu_skills のルートディレクトリから共有スクリプトを実行します。

TOKEN="$(./scripts/get_feishu_token.sh)"

リクエストヘッダーはすべて Authorization: Bearer ${TOKEN} を使用します。

ビジネスインターフェースがトークン無効、期限切れ、または 401 を返した場合、強制的に更新した後、元のリクエストを一度だけ再試行します。

TOKEN="$(./scripts/get_feishu_token.sh --force-refresh)"

環境変数:

  • FEISHU_APP_ID
  • FEISHU_APP_SECRET

ローカルキャッシュ: ./.feishu_token_cache.json(期限切れでなければ直接再利用し、デフォルトでは 5 分前に更新します)


メンバー検索

API エンドポイント 説明
メンバー検索 GET /users/batch_get_id メールアドレス/携帯電話番号で OpenID を取得します
役職の取得 GET /job_titles/{id} 管理者バックエンドで事前に維持する必要があります

部門管理

API エンドポイント メソッド リクエストボディの例 説明
部門の取得 /departments/{department_id} GET - 単一の部門の詳細を照会します
部門リストの取得 /departments GET - parent_department_id パラメータをサポートします
親部門パスの取得 /departments/{department_id}/parent GET - 部門の階層パスを取得します
部門の作成 /departments POST {"name":"新部門","parent_department_id":"0"} 管理者権限が必要です
部門の更新 /departments/{department_id} PUT {"name":"更新後の名称"} 部門情報を変更します
部門の削除 /departments/{department_id} DELETE - 空の部門を削除します
メンバーの入社 /users POST {"name":"張三","mobile":"138...","department_ids":["od_xxx"]} ユーザーを作成します
ユーザーの更新 /users/{user_id} PUT {"name":"新名字"} ユーザー情報を変更します
ユーザーの削除 /users/{user_id} DELETE - ユーザーを削除します
ユーザーリストの取得 /users GET - department_id フィルタリングをサポートします

⚠️ 部門の作成とメンバーの入社には最高権限が必要です。プレリリース環境でのテストをお勧めします。


ユーザーグループ管理

API エンドポイント メソッド リクエストボディの例 説明
ユーザーグループリストの取得 /groups GET - すべてのユーザーグループを照会します
ユーザーグループの取得 /groups/{group_id} GET - 単一のユーザーグループを照会します
ユーザーグループの作成 /groups POST {"name":"プロジェクトグループ","description":"説明"} 新しいユーザーグループを作成します
ユーザーグループの更新 /groups/{group_id} PUT {"name":"新名称"} ユーザーグループを変更します
ユーザーグループの削除 /groups/{group_id} DELETE - ユーザーグループを削除します
グループメンバーの取得 /groups/{group_id}/members GET - グループメンバーリストを照会します
グループメンバーの追加 /groups/{group_id}/members POST {"member_id":"ou_xxx","member_type":"user"} ユーザーをグループに追加します
グループメンバーの削除 /groups/{group_id}/members/{member_id} DELETE - グループからユーザーを削除します

職位管理

API エンドポイント メソッド リクエストボディの例 説明
職位リストの取得 /job_families GET - すべての職位を照会します
職位の取得 /job_families/{job_family_id} GET - 単一の職位を照会します
職位の作成 /job_families POST {"name":"高級エンジニア"} 新しい職位を作成します
職位の更新 /job_families/{job_family_id} PUT {"name":"シニアエンジニア"} 職位を変更します
職位の削除 /job_families/{job_family_id} DELETE - 職位を削除します

ロール管理

API エンドポイント メソッド リクエストボディの例 説明
ロールリストの取得 /roles GET - すべてのロールを照会します
ロールの作成 /roles POST {"role_name":"管理者"} 新しいロールを作成します
ロールの更新 /roles/{role_id} PUT {"role_name":"スーパー管理者"} ロール名を変更します
ロールの削除 /roles/{role_id} DELETE - ロールを削除します
ロールメンバーの取得 /roles/{role_id}/members GET - ロール下のすべてのメンバーを照会します
ロールメンバーの一括追加 /roles/{role_id}/members/batch_create POST {"members":[{"member_id":"ou_xxx","member_type":"user"}]} メンバーを一括追加します
ロールメンバーの一括削除 /roles/{role_id}/members/batch_delete POST {"members":[{"member_id":"ou_xxx"}]} メンバーを一括削除します

ID 変換(コア)

飛書には 3 種類の ID システムがあります。

ID タイプ 説明 使用シナリオ
open_id アプリケーション内で一意 同じアプリケーション内でユーザーを識別
user_id 企業内で一意 企業内部システム連携
union_id アプリケーション間で一意 同じ開発者の複数のアプリケーション間

Contact v3 ID 変換

API エンドポイント メソッド リクエストボディの例 説明
ユーザー ID の一括取得 /users/batch_get_id POST {"emails":["a@b.com"],"mobiles":["138xxx"]} メールアドレス/携帯電話で OpenID を取得します
部門 ID の一括取得 /departments/batch_get_id POST {"department_ids":["od_xxx"]} 部門 ID 変換
ユーザーの取得 /users/{user_id} GET - ID でユーザー情報を取得します
ユーザー情報の取得(一括) /users/batch_get GET - パラメータ:user_ids=ou_1,ou_2

ID 変換のベストプラクティス:

GET /users/{user_id} インターフェースを使用すると、ユーザーのすべての ID タイプ(open_id/user_id/union_id)を一度に取得でき、個別に変換する必要はありません。

例:

GET /contact/v3/users/ou_xxx?user_id_type=open_id

応答に含まれるもの:

{
  "data": {
    "user": {
      "open_id": "ou_xxx",
      "user_id": "7c43cd5f",
      "union_id": "on_xxx"
    }
  }
}

その他

API エンドポイント メソッド 説明
役職リストの取得 /job_titles GET すべての事前設定された役職を照会します
役職の取得 /job_titles/{job_title_id} GET 単一の役職の詳細を照会します
勤務地の取得 /places GET 人員の地理的分布分析に使用されます
従業員タイプの取得 /employee_types GET 従業員タイプリストを照会します
カスタム属性の取得 /custom_attr_events GET カスタム属性変更イベントを照会します
承認範囲の取得 /scopes GET アプリケーションがアクセスできる部門/ユーザー範囲を照会します
外部メンバーアクセス /application/v1/applications/{app_id}/user_usable GET ベンダー/アウトソーシングのアクセス権を制御します

イベント購読

連絡先は 17 の変更イベントをサポートしています。

イベントタイプ 説明
contact.user.created_v3 ユーザー作成
contact.user.updated_v3 ユーザー情報更新
contact.user.deleted_v3 ユーザー削除
contact.dept.created_v3 部門作成
contact.dept.updated_v3 部門更新
contact.dept.deleted_v3 部門削除
contact.employee_type.created_v3 従業員タイプ作成
contact.employee_type.updated_v3 従業員タイプ更新
contact.employee_type.deleted_v3 従業員タイプ削除
contact.job_family.created_v3 職位作成
contact.job_family.updated_v3 職位更新
contact.job_family.deleted_v3 職位削除

ベストプラクティス

  1. ID 変換は Spark API を優先します(より簡潔です)
  2. よく使う ID をキャッシュします(API 呼び出しを減らします)
  3. 組織構造の変更は必ずプレリリース環境でテストします
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

飞书组织架构与 ID 转换

通过 Contact v3 API 实现成员搜索、部门管理和 ID 转换。


API 基础

Base URL: https://open.feishu.cn/open-apis/contact/v3
认证: Authorization: Bearer {tenant_access_token}

认证与 Token 获取

feishu_skills 根目录执行共享脚本:

TOKEN="$(./scripts/get_feishu_token.sh)"

请求头统一使用 Authorization: Bearer ${TOKEN}

如果业务接口返回 token 无效、过期或 401,强制刷新后仅重试一次原请求:

TOKEN="$(./scripts/get_feishu_token.sh --force-refresh)"

环境变量:

  • FEISHU_APP_ID
  • FEISHU_APP_SECRET

本地缓存: ./.feishu_token_cache.json(未过期直接复用,默认提前 5 分钟刷新)


成员查询

API 端点 说明
搜索成员 GET /users/batch_get_id 通过邮箱/手机号获取 OpenID
获取职务 GET /job_titles/{id} 需在管理后台预先维护

部门管理

API 端点 方法 请求体示例 说明
获取部门 /departments/{department_id} GET - 查询单个部门详情
获取部门列表 /departments GET - 支持 parent_department_id 参数
获取父部门路径 /departments/{department_id}/parent GET - 获取部门层级路径
创建部门 /departments POST {"name":"新部门","parent_department_id":"0"} 需管理员权限
更新部门 /departments/{department_id} PUT {"name":"更新后的名称"} 修改部门信息
删除部门 /departments/{department_id} DELETE - 删除空部门
入职成员 /users POST {"name":"张三","mobile":"138...","department_ids":["od_xxx"]} 创建用户
更新用户 /users/{user_id} PUT {"name":"新名字"} 修改用户信息
删除用户 /users/{user_id} DELETE - 移除用户
获取用户列表 /users GET - 支持 department_id 过滤

⚠️ 创建部门和入职成员需最高权限,建议预发环境测试。


用户组管理

API 端点 方法 请求体示例 说明
获取用户组列表 /groups GET - 查询所有用户组
获取用户组 /groups/{group_id} GET - 查询单个用户组
创建用户组 /groups POST {"name":"项目组","description":"描述"} 创建新用户组
更新用户组 /groups/{group_id} PUT {"name":"新名称"} 修改用户组
删除用户组 /groups/{group_id} DELETE - 删除用户组
获取组成员 /groups/{group_id}/members GET - 查询组成员列表
添加组成员 /groups/{group_id}/members POST {"member_id":"ou_xxx","member_type":"user"} 添加用户到组
移除组成员 /groups/{group_id}/members/{member_id} DELETE - 从组移除用户

职级管理

API 端点 方法 请求体示例 说明
获取职级列表 /job_families GET - 查询所有职级
获取职级 /job_families/{job_family_id} GET - 查询单个职级
创建职级 /job_families POST {"name":"高级工程师"} 创建新职级
更新职级 /job_families/{job_family_id} PUT {"name":"资深工程师"} 修改职级
删除职级 /job_families/{job_family_id} DELETE - 删除职级

角色管理

API 端点 方法 请求体示例 说明
获取角色列表 /roles GET - 查询所有角色
创建角色 /roles POST {"role_name":"管理员"} 创建新角色
更新角色 /roles/{role_id} PUT {"role_name":"超级管理员"} 修改角色名称
删除角色 /roles/{role_id} DELETE - 删除角色
获取角色成员 /roles/{role_id}/members GET - 查询角色下所有成员
批量添加角色成员 /roles/{role_id}/members/batch_create POST {"members":[{"member_id":"ou_xxx","member_type":"user"}]} 批量添加成员
批量删除角色成员 /roles/{role_id}/members/batch_delete POST {"members":[{"member_id":"ou_xxx"}]} 批量移除成员

ID 转换(核心)

飞书三种 ID 体系:

ID 类型 说明 使用场景
open_id 应用内唯一 同一应用内识别用户
user_id 企业内唯一 企业内部系统对接
union_id 跨应用唯一 同一开发者的多个应用间

Contact v3 ID 转换

API 端点 方法 请求体示例 说明
批量获取用户 ID /users/batch_get_id POST {"emails":["a@b.com"],"mobiles":["138xxx"]} 通过邮箱/手机获取 OpenID
批量获取部门 ID /departments/batch_get_id POST {"department_ids":["od_xxx"]} 部门 ID 转换
获取用户 /users/{user_id} GET - 通过 ID 获取用户信息
获取用户信息(批量) /users/batch_get GET - 参数:user_ids=ou_1,ou_2

ID 转换最佳实践:

通过 GET /users/{user_id} 接口可一次性获取用户的所有 ID 类型(open_id/user_id/union_id),无需单独转换。

示例:

GET /contact/v3/users/ou_xxx?user_id_type=open_id

响应包含:

{
  "data": {
    "user": {
      "open_id": "ou_xxx",
      "user_id": "7c43cd5f",
      "union_id": "on_xxx"
    }
  }
}

其他

API 端点 方法 说明
获取职务列表 /job_titles GET 查询所有预设职务
获取职务 /job_titles/{job_title_id} GET 查询单个职务详情
获取办公地点 /places GET 用于人员地理分布分析
获取人员类型 /employee_types GET 查询人员类型列表
获取自定义属性 /custom_attr_events GET 查询自定义属性变更事件
获取授权范围 /scopes GET 查询应用可访问的部门/用户范围
外部成员访问 /application/v1/applications/{app_id}/user_usable GET 控制供应商/外包访问权限

事件订阅

通讯录支持 17 个变更事件:

事件类型 说明
contact.user.created_v3 用户创建
contact.user.updated_v3 用户信息更新
contact.user.deleted_v3 用户删除
contact.dept.created_v3 部门创建
contact.dept.updated_v3 部门更新
contact.dept.deleted_v3 部门删除
contact.employee_type.created_v3 人员类型创建
contact.employee_type.updated_v3 人员类型更新
contact.employee_type.deleted_v3 人员类型删除
contact.job_family.created_v3 职级创建
contact.job_family.updated_v3 职级更新
contact.job_family.deleted_v3 职级删除

最佳实践

  1. ID 转换优先用 Spark API(更简洁)
  2. 缓存常用 ID(减少 API 调用)
  3. 组织架构变更必须预发测试