<< All versions
Skill v1.0.0
currentAutomated scan75/100miantiao-me/aigc-weekly/batch-research
──Details
PublishedJuly 31, 2026 at 06:01 AM
Content Hashsha256:b81968108aee2bc3...
Git SHAc0d71b18d597
──Files
Files (1 file, 4.6 KB)
SKILL.md4.6 KBactive
SKILL.md · 147 lines · 4.6 KB
version: "1.0.0" name: batch-research description: 批量数据采集技能,负责分批并发调度 researcher agent 抓取所有数据源。
Batch Research 技能
此技能用于指导 /weekly 命令如何高效、分批、并发地从多个数据源采集信息。
核心职责
作为批量调度器,负责:
- 解析数据源列表
- 生成所有待抓取 URL
- 分批并发调用
researcheragent - 汇总结果生成报告
工作流程
Step 1: 准备阶段
- 读取数据源:从
.opencode/REFERENCE.md获取完整数据源列表 - 生成 URL 列表:
- 静态 URL:直接使用
- 动态 URL(Hacker News):使用
generateHNUrls(start_date, end_date)
javascript
import { generateHNUrls } from '.opencode/utils.mjs'// Hacker News - 每天一个 URLconst hnUrls = generateHNUrls(start_date, end_date)// 返回: [// "https://news.ycombinator.com/front?day=2026-03-22",// "https://news.ycombinator.com/front?day=2026-03-23",// ...// ]
Step 2: 分批策略
将所有 URL 按优先级分为 3 批,每批 10-12 个 URL:
| 批次 | 数据源类型 | 来源 | |
|---|---|---|---|
| Batch 1 | Important Resources | REFERENCE.md 中 "Important Resources" 部分 | |
| Batch 2 | Blogs & Websites | REFERENCE.md 中 "Blogs & Websites" 部分 | |
| Batch 3 | KOL & Influencers | REFERENCE.md 中 "KOL & Influencers" 部分 |
Step 3: 并发调度
并发配置
| 参数 | 值 | 说明 | |
|---|---|---|---|
max_parallel | 5 | 每轮最大并发数 | |
batch_interval | 3s | 批次间等待时间 | |
domain_rate_limit | 2 req/domain | 同域名限流 |
调度规则
对每个批次:
- 分轮执行:将批次内 URL 按
max_parallel分轮(如 12 个 URL 分 3 轮:5 + 5 + 2) - 轮内并发:同时启动该轮所有
researcheragent - 等待完成:等待当前轮所有 researcher 返回结果
- 进入下一轮:当前轮全部完成后,等待
batch_interval,再启动下一轮 - 批次完成后:进入下一个批次
调用 researcher 的参数格式:
yaml
url: https://news.ycombinator.com/front?day=2026-03-22source_name: Hacker Newsweek_id: Y26W12start_date: 2026-03-22end_date: 2026-03-28current_date: 2026-03-25timezone: UTC+0
并发调用示例(伪代码):
# Batch 1: Important Resources并行调用:- researcher(url: "https://news.ycombinator.com/front?day=2026-03-22", source_name: "Hacker News")- researcher(url: "https://news.ycombinator.com/front?day=2026-03-23", source_name: "Hacker News")- researcher(url: "https://drafts.miantiao.me/", source_name: "Miantiao Drafts")- researcher(url: "https://www.solidot.org/search?tid=151", source_name: "Solidot")- ...等待 Batch 1 全部完成# Batch 2: Blogs & Websites并行调用:- researcher(url: "https://www.anthropic.com/engineering", source_name: "Anthropic Engineering")- researcher(url: "https://claude.com/blog", source_name: "Claude Blog")- ...等待 Batch 2 全部完成# Batch 3: KOL & Influencers并行调用:- researcher(url: "https://baoyu.io/", source_name: "Baoyu")- ...等待 Batch 3 全部完成
Step 4: 日志记录
所有日志统一写入 logs/weekly-{week_id}.log,仅用于人类审计,不作为恢复依据。
日志格式:
[2026-03-25T12:34:56Z] [PHASE1] [INFO] 开始抓取 Hacker News[2026-03-25T12:35:10Z] [PHASE1] [OK] Hacker News - 5 篇文章[2026-03-25T12:35:15Z] [PHASE1] [FAIL] daily.dev - 429 Too Many Requests (retried 2)
日志级别:
| 级别 | 用途 | |
|---|---|---|
INFO | 阶段/任务开始 | |
OK | 任务成功(含文章数) | |
FAIL | 任务失败(含错误原因和重试次数) |
Step 5: 汇总报告
所有批次完成后,在日志末尾生成汇总:
[2026-03-25T12:45:00Z] [PHASE1] [SUMMARY] 总数据源: 30 | 成功: 27 (X篇) | 失败: 3
约束与注意事项
- 全量抓取:必须抓取所有数据源,不能跳过
- 批次顺序:必须按批次顺序执行,等待当前批次完成后再进入下一批
- 错误隔离:单个 researcher 失败不影响其他
- 重试由 researcher 处理:本技能不负责重试,由 researcher 自行处理
- 进入下一阶段前:必须完成所有批次的抓取