Install
openclaw skills install @binhuatochina/tech-news-dailyopenclaw skills install @binhuatochina/tech-news-daily版本: 0.4.0(数据源切换为 AIHOT 单站,彻底解决 AI overload 问题;时效从一周缩短为近3天;cron 从每2天改为每天;飞书文档存入「科技新闻日报」知识库目录,node:
Iv9UwDW5viSJDWk12j7cBazYn8b)
v0.4.0 更新说明:
每日从 AIHOT(aihot.virxact.com)读取已聚合整理的 AI/科技热榜,整理生成报告,同步到本地文件和飞书文档。
AIHOT(aihot.virxact.com) — AI 行业动态聚合站,每日提供精选热榜和日报。
为什么用 AIHOT:
使用 tavily_extract 读取 AIHOT /daily 页面,抓取近3天所有新闻:
URL: https://aihot.virxact.com/daily
query: "AI 科技 新闻 热榜 近3天"
extract_depth: "advanced"
chunks_per_source: 5
时效范围:过去3天(当日 + 前2天),确保内容充实。
AIHOT 已有分类(模型发布/更新、产品发布/更新、行业动态、论文研究、技巧与观点),直接采用其分类,并根据内容补充来源和标签。
整理后的文件按以下分类组织:
保存路径:memory/YYYY-MM-DD-tech-news.md
文件格式要求:
必须用两步法:先创建 wiki 节点,再写入内容。不要用 docs +create --wiki-node(该方式创建的文档编码有问题且位置可能不对)。
正确流程:
# 步骤 1:用 wiki +node-create 在「科技新闻日报」节点下创建 wiki 节点(返回 node_token 和 obj_token)
lark-cli wiki +node-create \
--space-id "7621391289904516315" \
--parent-node-token "Iv9UwDW5viSJDWk12j7cBazYn8b" \
--title "科技新闻日报 | YYYY年MM月DD日"
# 返回示例:
# {"ok":true,"data":{"node_token":"OnBrwGTJciHcOjk90w7c1cMhn9c","obj_token":"JUqNdp3uSodBX1xF66fcNhcHnFh",...}}
# → 从返回中提取 obj_token(即 doc_token)
# 步骤 2:将本地 markdown 文件转成 XML 后,用 docs +update 写入文档
# 重要:内容必须用 XML 格式(--doc-format xml),禁止用 --doc-format markdown(会导致中文乱码)
# ⚠️ 重要:XML 内容必须以 <title>标题</title> 开头,否则文档标题默认为「Untitled」
# 格式:<title>科技新闻日报 | YYYY年MM月DD日</title><h1>科技新闻日报 | YYYY年MM月DD日</h1>...
# markdown 中的换行用 <br/>,< 用 <,> 用 >,& 用 &
lark-cli docs +update \
--api-version v2 \
--doc "<obj_token>" \
--command overwrite \
--doc-format xml \
--content @memory/YYYY-MM-DD-tech-news.xml
# 步骤 3:授予张公子 full_access 权限(用 Open API 直接调,绕过 lark-cli 交互限制)
ACCESS_TOKEN=$(curl -s -X POST 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal' \
-H 'Content-Type: application/json' \
-d '{"app_id": "cli_a94b4a1e43781cc7", "app_secret": "NALleHubGWREfZJkXpYizwszPIBFIBq7"}' \
| python3 -c "import sys,json; print(json.load(sys.stdin).get('tenant_access_token',''))")
curl -s -X POST 'https://open.feishu.cn/open-apis/drive/v1/permissions' \
-H 'Authorization: Bearer '$ACCESS_TOKEN \
-H 'Content-Type: application/json' \
-d '{
"type": "docx",
"token": "<obj_token>",
"member_id": "ou_d8ace8a146610ca26bc07d8e68a5620f",
"member_type": "openid",
"perm": "full_access"
}'
内容转 XML 注意事项:
<title>标题</title> 元素,飞书会将其设为文档标题;否则默认为「Untitled」<h1>正文一级标题</h1> 作为正文开篇< → <,> → >,& → &,换行 → <br/>)@memory/2026-05-15-tech-news.xml),不能是绝对路径--doc-format markdown 写入(会导致中文乱码)飞书知识库存档目标(v0.4.0):
7621391289904516315Iv9UwDW5viSJDWk12j7cBazYn8b(科技新闻日报目录)wiki +node-create 返回的 node_tokenwiki +node-create 返回的 obj_tokenFallback(当 lark-cli 不可用时):
如果 wiki +node-create 调用失败,自动切换到 Feishu Open API 直接调用:
# 1. 获取 tenant_access_token
ACCESS_TOKEN=$(curl -s -X POST 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal' \
-H 'Content-Type: application/json' \
-d '{"app_id": "cli_a94b4a1e43781cc7", "app_secret": "<FEISHU_APP_SECRET>"}' \
| python3 -c "import sys,json; print(json.load(sys.stdin).get('tenant_access_token',''))")
# 2. 在知识库「科技新闻日报」节点下创建 wiki 节点
curl -s -X POST 'https://open.feishu.cn/open-apis/wiki/v2/spaces/7621391289904516315/nodes' \
-H 'Authorization: Bearer '$ACCESS_TOKEN \
-H 'Content-Type: application/json' \
-d '{"parent_node_token": "Iv9UwDW5viSJDWk12j7cBazYn8b", "node_type": "origin", "obj_type": "docx", "title": "科技新闻日报 | YYYY年MM月DD日"}'
# → 获得 obj_token
# 3. 写入文档内容(batch create blocks,XML 格式)
curl -s -X POST 'https://open.feishu.cn/open-apis/docx/v1/documents/<obj_token>/blocks/<root_block_id>/children' \
-H 'Authorization: Bearer '$ACCESS_TOKEN \
-H 'Content-Type: application/json' \
-d '{"children": [...]}'
⚠️ Fallback 需要
app_secret,优先确保 lark-cli 可用——只有当 lark-cli 不可用时才走 fallback。
只发链接,不发完整报告内容。
发送格式:
📰 科技新闻日报 | YYYY年MM月DD日
🔗 飞书文档:https://feishu.cn/docx/xxxxx
💾 本地文件:memory/YYYY-MM-DD-tech-news.md
使用 message(action="send", channel="feishu", target="chat:oc_d591432cedf9a00c01878c24754cb050", message="...")
在本地文件末尾添加:
## 📋 同步记录
- ✅ 本地文件:`memory/YYYY-MM-DD-tech-news.md`
- ✅ 飞书文档:`科技新闻日报 | YYYY年MM月DD日`
- 文档链接:https://feishu.cn/docx/xxxxx
- 知识库:个人知识库
# 科技新闻日报 | YYYY年MM月DD日
> 整理时间:YYYY-MM-DD HH:MM GMT+8
> 来源:AIHOT(aihot.virxact.com)
---
## 模型发布/更新
### [新闻标题]
- 摘要:[1-2句话描述]
- 来源:[媒体名称]
- 链接:[URL]
[...]
## 产品发布/更新
[...]
## 行业动态
[...]
## 论文研究
[...]
## 技巧与观点
[...]
---
## 📊 数据总览
- 模型发布/更新:X 条
- 产品发布/更新:X 条
- 行业动态:X 条
- 论文研究:X 条
- 技巧与观点:X 条
- 合计:XX 条
---
## 🔗 关键来源
- AIHOT:https://aihot.virxact.com
[...]
---
整理:牛管家 | 数据来源:AIHOT
## 📋 同步记录
- ✅ 本地文件:`memory/YYYY-MM-DD-tech-news.md`
- ✅ 飞书文档:`科技新闻日报 | YYYY年MM月DD日`
- 文档链接:https://feishu.cn/docx/xxxxx
- 知识库:个人知识库
references/feishu-doc.mdowner_open_id 确保用户有编辑权限YYYY-MM-DD-tech-news.md 格式,便于排序检索由于 token 消耗大幅降低(不再做全网搜索),v0.4.0 不再需要子会话拆分,整个流程在主会话完成即可。
1. 使用 tavily_extract 读取 AIHOT /daily 页面
2. 整理分类,写入本地文件 memory/YYYY-MM-DD-tech-news.md
3. 创建飞书 wiki 节点 + 写入文档内容
4. 发送飞书文档链接到群
5. 更新本地文件同步记录,标记完成
进度 Checkpoint:每步必须写 checkpoint
在每个关键步骤完成后,立即将进度写入 checkpoint 文件 memory/YYYY-MM-DD-tech-news-checkpoint.json:
{
"step": 4,
"stepName": "飞书文档创建完成",
"feishuDocUrl": "https://feishu.cn/docx/xxx",
"localFile": "memory/2026-07-10-tech-news.md",
"timestamp": 1752124800000,
"pendingAction": "发送飞书链接"
}
步骤说明:
⚠️ Fallback 触发条件:
当 feishu_wiki 或 feishu_doc 工具调用失败(返回 ToolNotFoundError 或类似错误),自动切换到 direct Feishu Open API 调用(见第四步 fallback 说明)。
⚠️ 关键规则(v0.4.0):
oc_d591432cedf9a00c01878c24754cb050📰 科技新闻日报 | YYYY年MM月DD日\n🔗 飞书文档:https://feishu.cn/docx/xxxxx\n💾 本地文件:memory/YYYY-MM-DD-tech-news.mdmessage(action="send", channel="feishu", target="chat:oc_d591432cedf9a00c01878c24754cb050", message="...")step: done