Overview
- Skill Key
- deadblue22/feishu-msg-reader
- Author
- deadblue22
- Source Repo
- openclaw/skills
- Version
- -
- Source Path
- skills/deadblue22/feishu-msg-reader
- Latest Commit SHA
- e4ca3a33d105476ddb0e96ee1cacf74cdc6e9395
Fetch Feishu message content by message_id, with optional thread context. Activate when: needing to read the content of a specific Feishu message by its message_id, needing thread context around a message, or encountering "[Interactive Card]" placeholder text. Handles all msg_types: text, post, interactive (fallback only), image, merge_forward.
Stars
0
Installs
0
Status
ACTIVE
Visibility
PUBLIC
直接复制以下提示词,发送给你的 AI 助手即可完成安装。
请先检查是否已安装 SkillHub 商店,若未安装,请根据 https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/skillhub.md 安装 SkillHub 商店,然后安装 feishu-message 技能。 若已安装,则直接安装 feishu-message 技能。
# Feishu Message Fetcher
Fetch any Feishu message content by `message_id` using the IM API, with optional thread context.
## Known Limitation
**Interactive cards** (`msg_type: interactive`): The Feishu GET message API (`/im/v1/messages/{id}`) only returns **fallback/degraded text** in `body.content`, not the full card JSON. This is a Feishu platform limitation — there is no API to retrieve the rendered card structure after sending.
**Workaround**: Use `--thread` to fetch the entire thread context. The interactive card is usually a reply to a text/post message that contains the actual content. Reading the thread gives you the full picture.
## Usage
```bash
# Fetch a single message
python3 scripts/fetch_message.py <message_id>
# Fetch with thread context (root message + all replies in thread)
python3 scripts/fetch_message.py <message_id> --thread
# Raw API response
python3 scripts/fetch_message.py <message_id> --raw
```
## Auth
Automatic — reads `appId`/`appSecret` from `~/.openclaw/openclaw.json`. Alternatively set `FEISHU_APP_ID` + `FEISHU_APP_SECRET` env vars, or pass `--token <tenant_access_token>`.
## Output
JSON with: `message_id`, `msg_type`, `sender_id`, `sender_type`, `chat_id`, `create_time`, `root_id`, `parent_id`, `content` (parsed).
With `--thread`: adds `thread` array (all messages in the same thread, sorted chronologically) and `thread_count`.
## Typical Workflow
When you encounter `[Interactive Card]` in a replied-to message:
1. Get the message_id from inbound metadata (`has_reply_context`, parent message info)
2. Run `fetch_message.py <parent_message_id> --thread`
3. The thread context will contain the text/post messages with actual content
4. Use that content to fulfill the user's request
openstockdata
OpenClaw Skill for stock data analysis
capt-marbles
Generative Engine Optimization (GEO) for AI search visibility. Optimize content to appear in ChatGPT, Perplexity, Claude, and Google AI Overviews. Use when optimizing websites, pages, or content for LLM discoverability and citation.
capgoblin
Access unsecured credit lines for AI agents on the Arc Network using the Credex Protocol. Use for borrowing USDC against reputation, repaying debt to grow credit limits, providing liquidity as an LP, or managing cross-chain USDC via Circle Bridge. Triggers on "borrow from credex", "repay debt", "deposit to pool", "check credit status", "provide liquidity", or any credit/lending task on Arc.
capt-marbles
Control PhantomBuster automation agents via API. List agents, launch automations, get output/results, check status, and abort running agents. Use when the user needs to run LinkedIn scraping, Twitter automation, lead generation phantoms, or any PhantomBuster workflow.
camelsprout
DuckDB CLI specialist for SQL analysis, data processing and file conversion. Use for SQL queries, CSV/Parquet/JSON analysis, database queries, or data conversion. Triggers on "duckdb", "sql", "query", "data analysis", "parquet", "convert data".
camohiddendj
DuckDuckGo HTML search scraper CLI with JSON, CSV, OpenSearch, markdown, and compact outputs.