mcpField
P
pulse

pulse

github.com/alirezarezvani生産性29.0k328 回インストール1 日前に更新
リポジトリ

pulse について

Reddit、Hacker News、オープンウェブ、任意で X/Twitter の最近の議論を引用付きでまとめる、時事性重視のリサーチスキルです。現在の話題やトレンド、プラットフォーム間の違いを調べる用途に向いています。

主な機能

  1. 01指定した期間内の検索
  2. 02Reddit、Hacker News、ウェブを対象
  3. 03X/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 で動作します。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つ選んでください:

  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. 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> を使って3つの件数の監査ログを開始します。このファイルは~/.pulse_sessions/<session>.jsonに保存され、実行中も保持されます。

フェーズ1:Reddit(HN + Webと並列)

API: reddit.com/search.json(未認証のパブリックJSON)。

クエリ(Reddit内で順次実行、1秒あたり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秒あたり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クエリ):

  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:Web 検索(Reddit + HN と並行)

ツール: 利用可能な Web 検索 + 取得機能(例:WebSearch + WebFetch)。

クエリ戦略(Web 内では逐次実行、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 やナビゲーションのマークアップはスキップします。

引用のルール。 Web セクションの主張はすべて、取得した 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 エクスポートに対応しています。 レガシー形式とスネークケースのフィールドを正規化し、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 + Web)。
  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 をもう一度尋ねます。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.py3 種類のカウントを記録する監査ログと、ローカルの 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 で再度確認してください。

コメント