# Daily News Report

> 当需要按预设来源列表抓取技术资讯并产出每日简报时使用；做主 Agent 编排 + 子 Agent 并行抓取，筛选高质量条目并生成 Markdown 日报到 NewsReport/；不适用于单篇网页总结、无来源配置的开放式搜索、实时舆情监控；触发词：每日资讯、技术简报、daily news、抓取来源、日报生成

- Skill: `findscripter/daily-news-report` (Agent Skill)
- Install (CLI): `npx skillmds@latest add findscripter/daily-news-report`
- Raw SKILL.md: https://api.skillmd.com/api/skills/findscripter/daily-news-report/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: MIT
- Author: findscripter (https://skillmd.com/u/findscripter)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/findscripter/daily-news-report

---

## 何时使用

适用于：基于一份预设来源列表（`sources.json`）定期抓取技术资讯，过滤出高质量条目，并产出标准 Markdown 日报。典型来源包括 Hacker News、HuggingFace Papers、各类技术博客（OneUsefulThing、Paul Graham、FS Blog 等），以及需要 JS 渲染的页面（ProductHunt、Latent Space）。

不该用于：
- 仅总结某一篇指定网页或文章（直接 WebFetch 即可，无需本工作流）。
- 没有来源配置、纯开放式主题检索（应使用通用网络搜索 / deep-research）。
- 实时舆情 / 监控告警类需求（本技能是一次性批量产出，非流式监听）。

## 步骤

整体为「主 Agent 编排 + 子 Agent 执行 + 浏览器兜底 + 缓存去重」。主 Agent 负责调度、监控、评估、决策、聚合；子 Agent 是无状态执行单元，只抓取并返回结构化 JSON。

1. 初始化：确定日期（用户参数或当前日期）；读取 `sources.json`（来源、优先级、抓取方式）与 `cache.json`（历史数据、去重指纹）；创建输出目录 `NewsReport/`；检查今日是否已有半成品报告（决定是否追加模式）。
2. 分波派发（并行 + 早停）：
   - Wave 1：Worker A 抓 Tier1 批次 A（HN、HuggingFace Papers），Worker B 抓 Tier1 批次 B（OneUsefulThing、Paul Graham），并行执行。
   - 汇总后评估数量；若高质量条目 < 15，再派 Wave 2（Tier2：James Clear、FS Blog、HackerNoon、Scott Young）。
   - 若仍 < 20，启动 Wave 3 浏览器抓取（ProductHunt、Latent Space 等需 JS 渲染的页面）。
3. 监控与反馈：检查每个子 Agent 状态（success/partial/failed），统计条目数与各来源成功率；失败来源决定重试或跳过，持续失败则标记禁用并回写 `sources.json`，动态调整后续批次的来源选择。
4. 评估与过滤：去重（精确 URL 匹配、标题相似度 >80% 视为重复、比对 `cache.json` 历史）；统一各子 Agent 的打分标准并按来源可信度调权，人工精选源加分；按 `quality_score` 降序、同分按来源优先级排序，取 Top 20。
5. 浏览器兜底（MCP Chrome DevTools）：`new_page` 打开 → `wait_for` 等内容加载 → `take_snapshot` 取页面结构 → 解析提取 → `close_page` 关闭。
6. 生成报告：写入 `NewsReport/YYYY-MM-DD-news-report.md`，标准 Markdown，含标题+日期、统计摘要、20 条高质量条目、生成信息。
7. 更新缓存：写回 `cache.json` 的 `last_run`、`source_stats`、`url_cache`、`content_hashes`、`article_history`。

## 指令

停止条件（主 Agent 决策）：
```yaml
Decision:
  - 条目 >= 25 且 高质量 >= 20 → 停止抓取
  - 条目 < 15 → 继续下一批次
  - 所有批次跑完仍 < 20 → 用现有内容生成（质量优先于数量）
```

子 Agent 调用（用 general-purpose 注入 worker 提示，免去重启会话；模型可选 haiku 降本）：
```
subagent_type: general-purpose
model: haiku
prompt: |
  你是无状态执行单元，只完成分配任务并返回结构化 JSON。
  任务：抓取以下 URL 并提取内容
  URLs:
    - https://news.ycombinator.com (Top 10)
    - https://huggingface.co/papers (按投票数取高票)
  输出格式：
  {
    "status": "success" | "partial" | "failed",
    "data": [{
      "source_id": "hn", "title": "...", "summary": "...",
      "key_points": ["...","...","..."], "url": "...",
      "keywords": ["...","..."], "quality_score": 4
    }],
    "errors": [], "metadata": { "processed": 2, "failed": 0 }
  }
  过滤：保留 前沿技术/深度技术/生产力/实用信息；
        剔除 泛科普/营销软文/过度学术/招聘帖。
  直接返回 JSON，不要解释。
```

单条目输出 Schema：`source_id` / `title` / `summary`（2-4 句）/ `key_points`（≤3）/ `url` / `keywords` / `quality_score`（1-5）。约束：`max_items_per_source: 10`、`skip_on_error: true`、`return_format: JSON`。

兼容性兜底（必须执行）：
- 初始化阶段探测 `worker` 子 Agent 是否存在；不存在则自动切换串行执行模式（主 Agent 逐个来源抓取，较慢但保证基础功能）。
- 降级运行时，必须在报告头部加入明确警告，提示当前为降级（串行）模式。

## 示例

报告输出模板：
```markdown
# 每日技术资讯日报 (YYYY-MM-DD)

> 今日精选自 N 个来源，共 20 条高质量条目
> 生成耗时: X 分钟 | 版本: v3.0
> **警告**: 未检测到 worker 子 Agent，已降级为串行模式，性能可能下降。

---

## 1. 标题

- **摘要**: 2-4 行概述
- **要点**:
  1. 要点一
  2. 要点二
  3. 要点三
- **来源**: 链接
- **关键词**: `keyword1` `keyword2` `keyword3`
- **评分**: ⭐⭐⭐⭐⭐ (5/5)

---

*Generated by Daily News Report v3.0*
*Sources: HN, HuggingFace, OneUsefulThing, ...*
```

预期耗时：理想 ~2 分钟（Tier1 足量，无需浏览器）；常规 ~3-4 分钟（需 Tier2 补充）；含 JS 渲染页 ~5-6 分钟。

## 注意事项

核心原则：
1. 质量优先于数量：低质内容不入报告。
2. 早停：凑齐 20 条高质量即停止抓取。
3. 并行优先：同批次子 Agent 并行执行。
4. 容错：单一来源失败不影响整体流程。
5. 缓存复用：避免重复抓取相同内容。
6. 主 Agent 控制：所有决策由主 Agent 做出。
7. 降级感知：检测子 Agent 可用性，不可用时优雅降级并告警。

错误处理：子 Agent 超时 → 记录并继续下一个；来源 403/404 → 标记禁用并更新 `sources.json`；提取失败 → 返回原始内容交主 Agent 决策；浏览器崩溃 → 跳过该来源并记录。注意 ProductHunt 对 WebFetch 常返回 403、Latent Space（Substack）需 JS 渲染，这两类应直接走浏览器兜底。

## 互见

- `deep-research`：开放式、多源、需事实核查的深度研究报告（无固定来源列表时优先）。
- `lark-markdown` / `lark-doc`：把生成的 Markdown 日报上传或转为飞书云文档分发。
- `schedule` / `loop`：将本工作流设为每日定时自动运行。

---
*采编自 sickn33/antigravity-awesome-skills（MIT 许可）。*

