Skill v1.0.1
currentAutomated scan100/1005 files
version: "1.0.1" name: feishu-doc description: | Feishu document read/write operations. Activate when user mentions Feishu docs, cloud docs, or docx links.
Feishu Document Tool
Single tool feishu_doc with action parameter for all document operations, including table creation for Docx.
Token Extraction
From URL https://xxx.feishu.cn/docx/ABC123def → doc_token = ABC123def
Actions
Read Document
{ "action": "read", "doc_token": "ABC123def" }
Returns: title, plain text content, block statistics. Check hint field - if present, structured content (tables, images) exists that requires list_blocks.
Write Document (Replace All)
{ "action": "write", "doc_token": "ABC123def", "content": "# Title\n\nMarkdown content..." }
Replaces entire document with markdown content. Supports: headings, lists, code blocks, quotes, links, images ( auto-uploaded), bold/italic/strikethrough.
Limitation: Markdown tables are NOT supported.
Append Content
{ "action": "append", "doc_token": "ABC123def", "content": "Additional content" }
Appends markdown to end of document.
Create Document
{ "action": "create", "title": "New Document", "owner_open_id": "ou_xxx" }
With folder:
{"action": "create","title": "New Document","folder_token": "fldcnXXX","owner_open_id": "ou_xxx"}
Important: Always pass owner_open_id with the requesting user's open_id (from inbound metadata sender_id) so the user automatically gets full_access permission on the created document. Without this, only the bot app has access.
List Blocks
{ "action": "list_blocks", "doc_token": "ABC123def" }
Returns full block data including tables, images. Use this to read structured content.
Get Single Block
{ "action": "get_block", "doc_token": "ABC123def", "block_id": "doxcnXXX" }
Update Block Text
{"action": "update_block","doc_token": "ABC123def","block_id": "doxcnXXX","content": "New text"}
Delete Block
{ "action": "delete_block", "doc_token": "ABC123def", "block_id": "doxcnXXX" }
Create Table (Docx Table Block)
{"action": "create_table","doc_token": "ABC123def","row_size": 2,"column_size": 2,"column_width": [200, 200]}
Optional: parent_block_id to insert under a specific block.
Write Table Cells
{"action": "write_table_cells","doc_token": "ABC123def","table_block_id": "doxcnTABLE","values": [["A1", "B1"],["A2", "B2"]]}
Create Table With Values (One-step)
{"action": "create_table_with_values","doc_token": "ABC123def","row_size": 2,"column_size": 2,"column_width": [200, 200],"values": [["A1", "B1"],["A2", "B2"]]}
Optional: parent_block_id to insert under a specific block.
Upload Image to Docx (from URL or local file)
{"action": "upload_image","doc_token": "ABC123def","url": "https://example.com/image.png"}
Or local path with position control:
{"action": "upload_image","doc_token": "ABC123def","file_path": "/tmp/image.png","parent_block_id": "doxcnParent","index": 5}
Optional index (0-based) inserts the image at a specific position among sibling blocks. Omit to append at end.
Note: Image display size is determined by the uploaded image's pixel dimensions. For small images (e.g. 480x270 GIFs), scale to 800px+ width before uploading to ensure proper display.
Upload File Attachment to Docx (from URL or local file)
{"action": "upload_file","doc_token": "ABC123def","url": "https://example.com/report.pdf"}
Or local path:
{"action": "upload_file","doc_token": "ABC123def","file_path": "/tmp/report.pdf","filename": "Q1-report.pdf"}
Rules:
- exactly one of
url/file_path - optional
filenameoverride - optional
parent_block_id
Reading Workflow
- Start with
action: "read"- get plain text + statistics - Check
block_typesin response for Table, Image, Code, etc. - If structured content exists, use
action: "list_blocks"for full data
Configuration
channels:feishu:tools:doc: true # default: true
Note: feishu_wiki depends on this tool - wiki page content is read/written via feishu_doc.
Permissions
Required: docx:document, docx:document:readonly, docx:document.block:convert, drive:drive