何时使用
适用于:基于一份预设来源列表(sources.json)定期抓取技术资讯,过滤出高质量条目,并产出标准 Markdown 日报。典型来源包括 Hacker News、HuggingFace Papers、各类技术博客(OneUsefulThing、Paul Graham、FS Blog 等),以及需要 JS 渲染的页面(ProductHunt、Latent Space)。
不该用于:
- 仅总结某一篇指定网页或文章(直接 WebFetch 即可,无需本工作流)。
- 没有来源配置、纯开放式主题检索(应使用通用网络搜索 / deep-research)。
- 实时舆情 / 监控告警类需求(本技能是一次性批量产出,非流式监听)。
步骤
整体为「主 Agent 编排 + 子 Agent 执行 + 浏览器兜底 + 缓存去重」。主 Agent 负责调度、监控、评估、决策、聚合;子 Agent 是无状态执行单元,只抓取并返回结构化 JSON。
- 初始化:确定日期(用户参数或当前日期);读取
sources.json(来源、优先级、抓取方式)与cache.json(历史数据、去重指纹);创建输出目录NewsReport/;检查今日是否已有半成品报告(决定是否追加模式)。 - 分波派发(并行 + 早停):
- 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 渲染的页面)。
- 监控与反馈:检查每个子 Agent 状态(success/partial/failed),统计条目数与各来源成功率;失败来源决定重试或跳过,持续失败则标记禁用并回写
sources.json,动态调整后续批次的来源选择。 - 评估与过滤:去重(精确 URL 匹配、标题相似度 >80% 视为重复、比对
cache.json历史);统一各子 Agent 的打分标准并按来源可信度调权,人工精选源加分;按quality_score降序、同分按来源优先级排序,取 Top 20。 - 浏览器兜底(MCP Chrome DevTools):
new_page打开 →wait_for等内容加载 →take_snapshot取页面结构 → 解析提取 →close_page关闭。 - 生成报告:写入
NewsReport/YYYY-MM-DD-news-report.md,标准 Markdown,含标题+日期、统计摘要、20 条高质量条目、生成信息。 - 更新缓存:写回
cache.json的last_run、source_stats、url_cache、content_hashes、article_history。
指令
停止条件(主 Agent 决策):
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 逐个来源抓取,较慢但保证基础功能)。 - 降级运行时,必须在报告头部加入明确警告,提示当前为降级(串行)模式。
示例
报告输出模板:
# 每日技术资讯日报 (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 分钟。
注意事项
核心原则:
- 质量优先于数量:低质内容不入报告。
- 早停:凑齐 20 条高质量即停止抓取。
- 并行优先:同批次子 Agent 并行执行。
- 容错:单一来源失败不影响整体流程。
- 缓存复用:避免重复抓取相同内容。
- 主 Agent 控制:所有决策由主 Agent 做出。
- 降级感知:检测子 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 许可)。