Skill: binhuatochina/tech-news-daily-report (version 0.3.0)

--- name: tech-news-daily version: 0.3.0 description: 科技新闻日报技能。每日科技新闻热榜整理与报告生成。当用户说"科技新闻日报"、"整理今日科技新闻"、"生成科技新闻热榜"、"tech-news-daily"、"TechNews-Daily-Report"或类似表达时触发。功能包括：(1) 使用 Tavily 搜索引擎近7天科技/AI 新闻进行搜索；(2) 按相关度和推荐度评分整理；(3) 自动写入本地 markdown 文件；(4) 同步创建飞书文档到个人知识库；(5) 直接发送报告到飞书群；(6) 生成主题关联图帮助快速定位知识节点。 --- # 科技新闻日报 | Tech News Daily > **版本：** 0.3.0（主题关联图 · 快速定位知识节点） ## 概述 > **ClawHub slug：** `TechNews-Daily-Report` 按日收集、整理并生成科技新闻热榜报告，包含相关度评分、推荐度评分、来源链接，自动同步到本地文件和飞书文档。 --- ## 工作流程 ### 第一步：搜索新闻 使用 `tavily_search` 并行搜索中英文科技新闻： ``` 搜索词（英文）: "tech news today April YYYY" + "AI artificial intelligence" 搜索词（中文）: "科技新闻 YYYY年MM月DD日 热榜" + "AI 人工智能 科技 最新消息" 时间范围: time_range="week" （近7天，过滤掉更早的新闻） 结果数量: max_results=10~15 ``` **并行搜索策略：** - 英文 TechCrunch / The Guardian / Fortune / Ars Technica - 中文 新华网 / 证券时报 / 行业垂直媒体 ### 第二步（插入）：合并去重 **先合并，再去重，最后评分。** 将所有搜索结果（英文 + 中文）合并后，执行两轮去重： **第一轮：URL 精准去重** - 同一 URL 只保留一条（不同搜索词可能返回相同链接） - 保留信息最完整的那条（摘要更长、来源更权威优先） **第二轮：语义去重（核心事实去重 + 独立价值保留）** **两步判断，先去重，后判断是否保留独立价值：** **Step A — 识别「同一核心事实」的重复：** 提取每条新闻的**核心三元组**（主体 + 动作 + 客体），判断两条新闻是否属于同一核心事实： - 示例：微软(主体) 投资(动作) 日本100亿美元(客体) - 中文"微软宣布向日本投资100亿美元"和英文"Microsoft to invest $10B in Japan" → 核心三元组相同，判定为「同一核心事实」 **Step B — 判断独立保留价值（同一核心事实的多条报道，是否都保留）：** 同一核心事实的报道，**仅在以下条件同时满足时才都保留**，否则只保留最权威的一条： 1. **来源有独立信息**（记者独立采写，非转载，且有补充事实/数据/背景） 2. **角度/维度不同**（财务分析 vs 技术解读 vs 政策分析） **去重优先级：来源权威性 > 摘要完整性 > 发布时间更新** **具体判断规则：** - 同一核心事实 + 无独立信息 + 无新角度 → **去重**，保留最权威一条 - 同一核心事实 + 有独立信息 + 有新角度 → **保留**，合并摘要精华 - 不同核心事实（哪怕相关）→ **保留** **具体例子：** - ✅ 微软投资日本（Reuters）+ 微软投资日本（新华网）→ 同一核心事实，均为转载，无独立信息 → **去重，保留 Reuters** - ✅ 微软投资日本（Reuters）+ 微软投资日本（36kr独立分析）→ 同一核心事实，但36kr有独立分析视角 → **都保留** - ✅ OpenAI收购TBPN（确认报道）+ OpenAI收购TBPN（谈判进展）→ 核心事实相同，但阶段不同 → **都保留** - ✅ OpenAI收购TBPN（中文翻译版）→ 与英文同一核心事实，无独立信息 → **去重** ### 第三步：评估与筛选 对每条新闻评估两个维度： | 维度 | 说明 | 评分标准 | |------|------|---------| | **相关度** | 与科技/AI 领域的关联程度 | ⭐1-5 星 | | **推荐度** | 对读者的阅读价值 | 0-100 分 | **评分原则：** - 相关度 5星：AI 技术、芯片、太空探索、重大产品发布 - 相关度 4星：科技政策、行业趋势、并购融资 - 相关度 3星：间接相关的科技新闻 - 推荐度综合考虑：时效性、重要性、独家性、可操作性 ### 第四步（插入）：生成主题关联图 在分类完成后、写入文件前，根据当日新闻内容生成「主题关联图」。 **生成原则：** - 提取3-5个核心主题（基于新闻内容自动归纳） - 标注主题间的关联关系（支持、竞争、因果、衍生等） - 每个主题下列出相关新闻编号，便于快速跳转 **关联类型标签：** - `→` 因果关系（A导致B） - `⟶` 支撑关系（A证实/支持B） - `⇄` 竞争关系（A与B竞争） - `↙` 衍生关系（A衍生出B） **示例格式：** ``` ## 🗺️ 主题关联图 ``` ┌─ AI安全 AI芯片 ──⟶ ──┤ │ └─ 大模型 ──→ AI监管 ↑ 半导体 ──────────────⟶ ┘ ``` - **AI芯片** → 大模型（算力支撑） - **半导体** ⟶ 大模型（硬件基础） - **AI安全** ↙ AI监管（监管对象） ``` **关联图生成规则：** - 主题数量：3-5个为宜（太多则复杂，太多则冗余） - 关系数量：每对主题间最多1条关系 - 新闻归属：每条新闻可归属1-2个主题（跨主题新闻归入主要主题） - ASCII图形用于本地文件；飞书文档使用列表格式呈现 --- ## 第五步：写入本地文件 保存路径：`memory/YYYY-MM-DD-tech-news.md` **文件格式要求：** - 文件头包含整理时间和来源 - **主题关联图**（紧接在国际/国内分类之后） - 按国际/国内分类 - 每条新闻包含：标题、相关度(⭐)、推荐度(分)、摘要、来源、链接 - 底部包含数据总览表格 - 末尾同步记录（本地文件 ✅、飞书文档链接） ### 第六步：同步飞书文档 **创建飞书文档：** 1. 调用 `feishu_wiki(action="spaces")` 获取个人知识库 space_id 2. 调用 `feishu_doc(action="create", title="科技新闻日报 | YYYY年MM月DD日", folder_token="首页节点token", owner_open_id="请求用户open_id")` 3. 调用 `feishu_doc(action="write", doc_token="新文档token", content="markdown内容")` 写入完整报告 **文档格式：** 与本地文件内容一致（飞书不支持表格，使用列表+粗体替代） **飞书文档中的主题关联图格式：** 由于飞书富文本不支持ASCII图形，使用列表格式呈现： ``` ## 🗺️ 主题关联图 **核心主题：** - AI芯片（关联新闻：#1, #3） - 大模型（关联新闻：#2, #4, #5） - 半导体（关联新闻：#6, #7） **关联关系：** - AI芯片 → 大模型（算力支撑） - 半导体 ⟶ 大模型（硬件基础） - AI安全 ↙ AI监管（监管对象） ``` ### 第七步：更新本地文件同步记录 在本地文件末尾添加： ``` ## 📋 同步记录 - ✅ 本地文件：`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 > 来源：Tavily 搜索 + 公开新闻聚合 --- ## 🌐 国际科技热榜 ### 1. [新闻标题] - 相关度：⭐⭐⭐⭐⭐ | 推荐度：XX/100 - 摘要：[1-2句话描述] - 来源：[媒体名称] - 链接：[URL] [... 7条国际新闻 ...] --- ## 🇨🇳 国内 AI 热榜 ### 1. [新闻标题] - 相关度：⭐⭐⭐⭐⭐ | 推荐度：XX/100 - 摘要：[1-2句话描述] - 来源：[媒体名称] - 链接：[URL] [... 8条国内新闻 ...] --- --- ## 🗺️ 主题关联图 本日核心主题及其关联： ``` ┌─ [主题A] [主题X] ──⟶ ──┤ │ └─ [主题B] ──→ [主题C] ↑ [主题Y] ────────────⟶ ┘ ``` - **[主题X]** → [主题B]（关联说明） - **[主题Y]** ⟶ [主题B]（关联说明） - **[主题A]** ↙ [主题C]（关联说明） --- ## 📊 数据总览 - 国际：X 条，平均推荐度 XX - 国内：X 条，平均推荐度 XX - 合计：XX 条，平均推荐度 XX --- ## 🔗 关键来源 - [来源1名称]：URL - [来源2名称]：URL [...] --- 整理：牛管家 | 整理工具：Tavily 搜索 ## 📋 同步记录 - ✅ 本地文件：`memory/YYYY-MM-DD-tech-news.md` - ✅ 飞书文档：`科技新闻日报 | YYYY年MM月DD日` - 文档链接：https://feishu.cn/docx/xxxxx - 知识库：个人知识库 ``` --- ## 参考资源 - **飞书文档操作：** 见 `references/feishu-doc.md` - **Tavily 搜索：** 使用 `tavily_search` 工具，topic="news"，search_depth="basic" 或 "advanced" --- ## 注意事项 1. **并行搜索**：中英文搜索同时进行，提高效率 2. **时效过滤**：只收录近7天内的新闻，老旧新闻（超过7天）不再收藏，已过期的新闻不计入报告 3. **链接有效性**：优先使用原始来源链接，避免短链接 4. **评分一致性**：相关度和推荐度应有明显区分，相关度高不等于推荐度高 5. **飞书权限**：创建文档时必须传入 `owner_open_id` 确保用户有编辑权限 6. **文件命名**：使用 `YYYY-MM-DD-tech-news.md` 格式，便于排序检索 7. **去重时机**：去重必须在合并所有搜索结果之后、评分之前进行，先去重再评分，不能边搜边去重 --- ## ⚠️ 执行建议（重要） **本任务涉及多轮搜索 + 内容整理 + 飞书文档写入，建议使用子会话执行以避免超时：** ```markdown 使用 `sessions_spawn` 启动子会话执行： - runtime: "subagent" - mode: "run" - runTimeoutSeconds: 600（10分钟足够） - task: 完整的科技新闻日报任务描述 ``` **不建议在主会话直接执行的原因：** - 任务包含多轮 Tavily 搜索（4-6次） - 需要整理15-20条新闻并评分 - 写入飞书文档操作较重 - 主会话超时窗口（默认180s）可能不够 **子会话执行流程：** 1. 并行中英文搜索（tavily_search） 2. **合并所有搜索结果**（不评分，不分类，先拢到一起） 3. **两轮去重**： a) URL精准去重（同一链接只一条） b) 语义去重：提取核心三元组（主体+动作+客体），同一核心事实的报道：无独立信息无新角度 → 只保留最权威那条；有独立信息或新角度 → 保留多条 4. **评分**（去重完成后，才开始评分） 5. 分类（国际/国内） 6. **生成主题关联图**（根据当日新闻内容，提取3-5个核心主题，标注关联关系） 7. 写入本地文件 `memory/YYYY-MM-DD-tech-news.md` 8. 创建飞书文档并写入内容 9. **直接发送报告到飞书群**（使用 `message` 工具，channel="feishu"，target="chat:群组ID"） 10. 更新本地文件同步记录 **进度 Checkpoint（v0.2.4 新增）：每步必须写checkpoint** 子会话在每个关键步骤完成后，立即将进度写入 checkpoint 文件 `memory/YYYY-MM-DD-tech-news-checkpoint.json`： ```json { "step": 6, "stepName": "飞书文档创建完成", "feishuDocUrl": "https://feishu.cn/docx/xxx", "localFile": "memory/2026-04-17-tech-news.md", "timestamp": 1776396500000, "pendingAction": "发送飞书消息" } ``` **步骤说明：** - step 1: 搜索完成 → 写入 checkpoint - step 2: 去重完成 → 写入 checkpoint（附上去重后条数） - step 3: 评分完成 → 写入 checkpoint - step 4: 主题关联图生成完成 → 写入 checkpoint - step 5: 本地文件写入完成 → 写入 checkpoint（标记 localFile 路径） - step 6: 飞书文档创建完成 → 写入 checkpoint（标记 feishuDocUrl） - step 7: **发送飞书消息** → 最后一步，**必须成功**，完成后写入 step: done **超时补救机制（v0.2.4 强化版）：** 如果主会话收到子会话超时事件，按以下顺序检查： 1. 读取 checkpoint 文件 `memory/YYYY-MM-DD-tech-news-checkpoint.json` 2. 如果 `step >= 5`（本地文件已写）→ 读取本地文件，直接发送飞书消息 3. 如果 `step >= 6`（飞书文档已建）→ 跳过创建，直接发送飞书消息 4. 如果 `step == done` → 任务已完成，无需补救（但用户没收到消息，说明channel问题） 5. 如果 `step < 5` → 任务早期失败，需要重新执行 **⚠️ 关键修复（v0.2.3/v0.2.4）：子会话必须直接发飞书消息** - 步骤6（发送飞书消息）是整个流程中**最后一步**，也是唯一向用户传递报告的途径 - 飞书群组 ID（目标）：`oc_d591432cedf9a00c01878c24754cb050` - 必须使用 `message(action="send", channel="feishu", target="chat:oc_d591432cedf9a00c01878c24754cb050", message="完整报告内容")` - **禁止**在发送飞书消息之前结束会话——即使所有文件/文档操作都完成了，也要留足时间发送消息 - 飞书消息发送成功后，才更新 checkpoint 为 `step: done`

path: references/feishu-doc.md
content: # 飞书文档操作参考

## 获取知识库节点

```json
// 1. 获取知识库列表
{ "action": "spaces" }

// 2. 获取知识库子节点（需传入 space_id）
{ "action": "nodes", "space_id": "xxx", "parent_node_token": "xxx" }
```

## 创建文档

```json
{
  "action": "create",
  "title": "科技新闻日报 | 2026年4月4日",
  "folder_token": "GUQFwzZL2id2kyk1oZ5clyc0nab",
  "owner_open_id": "ou_d8ace8a146610ca26bc07d8e68a5620f"
}
```

## 写入文档内容

```json
{
  "action": "write",
  "doc_token": "V6zdd8fL2oCufnxFbivc3OhfnIg",
  "content": "# 标题\n\n正文内容..."
}
```

**注意：** 飞书文档不支持 Markdown 表格，使用列表和粗体替代。

## 文档内容示例

```markdown
# 科技新闻日报 | 2026年4月4日

## 🌐 国际科技热榜

### 1. 新闻标题
- 相关度：⭐⭐⭐⭐⭐ | 推荐度：95/100
- 摘要：这是新闻摘要
- 来源：The Guardian
- 链接：https://example.com

## 🇨🇳 国内 AI 热榜

...
```

---

## 常用节点 Token

- **个人知识库**：space_id = `7621391289904516315`
- **首页**：node_token = `GUQFwzZL2id2kyk1oZ5clyc0nab`


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)