关于 pulse
面向时效性研究的技能,汇总 Reddit、Hacker News、开放网络及可选 X/Twitter 上围绕主题的近期讨论,并提供带引用的简报。适合关注当前舆论、趋势和跨平台差异的研究者。
主要功能
- 01按设定时间窗口检索
- 02覆盖 Reddit、Hacker News 与网络
- 03可导入 X/Twitter 搜索数据
- 04分析共识、争议与痛点
- 05生成带引用的研究简报
适用场景
- 01了解某主题近期讨论走向
- 02比较不同平台对产品的评价
- 03发现反复出现的用户问题
- 04追踪新近出现的趋势信号
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alirezarezvani/ claude-skills --skill pulse安装后在 Claude Code 中输入/pulse确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cross_platform_synthesis.mdparallel_execution_discipline.mdresearch_pack_conventions.mdscripts/citation_tracker.pytime_window_calculator.pytopic_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)— 角度
你最关注哪个角度?选一个:
- 趋势——哪些方面正在加速或减速
- 情绪——人们对此有何感受
- 问题——痛点和抱怨
- 机会——缺口和未满足的需求
- 比较——与替代方案相比表现如何
*我为什么要问:*角度决定哪些来源的权重更高(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 个问题,绝不合并提问。
预检
启动任何阶段前:
- 计算时间范围,运行
scripts/time_window_calculator.py --window <Nd>。获取created_at_i>(HN)的 Unix 时间戳,以及 Reddit 的t=参数(hour|day|week|month|year|all)。 - 生成输出 slug,运行
scripts/topic_slug_generator.py --topic "<topic>" --date $(date +%Y-%m-%d)。检查${RESEARCH_DIR}/pulse/<slug>-<date>.md是否已存在;如果存在,则追加-v2后缀或提醒用户。 - 启动三项计数审计日志,运行
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 次):
sort=top&t=<window>&q=<topic>— 时间范围内的热门帖子sort=new&t=<window>&q=<topic>— 时间范围内的新帖子(捕捉突发信号)- 对得分最高的前 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 次):
search?query=<topic>&numericFilters=created_at_i><timestamp>&tags=story— 时间范围内的故事search?query=<topic>&numericFilters=created_at_i><timestamp>&tags=comment— 时间范围内的评论(捕捉讨论信号)
失败处理。 如果 HN 返回空结果,则扩大查询范围(移除不常见的名词);如果仍然为空,最后再移除时间戳筛选条件,并将结果标注为“超出时间范围”。
HN 偏差说明。 HN 倾向于技术人员 / 构建者。在综合分析中说明这一点:“HN 的观点偏向实现;消费者情绪在这里的体现不足。”
第 3 阶段:网页搜索(与 Reddit + HN 并行)
工具: 可用的网页搜索 + 抓取工具(例如 WebSearch + WebFetch)。
查询策略(网页搜索内部按顺序进行,每秒 1 次):
- 可信出版物 —
"<topic>" site:nytimes.com OR site:wsj.com OR site:wired.com OR site:theverge.com OR site:techcrunch.com after:<date> - 近期评测 —
"<topic>" review <year>或"<topic>" "honest review" after:<date> - 真实观点来源 —
"<topic>" problems OR complaints OR "worth it" after:<date>
每个查询抓取排名靠前的 3–5 个 URL。截取到正文部分,跳过 Cookie 和导航标记。
引用规范。 网页部分的每项说法都必须能追溯到已抓取的 URL。不要仅凭搜索摘要引用;先抓取网页。
第 4 阶段:X/Twitter(按顺序进行,可选)
最后执行。原因:
- 最可能失败/需要浏览器自动化
- X 内容与 Reddit/HN 大量重叠,因此它补充的是增量信息,而非主要信号
接口(按优先级排序):
- 用户提供的 JSON 导出文件。 在任何实时请求前导入:
导入器支持 Xquik Tweet Search、X API v2 和通用 JSON 导出文件。 它会规范化旧版字段和 snake-case 字段,合并 X API 的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:00Zincludes.users, 过滤指定时间范围内的内容,并按 Tweet ID 去重。它不会发起网络请求, 也不需要 API 密钥。审计记录会保存文件名和 SHA-256 摘要,而非用户的 绝对路径。 - 如果运行环境中可用,则使用 Grok。
- 如果已通过身份验证,则使用 X API。
- 如果运行环境支持,则使用 浏览器自动化。
- 如果以上方式均不可用,则跳过并注明原因。
已说明的行为:
如果跳过第 4 阶段:添加标题
## X/Twitter,正文填写Skipped — [reason: no browser automation / no Grok / no X API]。不要假装有数据。
综合分析(跨平台模式)
第 1–4 阶段完成后(或跳过第 4 阶段后),撰写综合分析:
- 共识信号 — 至少 3 个平台认同的观点(置信度最高)。为每项附上引用的来源 URL。
- 争议性信号 — 各平台观点不一致之处。注明各方的说法。
- 痛点 — 各来源反复出现的抱怨(尤其是 Reddit + 网页)。
- 兴奋信号 — 反复出现的热情态度(尤其是 HN + X,如果可用)。
- 新兴趋势 — 较新的帖子中首次出现、旧帖子中没有提及的内容(比较
sort=new和sort=top)。 - 信息缺口 — 预期会出现、但明显缺失的内容。
每种模式都要引用支持该结论的来源 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 重新审查。