2.2k★by snowshadow
feishu-doc-reader – OpenClaw Skill
feishu-doc-reader is an OpenClaw Skills integration for security workflows. Read and extract content from Feishu (Lark) documents using the official Feishu Open API
Skill Snapshot
| name | feishu-doc-reader |
| description | Read and extract content from Feishu (Lark) documents using the official Feishu Open API OpenClaw Skills integration. |
| owner | snowshadow |
| repository | snowshadow/feishu-doc-reader |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @snowshadow/feishu-doc-reader |
| last updated | Feb 7, 2026 |
Maintainer

name: feishu-doc-reader description: Read and extract content from Feishu (Lark) documents using the official Feishu Open API metadata: {"moltbot":{"emoji":"📄","requires":{"bins":["python3","curl"]}}}
Feishu Document Reader
This skill enables reading and extracting content from Feishu (Lark) documents using the official Feishu Open API.
Configuration
Set Up the Skill
- Create the configuration file at
./reference/feishu_config.jsonwith your Feishu app credentials:
{
"app_id": "your_feishu_app_id_here",
"app_secret": "your_feishu_app_secret_here"
}
- Make sure the scripts are executable:
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).
Usage
Basic Document Reading
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"
Get Detailed Document Blocks (NEW)
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
Supported Document Types
- Docx documents (new Feishu docs): Full content extraction with blocks, metadata, and structure
- Doc documents (legacy): Basic metadata and limited content
- Sheets: Full spreadsheet data extraction with sheet navigation
- Slides: Basic metadata (content extraction requires additional permissions)
Features
Enhanced Content Extraction
- Structured output: Clean JSON with document metadata, content blocks, and hierarchy
- Complete blocks access: Full access to all document blocks including text, tables, images, headings, lists, etc.
- Block hierarchy: Proper parent-child relationships between blocks
- Text extraction: Automatic text extraction from complex block structures
- Table support: Proper table parsing with row/column structure
- Image handling: Image URLs and metadata extraction
- Link resolution: Internal and external link extraction
Block Types Supported
- text: Plain text and rich text content
- heading1/2/3: Document headings with proper hierarchy
- bullet/ordered: List items with nesting support
- table: Complete table structures with cells and formatting
- image: Image blocks with tokens and metadata
- quote: Block quotes
- code: Code blocks with language detection
- equation: Mathematical equations
- divider: Horizontal dividers
- page: Page breaks (in multi-page documents)
Error Handling & Diagnostics
- Detailed error messages: Clear explanations for common issues
- Permission validation: Checks required permissions before making requests
- Token validation: Validates document tokens before processing
- Retry logic: Automatic retries for transient network errors
- Rate limiting: Handles API rate limits gracefully
Security Features
- Secure credential storage: Supports both environment variables and secure file storage
- No credential logging: Credentials never appear in logs or output
- Minimal permissions: Uses only required API permissions
- Access token caching: Efficient token reuse to minimize API calls
Command Line Options
Main Document Reader
# Python script options
python scripts/read_feishu_doc.py --help
# Shell script usage
./scripts/read_doc.sh <doc_token> [doc|sheet|slide]
Blocks Reader (NEW)
# 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
API Permissions Required
Your Feishu app needs the following permissions:
docx:document:readonly- Read document contentdoc:document:readonly- Read legacy document contentsheets:spreadsheet:readonly- Read spreadsheet content
Error Handling
Common errors and solutions:
- 403 Forbidden: Check app permissions and document sharing settings
- 404 Not Found: Verify document token is correct and document exists
- Token expired: Access tokens are valid for 2 hours, refresh as needed
- App ID/Secret invalid: Double-check your credentials in Feishu Open Platform
- Insufficient permissions: Ensure your app has the required API permissions
- 99991663: Application doesn't have permission to access the document
- 99991664: Document doesn't exist or has been deleted
- 99991668: Token expired, need to refresh
Examples
Extract document with full structure
# Read document
./scripts/read_doc.sh "docx_AbCdEfGhIjKlMnOpQrStUv"
Get complete document blocks (NEW)
# Get all blocks with full structure
./scripts/get_blocks.sh "docx_AbCdEfGhIjKlMnOpQrStUv"
# Get specific block details
./scripts/get_blocks.sh "docx_AbCdEfGhIjKlMnOpQrStUv" "blk_xxxxxxxxxxxxxx"
Process spreadsheet data
./scripts/read_doc.sh "sheet_XyZ123AbCdEfGhIj" "sheet"
Extract only text content (Python script)
python scripts/read_feishu_doc.py --doc-token "docx_token" --extract-text-only
Security Notes
- Never commit credentials: Keep app secrets out of version control
- Use minimal permissions: Only request permissions your use case requires
- Secure file permissions: Set proper file permissions on secret files (
chmod 600) - Environment isolation: Use separate apps for development and production
- Audit access: Regularly review which documents your app can access
Troubleshooting
Authentication Issues
- Verify your App ID and App Secret in Feishu Open Platform
- Ensure the app has been published with required permissions
- Check that environment variables or config files are properly set
- Test with the
test_auth.pyscript to verify credentials
Document Access Issues
- Ensure the document is shared with your app or in an accessible space
- Verify the document token format (should start with
docx_,doc_, orsheet_) - Check if the document requires additional sharing permissions
Network Issues
- Ensure your server can reach
open.feishu.cn - Check firewall rules if running in restricted environments
- The script includes retry logic for transient network failures
Blocks-Specific Issues
- Empty blocks response: Document might be empty or have no accessible blocks
- Missing block types: Some block types require additional permissions
- Incomplete hierarchy: Use
--include-childrenflag for complete block tree
References
Feishu Document Reader - Blocks Extraction
This skill provides comprehensive Feishu (Lark) document reading capabilities with full blocks extraction support.
Features
- Full blocks extraction: Get complete document structure including text, tables, images, headings, and more
- Multiple document types: Support for Docx (new), Doc (legacy), Sheets, and Slides
- Secure authentication: Proper token management with caching and refresh
- Error handling: Comprehensive error messages and diagnostics
- Easy integration: Simple command-line interface and Python API
Quick Start
1. Configuration
Create ./reference/feishu_config.json:
{
"app_id": "your_feishu_app_id",
"app_secret": "your_feishu_app_secret"
}
Set proper permissions:
chmod 600 ./reference/feishu_config.json
2. Usage
Get full document blocks (recommended):
# Using shell wrapper
./scripts/get_blocks.sh "docx_your_document_token"
# Using Python directly
python scripts/get_feishu_doc_blocks.py --doc-token "docx_your_document_token" --output-format json
Get simplified text only:
python scripts/get_feishu_doc_blocks.py --doc-token "docx_your_document_token" --extract-text-only
3. Output Format
The full blocks output includes:
document: Document metadata (title, revision, etc.)blocks: Complete block hierarchy with all content typestext_content: Extracted plain text (when requested)
Integration with AI Agents
This skill can be used as a standalone tool or integrated into AI agent workflows:
- Direct execution: Call the script from any AI agent
- Extension tool: Register as an extension for seamless document processing
- Pipeline integration: Combine with other tools for advanced document analysis
API Permissions Required
Your Feishu app needs these permissions in Open Platform:
docx:document:readonly(for new documents)doc:document:readonly(for legacy documents)sheets:spreadsheet:readonly(for spreadsheets)
Security Notes
- Credentials are never logged or exposed in output
- Access tokens are cached and refreshed automatically
- File system access is restricted to prevent path traversal
- Use minimal required permissions for your use case
Troubleshooting
Common Issues
Authentication Failed (401):
- Verify App ID and App Secret in Feishu Open Platform
- Ensure app is published with required permissions
Document Not Found (404):
- Check document token format (should start with
docx_,doc_, orsheet_) - Ensure document is shared with your app
Permission Denied (403):
- Verify required API permissions are granted
- Check if document requires additional sharing settings
Debugging
Enable debug logging:
DEBUG=1 python scripts/get_feishu_doc_blocks.py --doc-token "your_token"
Examples
See USAGE_EXAMPLES.md for detailed examples.
References
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Your Feishu app needs the following permissions: - `docx:document:readonly` - Read document content - `doc:document:readonly` - Read legacy document content - `sheets:spreadsheet:readonly` - Read spreadsheet content
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
Configuration
### Set Up the Skill 1. Create the configuration file at `./reference/feishu_config.json` with your Feishu app credentials: ```json { "app_id": "your_feishu_app_id_here", "app_secret": "your_feishu_app_secret_here" } ``` 2. Make sure the scripts are executable: ```bash 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`).
FAQ
How do I install feishu-doc-reader?
Run openclaw add @snowshadow/feishu-doc-reader in your terminal. This installs feishu-doc-reader into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/snowshadow/feishu-doc-reader. Review commits and README documentation before installing.
