humanpages
Search and hire real humans for tasks — photography, delivery, research, and more
Low-level Feishu document block operations via REST API. Use when feishu_doc built-in actions are insufficient: batch update cells, precise position insert, traverse block tree, table row/column manipulation, image replacement, or any operation requiring direct block-level control. Complements feishu-doc, not a replacement.
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
SkillHub CLI
skillhub install deadblue22/feishu-block-opsInspect the source and compatibility requirements, then follow its installation steps.
Give your agent the source link and ask it to inspect instructions and dependencies before explaining the installation steps.
Direct REST API operations for Feishu cloud documents when the feishu_doc tool's built-in actions don't cover your needs.
| Need | Use |
|---|---|
| Read/write/append document | feishu_doc |
| Create simple table | feishu_doc create_table_with_values |
| Upload image/file | feishu_doc upload_image/upload_file |
| Batch update 200 cells at once | This skill |
| Insert content at exact position | This skill (or feishu-md2blocks) |
| Traverse block tree | This skill |
| Table row/column insert/delete | This skill |
| Merge/unmerge table cells | This skill |
| Replace images in-place | This skill |
| Delete blocks by index range | This skill |
Get tenant access token from OpenClaw config:
import json, urllib.request
def get_feishu_token():
with open(os.path.expanduser("~/.openclaw/openclaw.json")) as f:
c = json.load(f)["channels"]["feishu"]
payload = json.dumps({"app_id": c["appId"], "app_secret": c["appSecret"]}).encode()
req = urllib.request.Request(
"https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",
data=payload, headers={"Content-Type": "application/json"}, method="POST")
return json.loads(urllib.request.urlopen(req).read())["tenant_access_token"]
All API calls use header: Authorization: Bearer {token}
| Operation | Limit |
|---|---|
| Read (GET) | 5 req/sec per app |
| Write (POST/PATCH/DELETE) | 3 req/sec per app, 3 req/sec per document |
Use time.sleep(0.35) between write calls. For reads, time.sleep(0.25).
Base URL: https://open.feishu.cn/open-apis/docx/v1/documents
GET /docx/v1/documents/{doc}/blocks/{block_id}
Returns single block with full content (type, elements, children IDs, styles).
These signals come from indexed source analysis and may lag behind changes. Check the current source files.
# Feishu Block Operations
Direct REST API operations for Feishu cloud documents when the `feishu_doc` tool's built-in actions don't cover your needs.
## When to Use This (vs feishu_doc)
| Need | Use |
|------|-----|
| Read/write/append document | `feishu_doc` |
| Create simple table | `feishu_doc` `create_table_with_values` |
| Upload image/file | `feishu_doc` `upload_image`/`upload_file` |
| **Batch update 200 cells at once** | **This skill** |
| **Insert content at exact position** | **This skill** (or `feishu-md2blocks`) |
| **Traverse block tree** | **This skill** |
| **Table row/column insert/delete** | **This skill** |
| **Merge/unmerge table cells** | **This skill** |
| **Replace images in-place** | **This skill** |
| **Delete blocks by index range** | **This skill** |
## Authentication
Get tenant access token from OpenClaw config:
```python
import json, urllib.request
def get_feishu_token():
with open(os.path.expanduser("~/.openclaw/openclaw.json")) as f:
c = json.load(f)["channels"]["feishu"]
payload = json.dumps({"app_id": c["appId"], "app_secret": c["appSecret"]}).encode()
req = urllib.request.Request(
"https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",
data=payload, headers={"Content-Type": "application/json"}, method="POST")
return json.loads(urllib.request.urlopen(req).read())["tenant_access_token"]
```
All API calls use header: `Authorization: Bearer {token}`
## Rate Limits
| Operation | Limit |
|-----------|-------|
| Read (GET) | 5 req/sec per app |
| Write (POST/PATCH/DELETE) | 3 req/sec per app, 3 req/sec per document |
Use `time.sleep(0.35)` between write calls. For reads, `time.sleep(0.25)`.
## API Reference
Base URL: `https://open.feishu.cn/open-apis/docx/v1/documents`
### 1. Get Block
```
GET /docx/v1/documents/{doc}/blocks/{block_id}
```
Returns single block with full content (type, elements, children IDs, styles).
### 2. Get Children (with optional full tree)
```...Search and hire real humans for tasks — photography, delivery, research, and more
Reusable skill templates for OpenClaw AI agents. Templates for API integration, data processing, web scraping, CLI tools, and file processing.
Query historical crypto market data from 0xArchive across Hyperliquid, Lighter.xyz, and HIP-3. Covers orderbooks, trades, candles, funding rates, open interest, liquidations, and data quality. Use when the user...
Install, configure, and manage 1-SEC — an open-source, all-in-one cybersecurity platform (16 modules, single binary) on Linux servers and VPS instances. Use when the user asks to secure a server, install securi...