feishu-doc-reader/SKILL.md
Read and extract content from Feishu (Lark) documents using the official Feishu Open API
npx skillsauth add atxinsky/skills feishu-doc-readerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill enables reading and extracting content from Feishu (Lark) documents using the official Feishu Open API.
./reference/feishu_config.json with your Feishu app credentials:{
"app_id": "your_feishu_app_id_here",
"app_secret": "your_feishu_app_secret_here"
}
chmod +x scripts/read_doc.sh
chmod +x scripts/get_blocks.sh
Security Note: The configuration file should be kept secure and not committed to version control. Consider using proper file permissions (chmod 600 ./reference/feishu_config.json).
To read a Feishu document, you need the document token (found in the URL: https://example.feishu.cn/docx/DOC_TOKEN).
Using the shell script (recommended):
# Make sure environment variables are set first
./scripts/read_doc.sh "your_doc_token_here"
# Or specify document type explicitly
./scripts/read_doc.sh "docx_token" "doc"
./scripts/read_doc.sh "sheet_token" "sheet"
For complete document structure with all blocks, use the dedicated blocks script:
# Get full document blocks structure
./scripts/get_blocks.sh "docx_AbCdEfGhIjKlMnOpQrStUv"
# Get specific block by ID
./scripts/get_blocks.sh "docx_token" "block_id"
# Get blocks with children
./scripts/get_blocks.sh "docx_token" "" "true"
Using Python directly for blocks:
python scripts/get_feishu_doc_blocks.py --doc-token "your_doc_token_here"
python scripts/get_feishu_doc_blocks.py --doc-token "docx_token" --block-id "block_id"
python scripts/get_feishu_doc_blocks.py --doc-token "docx_token" --include-children
# Python script options
python scripts/read_feishu_doc.py --help
# Shell script usage
./scripts/read_doc.sh <doc_token> [doc|sheet|slide]
# Get full document blocks
./scripts/get_blocks.sh <doc_token>
# Get specific block
./scripts/get_blocks.sh <doc_token> <block_id>
# Include children blocks
./scripts/get_blocks.sh <doc_token> "" true
# Python options
python scripts/get_feishu_doc_blocks.py --help
Your Feishu app needs the following permissions:
docx:document:readonly - Read document contentdoc:document:readonly - Read legacy document contentsheets:spreadsheet:readonly - Read spreadsheet contentCommon errors and solutions:
# Read document
./scripts/read_doc.sh "docx_AbCdEfGhIjKlMnOpQrStUv"
# Get all blocks with full structure
./scripts/get_blocks.sh "docx_AbCdEfGhIjKlMnOpQrStUv"
# Get specific block details
./scripts/get_blocks.sh "docx_AbCdEfGhIjKlMnOpQrStUv" "blk_xxxxxxxxxxxxxx"
./scripts/read_doc.sh "sheet_XyZ123AbCdEfGhIj" "sheet"
python scripts/read_feishu_doc.py --doc-token "docx_token" --extract-text-only
chmod 600)test_auth.py script to verify credentialsdocx_, doc_, or sheet_)open.feishu.cn--include-children flag for complete block treedevelopment
Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.
testing
Use when creating new skills, editing existing skills, or verifying skills work before deployment
development
Use when you have a spec or requirements for a multi-step task, before touching code
documentation
Create detailed implementation plan with bite-sized tasks