Source Code
Lark Suite Wiki
Manage and export Lark Suite (Feishu) Wiki/Knowledge Base documents with recursive sync and incremental updates.
Prerequisites
- Create a Lark/Feishu app at https://open.larksuite.com/console
- Enable permissions:
docs:doc:readdrive:drive:readwiki:wiki:read
- Publish the app and authorize it to access your wiki
- Set environment variables (or edit script defaults):
export LARK_APP_ID="cli_xxxxxxxx" export LARK_APP_SECRET="xxxxxxxx"
Commands
List Wiki Spaces
larksuite-wiki spaces
Read Document (with subdocument links)
larksuite-wiki read <doc_id_or_url>
Export Single Document
larksuite-wiki export <doc_id_or_url> --output ./docs/
Show Document Tree Structure
larksuite-wiki tree <doc_id_or_url>
Sync Entire Wiki (Recursive Export)
# First sync - exports all documents
larksuite-wiki sync <doc_id_or_url> --output ./lark-wiki/
# Incremental sync - only exports changed documents
larksuite-wiki sync <doc_id_or_url> --output ./lark-wiki/
# Force re-export everything
larksuite-wiki sync <doc_id_or_url> --output ./lark-wiki/ --force
Features
1. β Batch Export
Export entire knowledge base with one command.
2. β Recursive Subdocument Export
Automatically follows and exports all linked subdocuments.
3. β Preserves Directory Structure
Creates nested folders matching your wiki structure:
lark-wiki/
βββ 01_ι¦ι‘΅/
β βββ 01_ι¦ι‘΅.md
β βββ 01_ζ₯εΈΈε€η/
β βββ 01_ζ₯εΈΈε€η.md
β βββ ...
βββ 02_δΊθͺιθεζ/
β βββ ...
4. β Incremental Sync
Tracks document revisions and only exports changed documents:
- Saves sync state to
.lark-sync-state.json - Compares revision IDs
- Skips unchanged documents
Quick Start
Export your entire wiki
# Get your wiki root document ID from the URL
# https://xxx.larksuite.com/wiki/TDCZweBJ2iMFO4kI1LAlSE62gnd
# Sync everything
python3 larksuite-wiki.py sync TDCZweBJ2iMFO4kI1LAlSE62gnd --output ./my-wiki/
Daily incremental sync
# Run daily - only exports changed documents
python3 larksuite-wiki.py sync TDCZweBJ2iMFO4kI1LAlSE62gnd --output ./my-wiki/
Output Structure
Each document gets its own folder:
- Main
.mdfile - Subfolders for child documents
- Numbered prefixes for ordering (01_, 02_, etc.)
API Reference
- Lark Open Platform: https://open.larksuite.com/
- Wiki API: https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/wiki-v1/space/overview
- Docx API: https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/docx-v1/document/overview
Notes
- Documents must be explicitly shared with your app
- Some block types may not convert perfectly to Markdown
- Large wikis with many subdocuments may take time to sync
- Sync state is saved locally for incremental updates