mcpField
D
daily-news-report

daily-news-report

github.com/rookie-ricardo生産性937334 回インストール14 週間前に更新
リポジトリ

daily-news-report について

daily-news-reportは、ニュースを収集・選別し、Markdown形式の日報を作成するエージェント向けスキルです。SubAgentの調整、キャッシュによる重複排除、利用できない場合の逐次実行への切り替えを備えています。

主な機能

  1. 01SubAgentによる並列取得
  2. 02記事の評価・順位付け・選別
  3. 03URLと履歴キャッシュの重複排除
  4. 04必要に応じたブラウザー取得
  5. 05Markdown日報の作成とキャッシュ更新

活用シーン

  1. 01複数サイトのニュースを日次で集約
  2. 02JavaScript描画が必要なページの取得
  3. 03過去に掲載した記事の再掲載防止

MCP 対応

JavaScript描画が必要な場合、MCP Chrome DevToolsでページを開き、読み込みを待ってスナップショットを取得し、ページを閉じます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/rookie-ricardo/erduo-skills --skill daily-news-report

インストール後、Claude Code で/daily-news-reportを入力して読み込まれたか確認します。

同梱ファイルcache.jsonsources.json

詳細

デイリーニュースレポート v3.0

アーキテクチャのアップグレード:メイン 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キャッシュデータ、履歴統計、重複排除用フィンガープリント

実行フローの詳細

Phase 1: 初期化
步骤:
  1. 确定日期(用户参数或当前日期)
  2. 读取 sources.json 获取源配置
  3. 读取 cache.json 获取历史数据
  4. 创建输出目录 NewsReport/
  5. 检查今日是否已有部分报告(追加模式)
Phase 2: SubAgent のスケジューリング

方針:並列スケジューリング、分割実行、早期終了の仕組み

第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渲染)
Phase 3: SubAgent のタスク形式

各 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
Phase 4: メイン Agent による監視とフィードバック

メイン Agent の役割:

监控:
  - 检查 SubAgent 返回状态 (success/partial/failed)
  - 统计收集到的条目数量
  - 记录每个源的成功率

反馈循环:
  - 如果某 SubAgent 失败,决定是否重试或跳过
  - 如果某源持续失败,标记为禁用
  - 动态调整后续批次的源选择

决策:
  - 条目数 >= 25 且高质量 >= 20 → 停止抓取
  - 条目数 < 15 → 继续下一批
  - 所有批次完成但 < 20 → 用现有内容生成(宁缺毋滥)
Phase 5: 評価と選別
去重:
  - 基于 URL 完全匹配
  - 基于标题相似度 (>80% 视为重复)
  - 检查 cache.json 避免与历史重复

评分校准:
  - 统一各 SubAgent 的评分标准
  - 根据来源可信度调整权重
  - 手动标注的高质量源加分

排序:
  - 按 quality_score 降序
  - 同分按来源优先级排序
  - 截取 Top 20
Phase 6: ブラウザーによる取得(MCP Chrome DevTools)

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 应用
Phase 7: 日報の生成
输出:
  - 目录: NewsReport/
  - 文件名: YYYY-MM-DD-news-report.md
  - 格式: 标准 Markdown

内容结构:
  - 标题 + 日期
  - 统计摘要(源数量、收录数量)
  - 20条高质量内容(按模板)
  - 生成信息(版本、时间戳)
Phase 8: キャッシュの更新
更新 cache.json:
  - last_run: 记录本次运行信息
  - source_stats: 更新各源统计数据
  - url_cache: 添加已处理的 URL
  - content_hashes: 添加内容指纹
  - article_history: 记录收录文章

SubAgent の呼び出し例

general-purpose Agent の使用

カスタム Agent は、検出されるまでに session の再起動が必要なため、worker prompt を注入した general-purpose を使用できます。

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": ["...", "..."],
          "quality_score": 4
        }
      ],
      "errors": [],
      "metadata": { "processed": 2, "failed": 0 }
    }

    筛选标准:
    - 保留:前沿技术/高深技术/提效技术/实用资讯
    - 排除:泛科普/营销软文/过度学术化/招聘帖

    直接返回 JSON,不要解释。
worker Agent の使用(session の再起動が必要)
Task 调用:
  subagent_type: worker
  prompt: |
    task: fetch_and_extract
    input:
      urls:
        - https://news.ycombinator.com
        - https://huggingface.co/papers
    output_schema:
      - source_id: string
      - title: string
      - summary: string
      - key_points: string[]
      - url: string
      - keywords: string[]
      - quality_score: 1-5
    constraints:
      filter: 前沿技术/高深技术/提效技术/实用资讯
      exclude: 泛科普/营销软文/过度学术化

出力テンプレート

# Daily News Report(YYYY-MM-DD)

> 本日筛选自 N 个信息源,共收录 20 条高质量内容
> 生成耗时: X 分钟 | 版本: v3.0
>
> **Warning**: Sub-agent 'worker' not detected. Running in generic mode (Serial Execution). Performance might be degraded.
> **警告**:未检测到 Sub-agent 'worker'。正在以通用模式(串行执行)运行。性能可能会受影响。

---

## 1. 标题

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

---

## 2. 标题
...

---

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

制約と原則

  1. 量より質:品質の低い内容は日報に含めません
  2. 早期終了の仕組み:品質の高い記事が20件に達したら、取得を停止します
  3. 並列処理を優先:同じバッチの SubAgent は並列で実行します
  4. 障害への耐性:単一の情報源で障害が発生しても、全体の処理には影響しません
  5. キャッシュの再利用:同じ内容の重複取得を防ぎます
  6. メイン Agent による制御:すべての判断をメイン Agent が行います
  7. フォールバックへの対応:sub-agent が利用可能か検出し、利用できない場合は適切に縮退します

予想されるパフォーマンス

シナリオ予想時間説明
最良のケース~2 分Tier1 で十分なため、ブラウザーは不要です
通常のケース~3-4 分Tier2 による補完が必要です
ブラウザーが必要な場合~5-6 分JS レンダリングページを含みます

エラー処理

エラーの種類処理方法
SubAgent のタイムアウトエラーを記録し、次に進みます
情報源の 403/404無効としてマークし、sources.json を更新します
コンテンツの抽出失敗元のコンテンツを返し、メイン Agent が判断します
ブラウザーのクラッシュ該当する情報源をスキップし、ログを記録します

互換性とフォールバック(Compatibility & Fallback)

異なる Agent 環境で利用できるように、以下の確認を必ず実行します。

  1. 環境の確認:

    • Phase 1 の初期化段階で、worker sub-agent の有無を検出します。
    • 存在しない場合(または関連するプラグインがインストールされていない場合)、**シリアル実行モード(Serial Mode)**に自動で切り替えます。
  2. シリアル実行モード:

    • parallel block は使用しません。
    • メイン Agent が各情報源の取得タスクを順番に実行します。
    • 実行速度は低下しますが、基本機能を利用できます。
  3. ユーザーへの通知:

    • 生成する日報の冒頭(引用ブロック部分)に、現在は縮退モードで実行されていることを知らせる明確な警告を必ず含めます。

コメント