coverage-tracker

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Coverage Tracker

覆盖追踪器

Track whether configured keywords appeared in real coverage. Keep this simple:
news-search
collects dated article evidence, you dedupe and judge with the keyword's meaning snippet, and the CLI only stores config plus seen/alert state.
This is not
newsjack-detector
. Do not score newsjacking opportunities, generate angles, assess standing, or use monitor profiles.
追踪配置的关键词是否出现在有效报道中。保持简洁:
news-search
收集带日期的文章证据,你可以借助关键词的含义片段进行去重和判断,CLI仅存储配置以及已查看/提醒状态。
这不是
newsjack-detector
。请勿为新闻劫持机会评分、生成角度、评估立场或使用监控配置文件。

Runtime Mode

运行模式

  • Full Mode: Use this in Claude Code, Codex, OpenClaw, Hermes, or another capable agent harness with shell, filesystem, network, and local CLI access. Full Mode can read tracker config, check SQLite seen-state, record decisions, and suppress repeat alerts.
  • Limited Mode: Use this in Claude.ai chat, ChatGPT chat, Claude Cowork, or any restricted runtime without shell/filesystem/CLI access. Do not attempt
    curl
    ,
    npm
    , or on-demand CLI installation. Run a one-off manual coverage check from pasted/searchable evidence and disclose that no tracker config, SQLite state, or repeat suppression was used.
Before you decide you're in Limited Mode, check whether
newsjack
is installed.
It ships as a prebuilt, bundled binary — you do not need Go, a compiler, or any build/install step to run it. Never look for a Go toolchain, and never declare the CLI "missing" or tell the user they need a "Go environment" without running this check first:
  1. Run
    newsjack --version
    . If it prints a version, you're in Full Mode — use plain
    newsjack ...
    for every command.
  2. If
    newsjack
    isn't on
    PATH
    , try the bundled location
    ~/.newsjack/bin/newsjack --version
    . If that prints a version, use that full path in place of
    newsjack
    everywhere below.
  3. Only if both fail (and you genuinely have no shell) are you in Limited Mode.
The bundled binary is almost always already installed — assume Full Mode and verify, don't assume it's missing.
  • 完整模式: 在Claude Code、Codex、OpenClaw、Hermes或其他具备Shell、文件系统、网络和本地CLI访问权限的智能代理环境中使用此模式。完整模式可读取追踪器配置、检查SQLite已查看状态、记录决策并抑制重复提醒。
  • 受限模式: 在Claude.ai聊天、ChatGPT聊天、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权限)时,才处于受限模式。
捆绑二进制文件几乎总是已预先安装——默认假设处于完整模式并进行验证,不要默认认为它缺失。

Workflow

工作流程

In Limited Mode, skip the CLI state steps and:
  1. Ask for the keyword, what it means, lookback window, and any exclusions if they are not already present.
  2. Use pasted links first. If search tools are available, search the keyword plus a recency bound and keep dated, attributed article evidence when available.
  3. Dedupe obvious repeats by URL/title/outlet/date.
  4. Classify each item with the verdicts below.
  5. Return a short inline report with new likely coverage, filtered counts, and a Limited Mode caveat that repeat suppression was unavailable.
In Full Mode, run the persistent workflow:
  1. Find the tracker.
    • If the user gave a slug, run
      newsjack coverage status <slug>
      .
    • If working in a source checkout, prefer
      bin/newsjack
      .
    • If no slug is given, ask which tracker to run unless local context makes it obvious.
    • Read the returned
      config_path
      .
  2. Search each keyword.
    • Read the current date from the system (e.g. run
      date
      ); do not recall it from memory. Compute
      since_date
      as that date minus
      lookback_days
      from the config, defaulting to
      2
      .
    • For each keyword, call
      news-search
      with exactly:
      text
      "keyword" after:YYYY-MM-DD
    • If the keyword has aliases, search each alias the same way, but keep the original keyword entry attached.
    • Keep dated, attributed article fields from
      news-search
      :
      title
      ,
      url
      ,
      outlet
      ,
      author
      ,
      published_at
      , and snippet/summary when available.
  3. Dedupe and check stored decisions before using the LLM.
    • Dedupe exact canonical URLs first, then obvious same-article duplicates by title/outlet/date.
    • Create a minimal candidate JSON file only because the CLI helper consumes a file. Put it in a temporary location, or in a timestamped run folder if your harness normally keeps run artifacts:
      json
      {
        "items": [
          {
            "keyword": "profound",
            "title": "Article title",
            "url": "https://...",
            "outlet": "Outlet",
            "author": "Author or null",
            "published_at": "2026-06-05T12:00:00Z",
            "snippet": "Search snippet or summary"
          }
        ]
      }
    • Run:
      bash
      newsjack coverage check <slug> --input candidates.json
    • Do not reclassify
      known_items
      unless the user explicitly asks for a fresh review. Use their
      prior_decision
      to count filtered/known results and suppress repeat alerts.
    • Classify only
      unknown_items
      .
  4. LLM classify unknown items.
    • Use the keyword's
      means
      field as the authority for entity matching.
    • Reject generic-word usage and wrong entities, especially for ambiguous keywords like
      profound
      .
    • Do not alert from title/snippet keyword presence alone. When the snippet leaves the verdict unclear, read the article before deciding.
    Use these verdicts:
    • real_feature
      : the article is substantially about the intended entity/product/person. Alert.
    • substantive_mention
      : meaningful paragraph-level mention, but not a feature. Save, normally no alert.
    • passing_mention
      : brief mention only. Save, no alert.
    • wrong_entity
      : the keyword refers to something else. Save, no alert.
    • junk
      : SEO, scraper, duplicate landing page, job post, docs/help page, or non-news. Save, no alert.
    • uncertain
      : insufficient evidence. Save, no alert.
  5. Record only newly classified unknown items. If there are no
    unknown_items
    , skip
    coverage record
    and report from the
    coverage check
    result.
    If you classified new items, write the minimum
    decisions.json
    needed by the CLI:
    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."
        }
      ]
    }
    Include every newly classified unknown item, not only alerts. Saving rejects lets future runs skip them through
    coverage check
    .
  6. Persist decisions and suppress repeat alerts.
    bash
    newsjack coverage record <slug> --input decisions.json
    Add
    --run-dir RUN_DIR
    only when you already created a run folder for harness provenance. Read the command's JSON stdout directly. Do not write
    record.json
    unless the user or harness explicitly wants artifacts. Only articles in
    new_alerts
    are newly alertable; previously alerted URLs must not be re-alerted.
  7. Deliver the result to the user. SQLite is the durable record. Do not write a separate report file; compose a short, readable message straight to the user from
    coverage check
    and, when run,
    coverage record
    :
    • If
      new_alerts
      is non-empty, lead with the new real coverage items.
    • If there are no new alerts, say there is no new confirmed coverage.
    • Include a short run summary: keywords searched, since date, candidate count, skipped-known count, newly judged count, new alert count.
    • Include a quiet "Filtered" line with counts by verdict, including prior decisions from known items, not a dump of every junk item.
    • Use clickable links.
    This skill is meant to run unattended on a schedule, so the message must stand alone — the user should not have to open any file to understand the run.
在受限模式下,跳过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
      时严格使用以下格式:
      text
      "keyword" after:YYYY-MM-DD
    • 如果关键词有别名,以相同方式搜索每个别名,但保留原始关键词条目关联。
    • 保留
      news-search
      返回的带日期、有来源的文章字段:
      title
      url
      outlet
      author
      published_at
      ,以及可用的片段/摘要。
  3. 在使用LLM之前进行去重并检查已存储的决策。
    • 首先去除完全相同的规范URL,然后通过标题/媒体/日期去除明显的同一文章重复项。
    • 创建一个最小化的候选JSON文件,仅因为CLI助手需要读取文件。将其放在临时位置,或者如果你的代理环境通常保留运行 artifacts,则放在带时间戳的运行文件夹中:
      json
      {
        "items": [
          {
            "keyword": "profound",
            "title": "Article title",
            "url": "https://...",
            "outlet": "Outlet",
            "author": "Author or null",
            "published_at": "2026-06-05T12:00:00Z",
            "snippet": "Search snippet or summary"
          }
        ]
      }
    • 运行:
      bash
      newsjack coverage check <slug> --input candidates.json
    • 除非用户明确要求重新审核,否则不要重新分类
      known_items
      。使用它们的
      prior_decision
      统计过滤/已知结果并抑制重复提醒。
    • 仅对
      unknown_items
      进行分类。
  4. LLM分类未知条目。
    • 使用关键词的
      means
      字段作为实体匹配的权威依据。
    • 拒绝通用词汇用法和错误实体,尤其是对于
      profound
      这类歧义关键词。
    • 不要仅根据标题/片段中的关键词出现情况发出提醒。当片段无法明确判定时,先阅读文章再做决定。
    使用以下判定结果:
    • real_feature
      :文章主要围绕目标实体/产品/人物展开。发出提醒。
    • substantive_mention
      :有意义的段落级提及,但并非核心内容。保存,通常不发出提醒。
    • passing_mention
      :仅简短提及。保存,不发出提醒。
    • wrong_entity
      :关键词指代其他事物。保存,不发出提醒。
    • junk
      :SEO内容、爬虫页面、重复着陆页、招聘信息、文档/帮助页面或非新闻内容。保存,不发出提醒。
    • uncertain
      :证据不足。保存,不发出提醒。
  5. 仅记录新分类的未知条目。 如果没有
    unknown_items
    ,跳过
    coverage record
    并根据
    coverage check
    的结果生成报告。
    如果分类了新条目,编写CLI所需的最小化
    decisions.json
    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. 持久化决策并抑制重复提醒。
    bash
    newsjack coverage record <slug> --input decisions.json
    仅当你已为代理环境溯源创建了运行文件夹时,才添加
    --run-dir RUN_DIR
    。直接读取命令的JSON标准输出。除非用户或代理环境明确需要 artifacts,否则不要写入
    record.json
    。只有
    new_alerts
    中的文章是新的可提醒内容;之前已提醒过的URL不得再次提醒。
  7. 向用户交付结果。 SQLite是持久化记录。不要编写单独的报告文件;直接根据
    coverage check
    (以及运行时的
    coverage record
    )向用户撰写简短、易读的消息:
    • 如果
      new_alerts
      非空,首先列出新的有效覆盖条目。
    • 如果没有新提醒,告知用户没有新的已确认覆盖内容。
    • 包含简短的运行摘要:搜索的关键词、起始日期、候选条目数量、跳过的已知条目数量、新判定条目数量、新提醒数量。
    • 包含一行简洁的“已过滤”统计,按判定结果分类统计数量,包括已知条目的先前决策,不要列出每个垃圾条目。
    • 使用可点击链接。
    此技能旨在按计划无人值守运行,因此消息必须独立完整——用户无需打开任何文件即可理解运行结果。

Output Discipline

输出规范

  • Do not invent publication dates, outlets, or authors. If
    news-search
    cannot recover a date, classify cautiously.
  • Do not use story-origin or freshness gates; this is not a newsjack opportunity scan.
  • Do not call
    angle-generator
    ,
    journalist-fit-check
    , or
    meanest-editor
    .
  • Do not install native cron. Recurrence belongs to the agent harness.
  • 不要编造发布日期、媒体或作者。如果
    news-search
    无法获取日期,请谨慎分类。
  • 不要使用故事来源或新鲜度门槛;这不是新闻劫持机会扫描。
  • 不要调用
    angle-generator
    journalist-fit-check
    meanest-editor
  • 不要安装原生cron。周期性运行应由代理环境负责。