mcpField
P
pulse

pulse

github.com/alirezarezvani生产力29.0k328 次安装1 天前更新
代码仓库

关于 pulse

面向时效性研究的技能,汇总 Reddit、Hacker News、开放网络及可选 X/Twitter 上围绕主题的近期讨论,并提供带引用的简报。适合关注当前舆论、趋势和跨平台差异的研究者。

主要功能

  1. 01按设定时间窗口检索
  2. 02覆盖 Reddit、Hacker News 与网络
  3. 03可导入 X/Twitter 搜索数据
  4. 04分析共识、争议与痛点
  5. 05生成带引用的研究简报

适用场景

  1. 01了解某主题近期讨论走向
  2. 02比较不同平台对产品的评价
  3. 03发现反复出现的用户问题
  4. 04追踪新近出现的趋势信号

安装

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

$npx skills add https://github.com/alirezarezvani/claude-skills --skill pulse

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
cross_platform_synthesis.md
parallel_execution_discipline.md
research_pack_conventions.md
scripts/
citation_tracker.py
time_window_calculator.py
topic_slug_generator.py

详细介绍

Pulse — 多来源近期动态研究

**可移植性:**适用于 Claude Code CLI 和 Claude.ai。第 4 阶段会先接受本地 X/Twitter 搜索导出文件,再尝试实时界面。

一项侧重近期动态的研究技能,可在可配置的时间范围内,综合 Reddit、Hacker News、开放网络以及(可选的)X/Twitter 上人们对某个主题的讨论。输出是一份连贯的简报,包含引文、互动信号和跨平台模式分析。该技能捕捉的是当前讨论,而非权威参考资料。

调用方式

明确的触发短语:

  • “pulse on [主题]”
  • “what's happening with [主题]”
  • “what are people saying about [主题]”
  • “current conversation about [主题]”
  • “take the pulse of [主题]”
  • “trending: [主题]”
  • “find me info on [主题]”

也适用于:带有近期动态关注点的竞争对手研究、趋势发现、工具比较、受众情绪分析。

Agent 完整性规则(Research-Pack 约定)

以下规则适用于整个运行过程。它们继承自 research-pack 约定,并由 PR #657 的跨技能一致性审计锁定。

  • **执行规范。**阶段 1–3 并行运行(Reddit、HN 和 Web 彼此独立)。每个阶段内仅按顺序调用。**每个平台每秒 1 次查询的速率限制。**同一阶段内,确认收到响应后再进行下一次调用。
  • 来源规范。仅引用本次会话的工具调用返回的来源。训练知识需标记为 [Background — not from search],且不计入主要发现数量。
  • **三项计数跟踪。**已发送的查询数/收到的来源数(已展示)/引用的来源数。在综合部分的审计日志中内联显示。使用 scripts/citation_tracker.py 进行确定性计数。
  • **重试策略。**失败时 → 等待 3 秒 → 重试一次 → 记录日志。所有来源连续失败 3 次后:停止、提醒用户,并分享已收集的内容。绝不交付空文件。
  • **套餐层级检测。**Reddit 和 HN 是未经身份验证的公共 JSON API(按 IP 限流,而非按套餐限流)。如有可用的响应标头,则显示限流信号;否则应优雅降级。

规范见 references/research_pack_conventions.md,限流理由见 references/parallel_execution_discipline.md。

阶段 0:引导式提问(一次一个,共 2–4 个必要问题)

按依赖顺序提问。每个问题都明确说明“我为什么要问”。停止条件:最多 4 个问题。

Q1(根问题)— 主题具体性

主题是什么?请用 1–2 句话说明,尽量具体。“AI”或“科技”只会得到一份笼统的调查;“面向小团队的自托管大模型部署”或“Claude Code 在企业工程团队中的采用情况”才能得到有用的答案。

*我为什么要问:*具体程度决定搜索质量。主题模糊,简报也会模糊。如果你的主题范围很广,我宁愿现在就缩小范围,也不愿把搜索预算浪费在噪声上。

**拒绝含糊回答。**如果用户说“AI”,追问一次:“关于 AI 的哪方面——采用、安全性、能力、监管,还是比较?选一个角度。”如果用户在被追问一次后仍不愿缩小范围,则继续交付,并明确注明“主题模糊——仅做概览调查,不做深入分析”。

Q2(取决于 Q1)— 角度

你最关注哪个角度?选一个:

  1. 趋势——哪些方面正在加速或减速
  2. 情绪——人们对此有何感受
  3. 问题——痛点和抱怨
  4. 机会——缺口和未满足的需求
  5. 比较——与替代方案相比表现如何

*我为什么要问:*角度决定哪些来源的权重更高(Reddit 侧重情绪,HN 侧重技术批评,Web 侧重趋势报道),以及我如何对综合结果排序。

必须选择。**推荐的默认选项:**趋势,除非主题明显更适合其他角度。

Q3(始终询问)— 时间范围

时间范围:7 / 14 / 30 / 60 / 90 天?默认值为 30 天。

提问原因: 7 天能捕捉到对话中的突发变化;90 天能捕捉到持续的叙事转变。请根据新闻时效性选择。

提供选项并设定默认值。

Q4(取决于 Q1)— 平台范围

有没有要跳过的平台?默认情况下,我会覆盖 Reddit + Hacker News + 开放网络;如果支持浏览器自动化,也会覆盖 X/Twitter。可跳过你不关心的平台。

提问原因: 跳过平台可以节省搜索额度。Reddit 上的情绪表达占主导;HN 上的技术评论占主导;开放网络覆盖面更广;X 上的突发对话占主导。请跳过不符合你关注角度的平台。

仅当 Q1 + Q2 表明某些平台明显不相关时才提问(例如,面向消费者情绪的话题 → HN 用处较小)。否则默认选择“所有平台”。

**停止条件:**完成 Q4 后(或因依赖关系跳过问题而提前结束),确认选择并启动第 1 阶段。最多提问 4 个问题,绝不合并提问。

预检

启动任何阶段前:

  1. 计算时间范围,运行 scripts/time_window_calculator.py --window <Nd>。获取 created_at_i>(HN)的 Unix 时间戳,以及 Reddit 的 t= 参数(hour|day|week|month|year|all)。
  2. 生成输出 slug,运行 scripts/topic_slug_generator.py --topic "<topic>" --date $(date +%Y-%m-%d)。检查 ${RESEARCH_DIR}/pulse/<slug>-<date>.md 是否已存在;如果存在,则追加 -v2 后缀或提醒用户。
  3. 启动三项计数审计日志,运行 scripts/citation_tracker.py --action start --session pulse-<date>-<slug>。此文件位于 ~/.pulse_sessions/<session>.json,将在整个运行过程中保留。

第 1 阶段:Reddit(与 HN + Web 并行)

API: reddit.com/search.json(未认证的公开 JSON)。

查询(在 Reddit 内按顺序执行,每秒 1 次):

  1. sort=top&t=<window>&q=<topic> — 时间范围内的热门帖子
  2. sort=new&t=<window>&q=<topic> — 时间范围内的新帖子(捕捉突发信号)
  3. 对得分最高的前 3–5 篇帖子,获取评论 JSON(<post-url>.json?limit=top),提取排名前 10–20 的评论。

请求头 / 速率限制。 Reddit 根据 IP 而非套餐进行速率限制。将频率限制为每秒 1 次。如果响应包含 X-Ratelimit-Remaining: 0 或返回 429,则等待 3 秒后重试一次。如果仍然失败,则退回到 subreddit 限定搜索(r/<topic-subreddit>/search.json)或使用 ?raw_json=1。

记录每次查询: citation_tracker.py --action record_sent --session NAME --query "..."。 记录接收数量: citation_tracker.py --action record_received --session NAME --count N。

第 2 阶段:Hacker News(与 Reddit + Web 并行)

API: Algolia HN 搜索(hn.algolia.com/api/v1/)。

查询(在 HN 内按顺序执行,每秒 1 次):

  1. search?query=<topic>&numericFilters=created_at_i><timestamp>&tags=story — 时间范围内的故事
  2. search?query=<topic>&numericFilters=created_at_i><timestamp>&tags=comment — 时间范围内的评论(捕捉讨论信号)

失败处理。 如果 HN 返回空结果,则扩大查询范围(移除不常见的名词);如果仍然为空,最后再移除时间戳筛选条件,并将结果标注为“超出时间范围”。

HN 偏差说明。 HN 倾向于技术人员 / 构建者。在综合分析中说明这一点:“HN 的观点偏向实现;消费者情绪在这里的体现不足。”

第 3 阶段:网页搜索(与 Reddit + HN 并行)

工具: 可用的网页搜索 + 抓取工具(例如 WebSearch + WebFetch)。

查询策略(网页搜索内部按顺序进行,每秒 1 次):

  1. 可信出版物 — "<topic>" site:nytimes.com OR site:wsj.com OR site:wired.com OR site:theverge.com OR site:techcrunch.com after:<date>
  2. 近期评测 — "<topic>" review <year> 或 "<topic>" "honest review" after:<date>
  3. 真实观点来源 — "<topic>" problems OR complaints OR "worth it" after:<date>

每个查询抓取排名靠前的 3–5 个 URL。截取到正文部分,跳过 Cookie 和导航标记。

引用规范。 网页部分的每项说法都必须能追溯到已抓取的 URL。不要仅凭搜索摘要引用;先抓取网页。

第 4 阶段:X/Twitter(按顺序进行,可选)

最后执行。原因:

  • 最可能失败/需要浏览器自动化
  • X 内容与 Reddit/HN 大量重叠,因此它补充的是增量信息,而非主要信号

接口(按优先级排序):

  1. 用户提供的 JSON 导出文件。 在任何实时请求前导入:
    python3 scripts/citation_tracker.py \
      --action import_sources \
      --session NAME \
      --input /path/to/x-search.json \
      --platform x \
      --since 2026-07-01T00:00:00Z \
      --until 2026-08-01T00:00:00Z
    
    导入器支持 Xquik Tweet Search、X API v2 和通用 JSON 导出文件。 它会规范化旧版字段和 snake-case 字段,合并 X API 的 includes.users, 过滤指定时间范围内的内容,并按 Tweet ID 去重。它不会发起网络请求, 也不需要 API 密钥。审计记录会保存文件名和 SHA-256 摘要,而非用户的 绝对路径。
  2. 如果运行环境中可用,则使用 Grok。
  3. 如果已通过身份验证,则使用 X API。
  4. 如果运行环境支持,则使用 浏览器自动化。
  5. 如果以上方式均不可用,则跳过并注明原因。

已说明的行为:

如果跳过第 4 阶段:添加标题 ## X/Twitter,正文填写 Skipped — [reason: no browser automation / no Grok / no X API]。不要假装有数据。

综合分析(跨平台模式)

第 1–4 阶段完成后(或跳过第 4 阶段后),撰写综合分析:

  1. 共识信号 — 至少 3 个平台认同的观点(置信度最高)。为每项附上引用的来源 URL。
  2. 争议性信号 — 各平台观点不一致之处。注明各方的说法。
  3. 痛点 — 各来源反复出现的抱怨(尤其是 Reddit + 网页)。
  4. 兴奋信号 — 反复出现的热情态度(尤其是 HN + X,如果可用)。
  5. 新兴趋势 — 较新的帖子中首次出现、旧帖子中没有提及的内容(比较 sort=new 和 sort=top)。
  6. 信息缺口 — 预期会出现、但明显缺失的内容。

每种模式都要引用支持该结论的来源 URL。每条引用都使用 citation_tracker.py --action record_cited --session NAME --url "..."。

检测启发式规则见 references/cross_platform_synthesis.md。

输出

保存到文件并粘贴到聊天中:

文件: ${RESEARCH_DIR}/pulse/<topic-slug>-<YYYY-MM-DD>.md(路径来自 topic_slug_generator.py)。

格式:

# [TOPIC] — Pulse (Last [N] Days)
*Generated: [DATE] | Angle: [Q2 choice]*

## TL;DR
[2-3 sentences max]

## Reddit
### Top Posts
- **[Title]** (r/sub) — [score, comments] — [summary] — [URL]
### What Reddit Is Saying
[Narrative paragraph]

## Hacker News
### Notable Stories
- **[Title]** — [points, comments] — [summary] — [URL]
### What HN Is Saying
[Narrative paragraph; note HN's technical/builder bias]

## Web
### Key Sources
- **[Title]** ([Publication]) — [takeaway] — [URL]
### What the Web Is Saying
[Narrative paragraph]

## X/Twitter (if available)
[Cleaned response, with handles/references preserved]
[Or: "Skipped — [reason]"]

## Cross-Platform Patterns
[Highest-confidence signals across sources]

## Key Takeaways
- [3-5 bullets]

## Content Angles (if applicable)
[2-3 specific angles supported by the data]

---
*Audit:* Queries sent: N (Reddit: a, HN: b, Web: c, X: d|skipped).
Sources received: M. Sources cited: K. Training knowledge: 0 ([Background] excluded from count).

错误处理

失败情况处理方式
主题过于模糊(Q1)拒绝开始。重新询问 Q1,并提供示例。若用户再次坚持,交付结果并注明“主题模糊”的注意事项。
Reddit 屏蔽请求/限制速率尝试 ?raw_json=1,或改用限定 subreddit 的搜索。遵守 3 秒重试间隔。
HN 返回空结果扩大查询范围;最后再移除时间戳筛选,并将结果标注为“超出时间范围”。
网页搜索没有有用结果在输出中注明;不要捏造来源。
浏览器自动化不可用导入用户提供的导出文件。否则跳过第 4 阶段并注明原因。
本地 X 导出文件无效停止第 4 阶段。报告解析错误。不要猜测缺失记录。
WebFetch 超时使用已加载的内容,并将来源标记为“已截断”。
跨来源连续失败 3 次停止。返回已收集的内容,并明确注明“提前停止”。不要提交空文件。
所有来源均失败返回错误和诊断信息。不要提交空文件。

工具

脚本用途
scripts/time_window_calculator.py根据时间窗口字符串(30d、7d 等)计算 Unix 时间戳和 Reddit t= 参数。结果由 datetime.now() 确定。
scripts/citation_tracker.py三计数审计日志,以及本地 X 导出内容的规范化和去重。
scripts/topic_slug_generator.py生成适用于文件系统的 slug,并检测输出路径中的重复日期。

参考资料

  • references/research_pack_conventions.md — Agent Integrity Rules 规范(7 个以上来源:Google SRE、Reddit API 文档、Algolia HN 文档、指数退避相关文献、引用规范)
  • references/cross_platform_synthesis.md — 跨平台共识、争议和痛点检测(7 个以上来源)
  • references/parallel_execution_discipline.md — 每秒 1 个请求的依据和套餐等级信号(7 个以上来源)

应拒绝的反模式

  • 用户尚未确认主题具体程度(Q1)就开始搜索
  • 一次性批量提出问题,而不是每次只问一个
  • 使用无法适应 API 变更的硬编码 URL(注意其格式,并说明格式可能会演变)
  • 在技能正文中提及无关的人物或品牌
  • 与某一种 X/Twitter 界面紧密耦合
  • 将重复的 Tweet ID 或重复的引用 URL 计为不同来源
  • 来源失效时缺少回退行为
  • 只说“使用[特定工具]”,却不解释该工具的作用
  • 将训练知识计入引用数量
  • 为了填满某个部分而捏造来源

版本: 1.0.0 源规范: megaprompts/01-pulse-megaprompt.md(维护者本地的草案规范——已加入 gitignore,未包含在公开仓库中) 构建模式: 路径 B(直接转换)。如果规范与实现出现偏差,请使用 /cs-grill-with-docs 重新审查。

评论

支持 Markdown