mcpField
C
coverage-tracker

coverage-tracker

github.com/elvisun营销与增长1.7k755 次安装6 天前更新
代码仓库

关于 coverage-tracker

coverage-tracker 是用于检查指定关键词是否出现在近期新闻报道中的技能。它结合带日期的文章搜索、基于关键词含义的判断和已存决策,避免重复提醒。

主要功能

  1. 01搜索指定关键词的近期文章
  2. 02依据关键词含义筛选匹配项
  3. 03按既定结论分类报道
  4. 04保存决策并抑制重复提醒

适用场景

  1. 01检查公司或产品的近期报道
  2. 02过滤通用词义或错误实体匹配
  3. 03通过 Agent 定期运行报道检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/elvisun/newsjack --skill coverage-tracker

安装后在 Claude Code 中输入/coverage-tracker确认已加载。

详细介绍

覆盖跟踪器

跟踪已配置的关键词是否出现在真实报道中。保持简单:news-search 收集带日期的文章证据,你根据关键词的含义摘要去重并作出判断,CLI 只存储配置以及已见状态/提醒状态。

这不是 newsjack-detector。不要评估新闻劫持机会、生成角度、评估立场,也不要使用监控配置文件。

运行模式

  • 全功能模式: 在 Claude Code、Codex、OpenClaw、Hermes 或其他具备 shell、文件系统、网络和本地 CLI 访问能力的 Agent 执行环境中使用此模式。全功能模式可以读取跟踪器配置、检查 SQLite 已见状态、记录判断并抑制重复提醒。
  • 受限模式: 在 Claude.ai chat、ChatGPT chat、Claude Cowork 或任何无法访问 shell/文件系统/CLI 的受限运行环境中使用此模式。不要尝试使用 curl、npm 或按需安装 CLI。根据粘贴或可搜索的证据,执行一次手动覆盖检查,并说明没有使用跟踪器配置、SQLite 状态或重复提醒抑制。

在判断自己处于受限模式之前,请先检查是否已安装 newsjack。 它以预构建的捆绑二进制文件形式提供——运行它不需要 Go、编译器或任何构建/安装步骤。绝不要查找 Go 工具链,也绝不要在先执行此检查之前就宣布 CLI“缺失”或告知用户他们需要“Go 环境”:

  1. 运行 newsjack --version。如果它输出版本号,则你处于全功能模式——所有命令都使用普通的 newsjack ...。
  2. 如果 newsjack 不在 PATH 中,请尝试捆绑位置 ~/.newsjack/bin/newsjack --version。如果它输出版本号,则在下文所有位置使用该完整路径替代 newsjack。
  3. 只有在两种方式都失败(并且你确实没有 shell)的情况下,你才处于受限模式。

捆绑的二进制文件几乎总是已经安装——假设处于全功能模式并进行验证,不要假设它缺失。

工作流

在受限模式下,跳过 CLI 状态步骤,并执行以下操作:

  1. 如果尚未提供,请询问关键词、关键词的含义、回溯时间范围以及任何排除条件。
  2. 优先使用粘贴的链接。如果有搜索工具可用,请搜索关键词并添加时间范围限制;尽可能保留带日期和来源信息的文章证据。
  3. 根据 URL/标题/媒体/日期,对明显的重复项去重。
  4. 使用下文的判定结果对每项进行分类。
  5. 返回简短的行内报告,列出新的可能报道、过滤后的数量,并说明处于受限模式,无法抑制重复提醒。

在全功能模式下,运行持久化工作流:

  1. 查找跟踪器。

    • 如果用户提供了 slug,运行 newsjack coverage status <slug>。
    • 如果在源代码检出目录中工作,优先使用 bin/newsjack。
    • 如果未提供 slug,除非本地上下文已明确指出,否则询问要运行哪个跟踪器。
    • 读取返回的 config_path。
  2. 搜索每个关键词。

    • 从系统读取当前日期(例如,运行 date);不要凭记忆填写。将该日期减去配置中的 lookback_days,计算 since_date,默认值为 2。

    • 对每个关键词,使用以下精确格式调用 news-search:

      "keyword" after:YYYY-MM-DD
      
    • 如果关键词有别名,则以同样方式搜索每个别名,但保留关联的原始关键词条目。

    • 保留 news-search 提供的带日期和来源信息的文章字段:title、url、outlet、author、published_at,以及可用时的摘要/概要。

  3. 在使用 LLM 之前进行去重并检查已存储的判断。

    • 先对完全相同的规范 URL 去重,然后根据标题/媒体/日期对明显的同一文章重复项去重。

    • 仅由于 CLI 助手需要读取文件,才创建一个最简候选项 JSON 文件。将其放在临时位置,或者放在带时间戳的运行文件夹中(如果你的执行环境通常会保留运行产物):

      {
        "items": [
          {
            "keyword": "profound",
            "title": "文章标题",
            "url": "https://...",
            "outlet": "媒体",
            "author": "作者或 null",
            "published_at": "2026-06-05T12:00:00Z",
            "snippet": "搜索摘要或简介"
          }
        ]
      }
      
    • 运行:

      newsjack coverage check <slug> --input candidates.json
      
    • 除非用户明确要求重新审核,否则不要重新分类 known_items。使用其 prior_decision 统计已过滤/已知结果,并抑制重复提醒。

    • 仅分类 unknown_items。

  4. 让大模型分类未知条目。

    • 将关键词的 means 字段作为实体匹配的依据。
    • 排除普通词语用法和错误实体,尤其是 profound 这类有歧义的关键词。
    • 不要仅凭标题/摘要中出现关键词就发出提醒。如果摘要无法明确判断结果,请先阅读文章再决定。

    使用以下判定结果:

    • real_feature:文章主要围绕目标实体/产品/人物展开。发出提醒。
    • substantive_mention:在段落层面有实质性提及,但不是专题报道。保存,通常不提醒。
    • passing_mention:仅简短提及。保存,不提醒。
    • wrong_entity:关键词指的是其他对象。保存,不提醒。
    • junk:SEO 内容、采集器内容、重复的落地页、招聘信息、文档/帮助页面或非新闻内容。保存,不提醒。
    • uncertain:证据不足。保存,不提醒。
  5. 仅记录新分类的未知条目。 如果没有 unknown_items,跳过 coverage record,并根据 coverage check 结果汇报。

    如果分类了新条目,请编写 CLI 所需的最简 decisions.json:

    {
      "items": [
        {
          "keyword": "profound",
          "title": "Article title",
          "url": "https://...",
          "outlet": "Outlet",
          "author": "Author or null",
          "published_at": "2026-06-05T12:00:00Z",
          "verdict": "real_feature",
          "confidence": "high",
          "alert": true,
          "rationale": "Why this is about the intended keyword."
        }
      ]
    }
    

    包含所有新分类的未知条目,而不仅是需要提醒的条目。保存未通过的结果后,后续运行即可通过 coverage check 跳过它们。

  6. 保存判定并抑制重复提醒。

    newsjack coverage record <slug> --input decisions.json
    

    仅在已为运行过程记录创建运行文件夹时才添加 --run-dir RUN_DIR。直接读取命令的 JSON 标准输出。除非用户或运行环境明确要求生成产物,否则不要编写 record.json。只有 new_alerts 中的文章才是新近可提醒的;已提醒过的 URL 不得再次提醒。

  7. 向用户汇报结果。 SQLite 是持久记录。不要另写报告文件;根据 coverage check 的结果,以及运行时 coverage record 的结果,直接向用户撰写简短易读的消息:

    • 如果 new_alerts 非空,先列出新发现的真实报道。
    • 如果没有新提醒,说明没有新确认的报道。
    • 附上简短的运行摘要:搜索的关键词、起始日期、候选数量、跳过的已知条目数、新判定条目数、新提醒数。
    • 附上一行简洁的“已过滤”统计,按判定结果计数,并包括已知条目的先前判定;不要逐条罗列所有无效内容。
    • 使用可点击的链接。

    此技能旨在按计划无人值守运行,因此消息必须完整独立,用户无需打开任何文件即可了解本次运行结果。

输出规范

  • 不要编造发布日期、媒体或作者。如果 news-search 无法找回日期,请谨慎分类。
  • 不要使用新闻源头或时效性门槛;这不是新闻借势机会扫描。
  • 不要调用 angle-generator、journalist-fit-check 或 meanest-editor。
  • 不要安装原生 cron。定期运行应由 Agent 运行环境负责。

评论

支持 Markdown