ak-rss-digest
Curate a Chinese reading digest from a fixed bundle of RSS and Atom feeds, with a strong preference for AI agent thinking,…
基于预设 URL 列表抓取内容,筛选高质量技术信息并生成每日 Markdown 报告。
$ npx -y skills add rookie-ricardo/erduo-skills --skill daily-news-report --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/daily-news-reportContext preview
The summary Claude sees to decide when to auto-load this skill.
基于预设 URL 列表抓取内容,筛选高质量技术信息并生成每日 Markdown 报告。
name: daily-news-report description: 基于预设 URL 列表抓取内容,筛选高质量技术信息并生成每日 Markdown 报告。 argument-hint: [可选: 日期] disable-model-invocation: false user-invocable: true allowed-tools: Task, WebFetch, Read, Write, Bash(mkdir*), Bash(date*), Bash(ls*), mcp__chrome-devtools__*
> **架构升级**:主 Agent 调度 + SubAgent 执行 + 浏览器抓取 + 智能缓存
┌─────────────────────────────────────────────────────────────────────┐
│ 主 Agent (Orchestrator) │
│ 职责:调度、监控、评估、决策、汇总 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 1. 初始化 │ → │ 2. 调度 │ → │ 3. 监控 │ → │ 4. 评估 │ │
│ │ 读取配置 │ │ 分发任务 │ │ 收集结果 │ │ 筛选排序 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 5. 决策 │ ← │ 够20条? │ │ 6. 生成 │ → │ 7. 更新 │ │
│ │ 继续/停止 │ │ Y/N │ │ 日报文件 │ │ 缓存统计 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────┘
↓ 调度 ↑ 返回结果
┌─────────────────────────────────────────────────────────────────────┐
│ SubAgent 执行层 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Worker A │ │ Worker B │ │ Browser │ │
│ │ (WebFetch) │ │ (WebFetch) │ │ (Headless) │ │
│ │ Tier1 Batch │ │ Tier2 Batch │ │ JS渲染页面 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ↓ ↓ ↓ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 结构化结果返回 │ │
│ │ { status, data: [...], errors: [...], metadata: {...} } │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘本 Skill 使用以下配置文件:
| 文件 | 用途 | |------|------| | `sources.json` | 信息源配置、优先级、抓取方法 | | `cache.json` | 缓存数据、历史统计、去重指纹 |
步骤: 1. 确定日期(用户参数或当前日期) 2. 读取 sources.json 获取源配置 3. 读取 cache.json 获取历史数据 4. 创建输出目录 NewsReport/ 5. 检查今日是否已有部分报告(追加模式)
**策略**:并行调度,分批执行,早停机制
第1波 (并行):
- Worker A: Tier1 Batch A (HN, HuggingFace Papers)
- Worker B: Tier1 Batch B (OneUsefulThing, Paul Graham)
等待结果 → 评估数量
如果 < 15 条高质量:
第2波 (并行):
- Worker C: Tier2 Batch A (James Clear, FS Blog)
- Worker D: Tier2 Batch B (HackerNoon, Scott Young)
如果仍 < 20 条:
第3波 (浏览器):
- Browser Worker: ProductHunt, Latent Space (需要JS渲染)每个 SubAgent 接收的任务格式:
task: fetch_and_extract
sources:
- id: hn
url: https://news.ycombinator.com
extract: top_10
- id: hf_papers
url: https://huggingface.co/papers
extract: top_voted
output_schema:
items:
- source_id: string # 来源标识
title: string # 标题
summary: string # 2-4句摘要
key_points: string[] # 最多3个要点
url: string # 原文链接
keywords: string[] # 关键词
quality_score: 1-5 # 质量评分
constraints:
filter: "前沿技术/高深技术/提效技术/实用资讯"
exclude: "泛科普/营销软文/过度学术化/招聘帖"
max_items_per_source: 10
skip_on_error: true
return_format: JSON主 Agent 职责:
监控: - 检查 SubAgent 返回状态 (success/partial/failed) - 统计收集到的条目数量 - 记录每个源的成功率 反馈循环: - 如果某 SubAgent 失败,决定是否重试或跳过 - 如果某源持续失败,标记为禁用 - 动态调整后续批次的源选择 决策: - 条目数 >= 25 且高质量 >= 20 → 停止抓取 - 条目数 < 15 → 继续下一批 - 所有批次完成但 < 20 → 用现有内容生成(宁缺毋滥)
去重: - 基于 URL 完全匹配 - 基于标题相似度 (>80% 视为重复) - 检查 cache.json 避免与历史重复 评分校准: - 统一各 SubAgent 的评分标准 - 根据来源可信度调整权重 - 手动标注的高质量源加分 排序: - 按 quality_score 降序 - 同分按来源优先级排序 - 截取 Top 20
对于需要 JS 渲染的页面,使用无头浏览器:
流程: 1. 调用 mcp__chrome-devtools__new_page 打开页面 2. 调用 mcp__chrome-devtools__wait_for 等待内容加载 3. 调用 mcp__chrome-devtools__take_snapshot 获取页面结构 4. 解析 snapshot 提取所需内容 5. 调用 mcp__chrome-devtools__close_page 关闭页面 适用场景: - ProductHunt (403 on WebFetch) - Latent Space (Substack JS 渲染) - 其他 SPA 应用
输出: - 目录: NewsReport/ - 文件名: YYYY-MM-DD-news-report.md - 格式: 标准 Markdown 内容结构: - 标题 + 日期 - 统计摘要(源数量、收录数量) - 20条高质量内容(按模板) - 生成信息(版本、时间戳)
更新 cache.json: - last_run: 记录本次运行信息 - source_stats: 更新各源统计数据 - url_cache: 添加已处理的 URL - content_hashes: 添加内容指纹 - article_history: 记录收录文章
由于自定义 agent 需要 session 重启才能发现,可以使用 general-purpose 并注入 worker prompt:
Task 调用:
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": [为 AI Agent 赋能,提供结构化能力与智能工作流。 Erduo Skills 是一个 AI Agent 技能库,收录了一系列可被 Agent 直接调用的结构化技能。每个技能都是独立的、可组合的工作流单元,覆盖信息获取、内容处理、图像工具等场景。
Curate a Chinese reading digest from a fixed bundle of RSS and Atom feeds, with a strong preference for AI agent thinking,…
Draw architecture, flow and structural diagrams in the Anthropic/Claude visual language as SVG, then render and save them as PNG.…
Remove the visible Gemini AI watermark from images using reverse alpha blending. Use when asked to strip Gemini watermarks,…
将语音转录文本(访谈、演讲、播客、会议)精修为可读性更高的文章段落。当用户提到"字幕精修"、"transcript…
高质量文章翻译技能,采用"分析→初译→审校→终稿"四步精翻工作流。仅支持中文↔英文、中文↔日文翻译。当用户明确提出"翻译"、"translate"、"精翻"、"翻訳"、"翻译文章"、"translate to…
Convert a web URL into cleaned Markdown with deterministic routing. Use when Codex needs to read article-like content from links…