SuperAPI AI 工具集

newsletter-digest

写作与研究

查看项目

更新于 10-16 02:23

技能介绍

用途

Newsletter Digest 用于自动生成新闻简报摘要。它从 RSS 源聚合过去一周的文章,使用 Gemini 模型综合出本周头条故事,并将摘要发布到 Ghost CMS。该技能支持每周综述、主题深度解析和精选推荐三种摘要格式。

主要能力

  • 从 feeds.json 配置的 RSS 源抓取文章,筛选过去 7 天内发布的内容,按 URL 去重并按发布日期排序。
  • 使用 Gemini 模型(目标模型为 gemini-2.0-flash 或最新可用版本)综合生成摘要内容。
  • 支持三种摘要格式:每周综述(Weekly Roundup)、主题深度解析(Topic Deep Dive)、精选推荐(Curated Picks)。若用户未指定格式,默认使用每周综述。
  • 可将摘要发布到 Ghost CMS 作为草稿或直接发布。
  • 若未配置 Ghost,则输出 HTML、Markdown 和纯文本三种格式。
  • 内置写作风格规则:仅使用主动语态、短句、每句一个观点、不使用长破折号(用句号或逗号代替)、不使用分号、最终简报正文中不使用 Markdown 或星号、不使用话题标签。
  • 禁用词汇列表:incredible, amazing, leveraging, synergize, game-changing, game changer, delve, harness, unlock, groundbreaking, cutting-edge, remarkable, paradigm, revolutionize, disruptive, transformative, thrilled, excited to share, powerful, innovative, comprehensive, actionable, crucial, vital, pivotal, elucidate, utilize, dive deep, tapestry, illuminate, revolutionize。
  • 关键规则:摘要中的每项声明、统计数据和摘要必须来自抓取的文章,禁止编造数据点、引述或事实。若源文章无有意义内容,则跳过。

使用方式

步骤 1:检查设置

1a. 验证 feeds 是否已配置。检查技能目录中是否存在 feeds.json。若缺失,询问用户要监控哪些 RSS 源,并创建 feeds.json。格式为:

[
  { "url": "https://example.com/feed", "name": "Source Name" },
  { "url": "https://another.com/rss", "name": "Another Source" }
]

1b. 验证所需环境变量。检查 GEMINI_API_KEY(必需,用于综合生成)、GHOST_URL 和 GHOST_ADMIN_KEY(Ghost 发布必需,若仅输出则可选)。若缺少 GEMINI_API_KEY,停止并请用户设置。GHOST 配置可选,若未设置,技能输出格式化的 Markdown 而非发布。

1c. 验证脚本依赖。检查 node_modules 是否存在,若缺失则运行 npm install。

步骤 2:抓取和解析 Feed

运行抓取脚本:node /Users/ksd/Desktop/Varnan_skills/newsletter-digest/scripts/fetch-feeds.js

脚本功能:读取 feeds.json 获取源列表;使用 rss-parser 抓取每个源;筛选过去 7 天内发布的条目;按 URL 去重;按发布日期排序(最新在前);将结果保存到 /tmp/newsletter-digest-articles.json。若某个源出错,脚本记录警告并继续,单个坏源不会中断运行。

脚本完成后验证输出,检查文章总数、各源文章数和日期范围。若找到的文章少于 3 篇,警告用户并询问是否将日期范围扩展到 14 天。通过 --days=14 参数扩大窗口。

步骤 3:阅读格式规则

在生成任何内容前,完整阅读 references/digest-format.md,理解三种摘要格式及其适用场景、每种格式的章节结构和长度要求、归属规则(每项声明链接到来源)、语气和风格指南。阅读 references/output-template.md 并选择与请求格式匹配的模板。

步骤 4:使用 Gemini 综合生成

读取 /tmp/newsletter-digest-articles.json 并构建综合提示。提示结构包括:角色设定(新闻简报编辑)、来源列表(仅使用这些,不编造事实)、任务(按选定模板撰写指定格式的摘要)、规则(每项声明、统计和引述必须来自来源;使用主动语态、短句、允许缩写;不使用禁用词;不使用长破折号、分号、话题标签;每项主要声明后包含 Source: Name 归属;输出纯文本,仅使用 HTML 标题标签,不使用 Markdown 星号)。

使用此提示调用 Gemini。若响应包含任何禁用词或来源文章中不存在的编造统计数据,使用更严格的提示重新生成。

步骤 5:自检

在呈现前运行所有检查,先修复违规项:每项声明、统计和引述可追溯到来源文章;任何章节无禁用词;文本中无长破折号;文本中无分号;每个章节至少有一个带 URL 的来源归属;字数在格式目标范围内;无章节重复同一故事;标题具体(包含日期范围或期号,而非仅“Weekly Digest”);HTML 输出有效(若发布到 Ghost,无未闭合标签)。

步骤 6:格式化和预览

按以下顺序向用户呈现摘要:标题(期号日期范围或主题)、摘要内容(完整格式化文本)、来源列表(所有使用的文章及 URL)、字数和文章数。询问:“Ready to publish to Ghost as a draft, or would you like to edit first?”

步骤 7:发布到 Ghost 或输出

若 GHOST_URL 和 GHOST_ADMIN_KEY 已设置且用户确认,运行发布脚本:

node /Users/ksd/Desktop/Varnan_skills/newsletter-digest/scripts/ghost-publish.js \
  --title "DIGEST_TITLE" \
  --status "draft"

脚本读取 /tmp/newsletter-digest-output.json(由代理在步骤 6 写入)并发布到 Ghost。发布后,脚本返回草稿的 Ghost 管理 URL。向用户呈现:“Draft saved at: [URL]. Review and publish from your Ghost dashboard.” 若用户想立即发布,传递 --status "published"。

若 Ghost 未配置或用户说“仅输出”,以三种格式输出摘要:HTML(可直接粘贴到任何 CMS)、Markdown(用于 Substack、Notion 或 Hashnode)、纯文本(用于电子邮件客户端)。并添加说明:“Substack does not offer a public API. Copy the Markdown version into your Substack editor directly.”

适用场景

  • 需要定期从多个 RSS 源聚合内容并生成新闻简报的个人或团队。
  • 使用 Ghost CMS 作为发布平台的用户。
  • 需要将摘要输出到 Substack、Notion、Hashnode 或电子邮件客户端的用户。
  • 希望自动生成每周综述、主题深度解析或精选推荐格式摘要的场景。

限制

  • 需要 GEMINI_API_KEY 才能进行综合生成。
  • Ghost 发布需要 GHOST_URL 和 GHOST_ADMIN_KEY,若未配置则仅输出格式化内容。
  • Substack 没有公开 API,无法通过程序发布,需手动将 Markdown 版本粘贴到 Substack 编辑器。
  • 若抓取到的文章少于 3 篇,会警告用户并询问是否扩展日期范围。
  • 所有内容必须来自抓取的文章,禁止编造。
  • 脚本路径为 /Users/ksd/Desktop/Varnan_skills/newsletter-digest/,可能因环境不同而变化。