pulse について
Reddit、Hacker News、オープンウェブ、任意で X/Twitter の最近の議論を引用付きでまとめる、時事性重視のリサーチスキルです。現在の話題やトレンド、プラットフォーム間の違いを調べる用途に向いています。
主な機能
- 01指定した期間内の検索
- 02Reddit、Hacker News、ウェブを対象
- 03X/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 で動作します。Phase 4 では、ライブインターフェースを試す前に、ローカルの X/Twitter 検索エクスポートを受け付けます。
設定可能な期間内に、Reddit、Hacker News、オープンウェブ、(任意で)X/Twitter におけるトピックについての発言をまとめる、最新動向を重視したリサーチスキルです。引用、エンゲージメントの指標、プラットフォーム横断のパターン分析を含む、まとまりのあるブリーフィングを1つ作成します。このスキルが捉えるのは、正式なリファレンスではなく、現在の会話です。
呼び出し
明示的なトリガーフレーズ:
- 「[トピック]についてpulseして」
- 「[トピック]で何が起きてる?」
- 「[トピック]について、みんな何と言ってる?」
- 「[トピック]についての現在の会話」
- 「[トピック]の動向を調べて」
- 「トレンド:[トピック]」
- 「[トピック]について情報を探して」
以下も対象です:最新動向を踏まえた競合調査、トレンド発見、ツール比較、オーディエンスのセンチメント分析。
エージェントの完全性ルール(Research-Pack の規約)
以下のルールは実行全体に適用されます。Research-Pack の規約を引き継いでおり、PR #657 のスキル横断的な一貫性監査によって固定されています。
- 実行規律。 Phase 1〜3 は並行して実行します(Reddit、HN、Web は相互に独立しています)。各フェーズ内では、呼び出しを順番に行います。各プラットフォームにつき、1秒あたり1クエリのレート制限。 同じフェーズ内で次の呼び出しを行う前に、応答を受信したことを確認します。
- ソース規律。 引用できるのは、このセッションでのツール呼び出しによって返されたソースのみです。学習済みの知識には
[Background — not from search]とラベルを付け、主要な調査結果の件数から除外します。 - 3種類の件数の追跡。 送信したクエリ数/受信したソース数(表示数)/引用したソース数。統合セクションに監査ログとしてインライン表示します。決定的な件数の算出には
scripts/citation_tracker.pyを使用します。 - 再試行ポリシー。 失敗した場合 → 3秒待機 → 1回だけ再試行 → ログに記録します。すべてのソースを通じて3回連続で失敗した場合: 停止してユーザーに警告し、収集済みの情報を共有します。空のファイルは決して渡しません。
- プラン階層の検出。 Reddit と HN は認証不要の公開 JSON API です(プランごとではなく、IP ごとにレート制限されます)。利用可能な場合は、応答ヘッダーからレート制限の兆候を示します。それ以外の場合は、適切に機能を縮退させます。
標準規約については references/research_pack_conventions.md を、レート制限の根拠については references/parallel_execution_discipline.md を参照してください。
Phase 0:Grill-Me インテーク(回答を迫る質問を2〜4個、1つずつ)
依存関係の順に質問します。各質問には、尋ねる理由を明記します。停止条件:最大4問。
Q1(起点)— トピックの具体性
トピックは何ですか?1〜2文で、具体的に述べてください。「AI」や「テクノロジー」では曖昧な調査になります。「小規模チーム向けのセルフホスト型 LLM デプロイ」や「エンタープライズのエンジニアリング組織における Claude Code の導入」なら、有用な回答が得られます。
尋ねる理由: 具体性が検索の質を左右します。曖昧なトピックからは、曖昧なブリーフィングしか得られません。トピックの範囲が広い場合、検索リソースをノイズに費やすよりも、今ここで絞り込みたいと考えています。
曖昧な回答は受け入れません。 ユーザーが「AI」と答えたら、1度だけ問い返します:「AI のどの側面ですか?導入、安全性、能力、規制、比較のどれですか?切り口を1つ選んでください。」1度問い返してもなお絞り込まない場合は、「トピックが曖昧なため、深掘りではなく概観レベルの調査です」という注意書きを明示して回答します。
Q2(Q1 に依存)— 切り口
最も重視する切り口は何ですか?1つ選んでください:
- トレンド — 何が加速または減速しているか
- センチメント — 人々がどう感じているか
- 問題 — 課題や不満
- 機会 — ギャップや満たされていないニーズ
- 比較 — 他の選択肢と比べてどうか
尋ねる理由: 切り口によって、重みを置くソース(センチメントなら 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)を取得します。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>を使って3つの件数の監査ログを開始します。このファイルは~/.pulse_sessions/<session>.jsonに保存され、実行中も保持されます。
フェーズ1:Reddit(HN + Webと並列)
API: reddit.com/search.json(未認証のパブリックJSON)。
クエリ(Reddit内で順次実行、1秒あたり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秒あたり1クエリに制限してください。レスポンスにX-Ratelimit-Remaining: 0が含まれるか、429が返された場合は3秒待ってから1回再試行します。それでも失敗する場合は、サブレディットを指定した検索(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— 期間内のストーリーsearch?query=<topic>&numericFilters=created_at_i><timestamp>&tags=comment— 期間内のコメント(議論のシグナルを捉えます)
失敗時の処理。 HNの結果が空の場合は、クエリを広げます(一般的でない名詞を削除)。それでも結果が空の場合は、最後の手段としてタイムスタンプフィルターを外し、結果に「期間外」と明記します。
HNの偏りに関する注記。 HNは技術者/開発者寄りです。統合結果には、「HNの意見は実装志向であり、ここでは消費者センチメントが十分に反映されません」と明記してください。
フェーズ 3:Web 検索(Reddit + HN と並行)
ツール: 利用可能な Web 検索 + 取得機能(例:WebSearch + WebFetch)。
クエリ戦略(Web 内では逐次実行、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 やナビゲーションのマークアップはスキップします。
引用のルール。 Web セクションの主張はすべて、取得した URL を根拠とする必要があります。スニペットだけを根拠に引用してはいけません。先にページを取得してください。
フェーズ 4:X/Twitter(逐次実行、任意)
最後に実行します。理由:
- 失敗したり、ブラウザー自動化が必要になったりする可能性が最も高い
- X のコンテンツは Reddit/HN と大きく重複するため、主なシグナルではなく追加情報になります
インターフェース(優先順位順):
- ユーザー提供の JSON エクスポート。 ライブリクエストの前にインポートします:
インポーターは Xquik Tweet Search、X API v2、および汎用 JSON エクスポートに対応しています。 レガシー形式とスネークケースのフィールドを正規化し、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 + Web)。
- 期待のシグナル — 繰り返し見られる熱意(特に 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 をもう一度尋ねます。1 回押し返された後は、「トピックが曖昧」という但し書きを付けて提出します。 |
| Reddit がブロックする/レート制限する | ?raw_json=1 を試すか、サブレディットに限定した検索に切り替えます。3 秒の再試行間隔を守ります。 |
| HN の結果が空 | クエリの範囲を広げ、最後の手段としてタイムスタンプフィルターを外し、結果に「期間外」と表示します。 |
| Web 検索で有用な結果が得られない | 出力にその旨を記し、情報源を捏造しません。 |
| ブラウザー自動化を利用できない | 提供されたエクスポートをインポートします。それ以外の場合は、注記を付けてフェーズ 4 をスキップします。 |
| ローカルの X エクスポートが無効 | フェーズ 4 を停止します。解析エラーを報告します。不足しているレコードを推測してはいけません。 |
| WebFetch がタイムアウトする | 読み込まれた内容を使用し、情報源に「途中で切り詰められた」と記します。 |
| 情報源全体で連続 3 回失敗 | 停止します。「早期に停止」と明記して、収集済みの情報を返します。空のファイルを提出してはいけません。 |
| すべての情報源で失敗 | 診断情報を添えてエラーを返します。空のファイルを提出してはいけません。 |
ツール
| スクリプト | 役割 |
|---|---|
scripts/time_window_calculator.py | 期間文字列(30d、7d など)から Unix タイムスタンプと Reddit の t= パラメーターを計算します。datetime.now() に基づくため、決定論的です。 |
scripts/citation_tracker.py | 3 種類のカウントを記録する監査ログと、ローカルの X エクスポートの正規化および重複排除を行います。 |
scripts/topic_slug_generator.py | 出力パス用のファイルシステムで安全なスラッグ生成と、日付の重複検出を行います。 |
参考資料
references/research_pack_conventions.md— エージェントの整合性ルールの根拠(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 で再度確認してください。