$npx -y skills add op7418/CodePilot --skill feishu-fetch-doc获取飞书云文档内容。返回文档的 Markdown 内容,支持处理文档中的图片、文件和画板(需配合 feishu_doc_media 工具)。
| 1 | # feishu_mcp_fetch_doc |
| 2 | |
| 3 | 获取飞书云文档的 Markdown 内容(Lark-flavored 格式)。 |
| 4 | |
| 5 | ## 重要:图片、文件、画板的处理 |
| 6 | |
| 7 | **文档中的图片、文件、画板需要通过 `feishu_doc_media`(action: download)工具单独获取!** |
| 8 | |
| 9 | ### 识别格式 |
| 10 | |
| 11 | 返回的 Markdown 中,媒体文件以 HTML 标签形式出现: |
| 12 | |
| 13 | - **图片**: |
| 14 | ```html |
| 15 | <image token="Z1FjxxxxxxxxxxxxxxxxxxxtnAc" width="1833" height="2491" align="center"/> |
| 16 | ``` |
| 17 | |
| 18 | - **文件**: |
| 19 | ```html |
| 20 | <view type="1"> |
| 21 | <file token="Z1FjxxxxxxxxxxxxxxxxxxxtnAc" name="skills.zip"/> |
| 22 | </view> |
| 23 | ``` |
| 24 | |
| 25 | - **画板**: |
| 26 | ```html |
| 27 | <whiteboard token="Z1FjxxxxxxxxxxxxxxxxxxxtnAc"/> |
| 28 | ``` |
| 29 | |
| 30 | ### 获取步骤 |
| 31 | |
| 32 | 1. 从 HTML 标签中提取 `token` 属性值 |
| 33 | 2. 调用 `feishu_doc_media` 下载: |
| 34 | ```json |
| 35 | { |
| 36 | "action": "download", |
| 37 | "resource_token": "提取的token", |
| 38 | "resource_type": "media", |
| 39 | "output_path": "/path/to/save/file" |
| 40 | } |
| 41 | ``` |
| 42 | |
| 43 | ## 参数 |
| 44 | |
| 45 | - **`doc_id`**(必填):支持直接传文档 URL 或 token |
| 46 | - 直接传 URL:`https://xxx.feishu.cn/docx/Z1FjxxxxxxxxxxxxxxxxxxxtnAc`(系统自动提取 token) |
| 47 | - 直接传 token:`Z1FjxxxxxxxxxxxxxxxxxxxtnAc` |
| 48 | - 知识库 URL/token 也支持:`https://xxx.feishu.cn/wiki/Z1FjxxxxxxxxxxxxxxxxxxxtnAc` 或 `Z1FjxxxxxxxxxxxxxxxxxxxtnAc` |
| 49 | |
| 50 | ## Wiki URL 处理策略 |
| 51 | |
| 52 | 知识库链接(`/wiki/TOKEN`)背后可能是云文档、电子表格、多维表格等不同类型的文档。当不确定类型时, **不能直接假设是云文档**,必须先查询实际类型。 |
| 53 | |
| 54 | ### 处理流程 |
| 55 | |
| 56 | 1. **先调用 `feishu_wiki_space_node`(action: get)解析 wiki token**: |
| 57 | ```json |
| 58 | { "action": "get", "token": "wiki_token_here" } |
| 59 | ``` |
| 60 | 2. **从返回的 `node` 中获取 `obj_type`(实际文档类型)和 `obj_token`(实际文档 token)** |
| 61 | 3. **根据 `obj_type` 调用对应工具**: |
| 62 | |
| 63 | | obj_type | 工具 | 传参 | |
| 64 | |----------|------|------| |
| 65 | | `docx` | `feishu_mcp_fetch_doc` | doc_id = obj_token | |
| 66 | | `sheet` | `feishu_sheet` | spreadsheet_token = obj_token | |
| 67 | | `bitable` | `feishu_bitable_*` 系列 | app_token = obj_token | |
| 68 | | 其他 | 告知用户暂不支持该类型 | — | |
| 69 | |
| 70 | |
| 71 | ### 示例 |
| 72 | |
| 73 | 用户:`帮我看下这个文档 https://xxx.feishu.cn/wiki/ABC123` |
| 74 | |
| 75 | 1. 调用 `feishu_wiki_space_node`(action: get, token: ABC123) |
| 76 | 2. 返回 `obj_type: "docx"`, `obj_token: "doxcnXYZ789"` |
| 77 | 3. 调用 `feishu_mcp_fetch_doc`(doc_id: doxcnXYZ789) |
| 78 | |
| 79 | ## 工具组合 |
| 80 | |
| 81 | | 需求 | 工具 | |
| 82 | |------|------| |
| 83 | | 获取文档文本 | `feishu_mcp_fetch_doc` | |
| 84 | | 下载图片/文件/画板 | `feishu_doc_media`(action: download) | |
| 85 | | 解析 wiki token 类型 | `feishu_wiki_space_node`(action: get) | |
| 86 | | 读写电子表格 | `feishu_sheet` | |
| 87 | | 操作多维表格 | `feishu_bitable_*` 系列 | |