SuperAPI AI 工具集

shiplog

写作与研究

查看项目

更新于 10-15 10:08

技能介绍

用途

shiplog 用于生成“发布回顾”(shiplog):把自上次运行以来发生的所有发布活动汇总成两件产物——一篇主题化、面向人类阅读的摘要文章(digest),以及一条紧凑、要点式、可直接发布的帖子(shiplog post)。它覆盖跨仓库的 PR、安全修复、星标变化以及 X 上的传播情况。

主要能力

  • 跨仓库 PR 汇总:按仓库分组统计操作者在时间窗口内创建的 PR,并给出总数。
  • 旗舰仓库头条数字:对配置的旗舰仓库统计窗口内的提交数与已合并 PR 数。
  • 安全修复亮点:筛选操作者在非自有仓库中提交、且标题匹配安全关键词(如 security、ssrf、cve、credential、sandbox、escape、injection、vuln、redos、xss、toctou、path traversal、prototype pollution、deserial)的 PR,已合并的作为重点故事。
  • 星标增量:对旗舰仓库读取当前星标总数,与上一次快照对比得出增量;若无历史快照则只报告总数并注明“尚无基线,增量从下次运行开始”,不虚构增量。
  • X 动态读取:通过 X.AI 的 x_search 工具读取操作者账号与产品账号在窗口内的帖子,区分原创与转发,记录互动数(点赞、转发、回复)与直链。
  • 生态与传播扫描:若配置了侦察账号,则扫描这些账号对产品的提及(回顾、榜单、合作分享),并记录粉丝数。
  • 状态管理:通过 memory/state/shiplog-last.json 记录上次运行时间,保证窗口不重叠;每次完成运行都会推进状态(包括无新内容的情况)。

使用方式

技能接受可选、以空格分隔的标志参数:

  • since:YYYY-MM-DD — 覆盖窗口起点(默认:上次运行时间)。
  • days:N — 窗口为最近 N 天。
  • dry-run — 仅渲染到标准输出;不写文章、不写状态、不通知。
  • owner/repo — 将 GitHub 覆盖范围缩小到该仓库。
  • 其他任意词 — 作为焦点/主题过滤(产品名或关键词)。

留空表示覆盖所有已配置仓库中自上次运行以来发布的一切。

时间窗口始终为“自上次运行以来”,由 aeon.yml 的调度决定是每日、每周还是按需回顾。所有时间过滤都使用计算出的 $SINCE,不使用“自周一以来”等易漂移的写法。

配置项全部为派生值,无硬编码:操作者(通过 gh api user 获取)、产品 X 账号(memory/products.md 的 handles: 行)、旗舰仓库(products.md 中标记为 public 的 repos:)、被监视仓库(memory/watched-repos.md,否则用 products.md 的 repos:)、生态侦察账号(products.md 的 scouts: 行,可选)、星标状态(memory/state/shiplog-stars.json)。若既无 watched-repos.md 也无 products.md 提供仓库,则以 SHIPLOG_NO_REPOS 退出(通知并记录,不写文章)。配置缺失的部分(X 账号、侦察账号)会被优雅跳过而非失败。

写作前会读取 STRATEGY.md、memory/MEMORY.md、最近 7 天的 memory/logs/ 作为上下文,并读取 soul/SOUL.md 与 soul/STYLE.md 以匹配语气;若 soul/ 为空,则使用清晰、直接、中性的语气。

工作流程

  1. 计算窗口:读取状态文件中的 last_run_at,否则默认 7 天前;since: 与 days: 可覆盖。
  2. GitHub 活动:用 gh 搜索操作者 PR、统计旗舰仓库提交与合并 PR、筛选外部安全 PR、计算星标增量。每个来源单独记录成功/失败,单个端点失败只记录并继续,不中止整个技能。
  3. X 活动:以 X.AI API 直连 curl 为主路径,分别抓取操作者账号与产品账号;若主路径因真实原因失败,可退回 WebFetch 公开主页(质量较低);若全部失败则设为 x_source=none,只写 GitHub 部分并注明缺口,绝不中止。
  4. 生态与传播扫描:仅在配置了侦察账号时执行;产品传播源(OpenRouter / x402 / 分析)仅在配置时读取,否则说明“尚未接入产品传播源”。
  5. 窗口分类:0 PR 且 0 旗舰提交且无显著 X → SHIPLOG_NOTHING_NEW(不写文章,仍推进状态);少于 3 项实质发布 → SHIPLOG_LIGHT(短帖);否则 → SHIPLOG_OK(完整摘要 + 帖子)。若参数缩小到单一仓库/项目且无匹配 → SHIPLOG_NO_MATCH(通知并退出,仍推进状态)。
  6. 综合与写作:文章直接写入 output/articles/shiplog-${TODAY}.md(不建分支、不提 PR),包含主题化“发布了什么”章节、数字行(PR · 提交 · 星标增量)、传播/生态以及遇到的缺口;随后追加可直接发布的 shiplog 帖子,并另附一个紧凑线程版本和一个 3 要点短版本。
  7. 推进状态:除非 dry-run,否则写入 last_run_at、last_commit_sha、window_start;每次完成运行都推进,包括无新内容的情况。
  8. 通知:将帖子写入临时文件并通过 ./notify -f 发送,末尾附文章 URL;无新内容/无匹配时发送一行状态。
  9. 记录日志:向 memory/logs/${TODAY}.md 追加状态、窗口、PR/提交数、外部安全 PR 数、星标、X 来源、文章路径、状态推进时间与各来源成功/失败情况。

适用场景

适合需要定期向受众汇报“最近发布了什么”的开发者或团队:跨多个仓库汇总发布内容、突出安全修复、展示星标增长与社区传播,并生成可直接发到 X 的帖子。由于窗口是“自上次运行以来”,同一技能可适配日更、周更或按需回顾。

限制

  • 跨仓库 PR/提交可见性需要全局令牌(GH_GLOBAL);仅用内置令牌只能看到本仓库加公开仓库。
  • X 读取依赖 XAI_API_KEY 与 X.AI 的 x_search 工具,单次调用通常耗时 30–120 秒,超时按真实原因记录,不视为密钥不可用。
  • 星标增量需要历史快照,首次运行无基线时不报告增量。
  • 配置缺失的章节(X 账号、侦察账号、产品传播源)会被跳过,不会失败。
  • 所有数字按实际测量值保留,不四舍五入、不虚构。
  • 若窗口内无任何活动,则不生成文章。
  • 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。