Home
Softono
feishu-docx

feishu-docx

Open source MIT Python
215
Stars
27
Forks
5
Issues
3
Watchers
1 month
Last Commit

About feishu-docx

feishu-docx is a comprehensive command-line and terminal user interface tool designed for exporting, importing, and managing Feishu and Lark knowledge bases. It converts documents, spreadsheets, Bitables, and wiki spaces into Markdown format optimized for AI agents. The software supports reading, writing, and updating content, including creating new docs, appending text, and modifying specific blocks. Key capabilities include bidirectional synchronization with WeChat articles for importing or exporting content, browser-based session exporting, and local asset management for images and attachments. It offers robust authentication via OAuth 2.0 or automatic tenant access token generation with refresh handling. The tool features a dual interface with a standard CLI and a modern, interactive Textual-based TUI. It is specifically built to integrate with AI coding assistants like Claude Code, Cursor, and OpenCode through dedicated skill definitions, enabling agents to retrieve context, search internal databases, an

Platforms

Web Self-hosted

Languages

Python

Links

feishu-docx

Feishu knowledge base export, writing, and cloud-space management tool with Markdown, WeChat import, CLI, TUI, and OAuth 2.0

PyPI version Python 3.11+ License: MIT

ไธญๆ–‡ | English

feishu-docx TUI

๐Ÿ†• Recent Updates (v0.2.6)

  • Added Add-ons Block rendering support
  • Sheet export now handles rich-text cells instead of emitting Python list/dict strings
  • export / export-wiki-space now support --sheet-value-mode for display values or formulas

๐ŸŽฏ Why feishu-docx?

Let AI Agents read, write, and manage your Feishu/Lark knowledge base.

  • ๐Ÿค– Built for AI โ€” Works seamlessly with Claude/GPT Skills for document retrieval
  • ๐Ÿ“„ Full Coverage โ€” Documents, Spreadsheets, Bitables, Wiki nodes, and WeChat articles
  • โœ๏ธ Write Back Support โ€” Create docs, append content, and update specific blocks
  • โ˜๏ธ Cloud-Space Management โ€” List files, delete files, manage permissions, clear files safely
  • ๐Ÿ” Authentication โ€” One-time auth, automatic token refresh
  • ๐ŸŽจ Dual Interface โ€” CLI + Beautiful TUI (Textual-based)
  • ๐Ÿ“ฆ Zero Config โ€” pip install and start exporting

โšก Quick Start (30 seconds)

# 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

๐Ÿค– Skills Support

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:

  • ๐Ÿ“– Read Feishu knowledge base as context
  • ๐Ÿ” Search and reference internal documents
  • ๐Ÿ“ Create docs, append content, and update specific blocks

โœจ Features

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

โœ… Supported Blocks

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

๐Ÿ“– Usage

Use Cases

  • Export Feishu docs, Sheets, Bitables, and Wiki nodes to Markdown
  • Export a WeChat article to Markdown
  • Create a Feishu doc directly from a WeChat article URL
  • Create, append, or update Feishu document content
  • Manage files and permissions in app cloud space or personal cloud space

CLI

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

Python API

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']}")

๐Ÿ” Feishu App Setup

  1. Create app at Feishu Open Platform
  2. Add redirect URL: http://127.0.0.1:9527/
  3. Request permissions:
"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๏ผ‰
  1. Save credentials:
feishu-docx config set --app-id cli_xxx --app-secret xxx

๐Ÿ”‘ Authentication Modes

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 Feishu Open Platform โ†’ App Permissions.

Cloud space management (tenant/user):

# Tenant mode: manage files in app cloud space
feishu-docx drive ls --type docx

# OAuth mode: manage files in personal cloud space
feishu-docx drive ls --auth-mode oauth --type docx

๐Ÿ“Ž Feishu separates cloud space by token type: tenant_access_token maps to app cloud space, and user_access_token maps to personal cloud space. App cloud space resources cannot be managed from the UI and should be managed through Drive/File APIs.

OAuth Mode (For user-level access):

# One-time setup
feishu-docx config set --app-id xxx --app-secret xxx --auth-mode oauth
feishu-docx auth  # Opens browser for authorization

# Export (uses cached user_access_token)
feishu-docx export "https://xxx.feishu.cn/docx/xxx"

๐Ÿ’ก OAuth mode requests permissions during the authorization flow, no pre-configuration needed.


๐Ÿ“– Commands

Command Description
export <URL> Export single document to Markdown
export-browser <URL> Export a public or browser-readable doc in a real browser session
export-wiki-space <space_id> Batch export wiki space with hierarchy
export-workspace-schema <id> Export APaaS database schema
export-wechat <URL> Export WeChat article to Markdown
create <title> Create new Feishu document (--url supported)
drive ls List files in app/user cloud space
drive rm <TOKEN> Delete a file from cloud space
drive perm-show <TOKEN> Show public permission settings
drive perm-set <TOKEN> Update public permission settings
drive perm-members <TOKEN> List permission members
drive perm-add <TOKEN> Add a permission member
drive perm-update <TOKEN> Update a permission member
drive perm-rm <TOKEN> Remove a permission member
drive clear Clear files with double confirmation
write <URL> Append Markdown content to document
update <URL> Update specific block in document
auth OAuth authorization
tui Launch TUI interface
config set Set credentials
config show Show configuration
config clear Clear cache

๐Ÿ“š Documentation Strategy

  • README: overview, quick start, and command index
  • docs/*.md: topic-focused guides for more complex workflows

Currently available:


๐Ÿ—บ๏ธ Roadmap

  • [x] Document/Sheet/Wiki export
  • [x] OAuth 2.0 + Token refresh
  • [x] TUI interface
  • [x] Claude Skills support
  • [x] Batch export entire wiki space
  • [x] Write to Feishu (create/update docs)
  • [x] Browser-based export with local assets

๐Ÿ“œ Changelog

See CHANGELOG.md for version history.

๐Ÿ“š More Docs


๐Ÿ“„ License

MIT License - See LICENSE


โญ Star this repo if you find it helpful!