stock-data-skill
OpenClaw Skill for stock data analysis
Fetch and parse Feishu merged/forwarded messages (合并转发消息). Activate when a Feishu message shows "Merged and Forwarded Message" with no readable content, or when you need to retrieve sub-messages from a merge_forward message type.
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
SkillHub CLI
skillhub install deadblue22/feishu-merged-msg打开来源仓库,查看说明和兼容环境后,按来源提供的命令或步骤安装。
将来源链接提供给你的 Agent,让它先读取说明、核对依赖,并向你说明将执行的安装步骤。
Feishu's merge_forward messages appear as "Merged and Forwarded Message" with no content in the bot API. Use the Feishu REST API to retrieve the actual sub-messages.
"Merged and Forwarded Message"
msg_type is merge_forward
The Feishu GET /open-apis/im/v1/messages/{message_id} endpoint returns the parent message plus all sub-messages in data.items[]. Sub-messages have upper_message_id pointing to the parent.
Get the message_id of the merged message (from inbound context or replied message metadata).
Run the fetch script:
bash <skill_dir>/scripts/fetch_merged_msg.sh <message_id> <app_id> <app_secret>
app_id / app_secret: from OpenClaw config at .channels.feishu in openclaw.json
python3 -c "import json; d=json.load(open('/root/.openclaw/openclaw.json')); c=d['channels']['feishu']; print(c.get('appId',''), c.get('appSecret',''))"
Parse the JSON response:
data.items[0] is the parent (merge_forward) messagedata.items[1:] are the sub-messages in chronological orderbody.content with the actual text/post contentmentions[] maps @_user_N placeholders to real namessender.id identifies who sent each sub-messageSummarize the conversation thread for the user.
im:message:readonly scope on the Feishu app.image_key references; they cannot be directly displayed but can be described from context.chat_id); the original chat context may differ from the current group.这些信息来自收录时的来源分析,可能滞后;使用前请核对最新来源文件。
# Feishu Merged Message Fetcher
Feishu's merge_forward messages appear as "Merged and Forwarded Message" with no content in the bot API. Use the Feishu REST API to retrieve the actual sub-messages.
## When to Use
- Message body contains only `"Merged and Forwarded Message"`
- `msg_type` is `merge_forward`
- User asks about a forwarded/合并转发 message you can't read
## How It Works
The Feishu `GET /open-apis/im/v1/messages/{message_id}` endpoint returns the parent message plus all sub-messages in `data.items[]`. Sub-messages have `upper_message_id` pointing to the parent.
## Steps
1. Get the `message_id` of the merged message (from inbound context or replied message metadata).
2. Run the fetch script:
```bash
bash <skill_dir>/scripts/fetch_merged_msg.sh <message_id> <app_id> <app_secret>
```
- `app_id` / `app_secret`: from OpenClaw config at `.channels.feishu` in `openclaw.json`
- If credentials are not readily available, extract them:
```bash
python3 -c "import json; d=json.load(open('/root/.openclaw/openclaw.json')); c=d['channels']['feishu']; print(c.get('appId',''), c.get('appSecret',''))"
```
3. Parse the JSON response:
- `data.items[0]` is the parent (merge_forward) message
- `data.items[1:]` are the sub-messages in chronological order
- Each sub-message has `body.content` with the actual text/post content
- `mentions[]` maps `@_user_N` placeholders to real names
- `sender.id` identifies who sent each sub-message
4. Summarize the conversation thread for the user.
## Notes
- The API requires `im:message:readonly` scope on the Feishu app.
- Images inside sub-messages show as `image_key` references; they cannot be directly displayed but can be described from context.
- Sub-messages may come from different chats (check `chat_id`); the original chat context may differ from the current group.OpenClaw Skill for stock data analysis
Search and hire real humans for tasks — photography, delivery, research, and more
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 discove...
Reusable skill templates for OpenClaw AI agents. Templates for API integration, data processing, web scraping, CLI tools, and file processing.