by leemysw
🚀 Feishu/Lark Docs、Sheet、Bitable <-> Markdown | AI Agent-friendly knowledge base exporter and writer with OAuth 2.0, CLI, TUI & Claude Skills support - 飞书文档 <写入/导出> Markdown | AI Agent 友好型导出-写入工具
# Add to your Claude Code skills
git clone https://github.com/leemysw/feishu-docxGuides for using ai agents skills like feishu-docx.
Last scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T15:36:24.677Z",
"npmAuditRan": true,
"pipAuditRan": true
}export / export-wiki-space now support --sheet-value-mode for display values or formulasLet AI Agents read, write, and manage your Feishu/Lark knowledge base.
pip install and start exporting# Install
pip install feishu-docx
# Configure credentials (one-time)
feishu-docx config set --app-id YOUR_APP_ID --app-secret YOUR_APP_SECRET
# Export! (auto-obtains tenant_access_token, no OAuth needed)
feishu-docx export "https://my.feishu.cn/wiki/KUIJwaBuGiwaSIkkKJ6cfVY8nSg"
# Create a Feishu doc directly from a WeChat article
feishu-docx create --url "https://mp.weixin.qq.com/s/xxxxx"
# Manage app cloud-space documents
feishu-docx drive ls --type docx
# Optional: Use OAuth mode for user-level permissions
# feishu-docx config set --auth-mode oauth && feishu-docx auth
Enable Agent to access your Feishu knowledge base directly!
This project includes a Claude Skill at .skills/feishu-docx/SKILL.md.
Supports OpenCode, Claude Code, Codex, Cursor, and more.
Copy this Skill to your agent project, and Claude can:
| Feature | Description |
|---|---|
| 📄 Document Export | Docx → Markdown with formatting, images, tables |
| 📊 Spreadsheet Export | Sheet → Markdown tables, with rich-text cells and display/formula modes |
| 📋 Bitable Export | Multidimensional tables → Markdown |
| 📚 Wiki Export | Auto-resolve wiki nodes |
| 🗂️ Wiki Batch Export | Recursively export entire wiki space with hierarchy |
| ✍️ Document Writing | Create docs, append Markdown, update specific blocks |
| 📰 WeChat Import/Export | Export WeChat articles or create Feishu docs from them |
| 🌐 Browser-Based Export | Export public docs or docs accessible in the current browser session, with local assets |
| ☁️ Drive Management | List files, delete files, manage permissions, clear files |
| 🗄️ Database Schema | Export APaaS database structure to Markdown |
| 🧷 Local Asset Download | Images and attachments saved locally with relative paths |
| 🔐 Auth | Auto tenant_access_token (recommended) or OAuth 2.0 |
| 🎨 Beautiful TUI | Terminal UI powered by Textual |
This tool currently supports exporting the following Feishu/Lark document components:
| Category | Features | Status | Notes |
|---|---|---|---|
| Basic Text | Headings, Paragraphs, Lists, Tasks (Todo), Code Blocks, Quotes | ✅ | Fully Supported |
| Formatting | Bold, Italic, Strikethrough, Underline, Links, @Mentions | ✅ | Fully Supported |
| Layout | Columns, Callouts, Dividers | ✅ | Fully Supported |
| Tables | Native Tables | ✅ | Export to Markdown/HTML |
| Media | Images, Drawing Boards | ✅ | Drawing boards exported as images |
| Embedded | Spreadsheets (Sheets), Bitable | ✅ | Sheets support rich-text cells and display/formula modes |
| Special | Synced Blocks, Add-ons Blocks | ⚠️ | Synced blocks support original blocks within the same doc only |
| Files | Attachments | ✅ | Local download when possible, temp link fallback |
export-browser requires Playwright:
pip install playwright
playwright install chromium
# Export single document to specific directory
feishu-docx export "https://xxx.feishu.cn/docx/xxx" -o ./docs
# Choose display values or formulas for Sheets (affects Sheet and embedded Sheet only)
feishu-docx export "https://xxx.feishu.cn/wiki/xxx" --table md --sheet-value-mode display
feishu-docx export "https://xxx.feishu.cn/wiki/xxx" --table md --sheet-value-mode formula
# Export a public or browser-readable doc in a real browser session
feishu-docx export-browser "https://xxx.larkoffice.com/wiki/xxx" -o ./browser_docs
# Export with existing Playwright storage state
feishu-docx export-browser "https://xxx.larkoffice.com/wiki/xxx" --storage-state ./storage_state.json
# Batch export entire wiki space (preserves hierarchy)
feishu-docx export-wiki-space <space_id_or_url> -o ./wiki_backup --max-depth 5
# Export APaaS database schema
feishu-docx export-workspace-schema <workspace_id> -o ./database_schema.md
# Export WeChat article to Markdown
feishu-docx export-wechat "https://mp.weixin.qq.com/s/xxxxxx"
# Fetch a WeChat article and create a Feishu doc
feishu-docx create --url "https://mp.weixin.qq.com/s/xxxxxx"
# List app cloud-space documents in tenant mode
feishu-docx drive ls --type docx
# Manage public permission of a document
feishu-docx drive perm-show "https://xxx.feishu.cn/docx/xxx"
feishu-docx drive perm-set "https://xxx.feishu.cn/docx/xxx" --share-entity anyone_can_view
# Clear files in cloud space with double confirmation
feishu-docx drive clear --type docx
# Use token directly
feishu-docx export "URL" -t your_access_token
# Launch TUI
feishu-docx tui
from feishu_docx import FeishuExporter
# Initialize (uses tenant_access_token by default)
exporter = FeishuExporter(app_id="xxx", app_secret="xxx")
# Export single document
path = exporter.export("https://xxx.feishu.cn/wiki/xxx", "./output")
# Get content without saving
content = exporter.export_content("https://xxx.feishu.cn/docx/xxx")
# Export a public or browser-readable doc via a real browser session
browser_path = exporter.export_with_browser(
"https://xxx.larkoffice.com/wiki/xxx",
"./browser_output",
)
# Get browser-based export content without saving
browser_content = exporter.export_content_with_browser(
"https://xxx.larkoffice.com/wiki/xxx",
)
# Batch export entire wiki space
result = exporter.export_wiki_space(
space_id="xxx",
output_dir="./wiki_backup",
max_depth=3,
)
print(f"Exported {result['exported']} docs to {result['space_dir']}")
http://127.0.0.1:9527/"docx:document:readonly" # 查看云文档
"wiki:wiki:readonly" # 查看知识库
"drive:drive:readonly" # 查看云空间文件(图片下载)
"sheets:spreadsheet:readonly" # 查看电子表格
"bitable:app:readonly" # 查看多维表格
"board:whiteboard:node:read" # 查看白板
"contact:contact.base:readonly" # 获取用户基本信息(@用户名称)
"offline_access" # 离线访问(获取 refresh_token)
feishu-docx config set --app-id cli_xxx --app-secret xxx
| Tenant Mode (Default) | OAuth Mode | |
|---|---|---|
| Token Type | tenant_access_token |
user_access_token |
| Setup | Configure permissions in Open Platform | Request permissions during OAuth flow |
| User Interaction | ✅ Automatic, no user action needed | ❌ Requires browser authorization |
| Access Scope | Documents the app has permission to | Documents the user has permission to |
| Best For | Server automation, AI Agents | Accessing user's private documents |
Tenant Mode (Recommended for most cases):
# One-time setup
feishu-docx config set --app-id xxx --app-secret xxx
# Export (auto-obtains tenant_access_token)
feishu-docx export "https://xxx.feishu.cn/docx/xxx"
⚠️ Tenant mode requires pre-configuring document permissions in [F
feishu-docx is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by leemysw. 🚀 Feishu/Lark Docs、Sheet、Bitable <-> Markdown | AI Agent-friendly knowledge base exporter and writer with OAuth 2.0, CLI, TUI & Claude Skills support - 飞书文档 <写入/导出> Markdown | AI Agent 友好型导出-写入工具. It has 220 GitHub stars.
Yes. feishu-docx passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/leemysw/feishu-docx" and add it to your Claude Code skills directory (see the Installation section above).
feishu-docx is primarily written in Python. It is open-source under leemysw on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh feishu-docx against similar tools.
No comments yet. Be the first to share your thoughts!