mcpField
S
sampling-bluesky-zeitgeist

sampling-bluesky-zeitgeist

github.com/oaustegardデータ・データベース15745 回インストール1 日前に更新
リポジトリ

sampling-bluesky-zeitgeist について

sampling-bluesky-zeitgeistは、複数の時間帯でBluesky firehoseをサンプリングして分析する、非推奨のスキルです。ドキュメントはbrowsing-blueskyスキルに統合されています。

主な機能

  1. 01Bluesky firehoseの複数時間帯サンプリング
  2. 02投稿数とフレーズ数の集計
  3. 03トピッククラスターと傾向の特定
  4. 04テンプレートからのHTMLレポート生成

活用シーン

  1. 01サンプル投稿の話題の要約
  2. 02サンプル時間帯ごとの活発さの比較
  3. 03特定トピックの投稿数と傾向の監視

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oaustegard/claude-skills --skill sampling-bluesky-zeitgeist

インストール後、Claude Code で/sampling-bluesky-zeitgeistを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

CHANGELOG.md
README.md
assets/
zeitgeist-template.html
references/
artifact-template.md
scripts/
zeitgeist-sample.js

詳細

Bluesky の時勢をサンプリングする

⚠️ 非推奨:このスキルは browsing-bluesky スキルに統合されました。

sample_firehose() 関数を使ってファイアホースをサンプリングするには、browsing-bluesky を使用してください。


従来のドキュメント

Bluesky のファイアホースデータを複数の時間枠で収集・分析し、コンテンツのクラスターを特定して、個別のサンプル時間枠と全体の傾向の両方を示す結果を提示します。

ワークフロー

1. セットアップ

依存関係をインストールします:

cd /home/claude && npm install ws https-proxy-agent 2>/dev/null
2. サンプル時間枠を実行

10秒間のサンプルを3回連続して実行します:

node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample1.json 2>/dev/null
node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample2.json 2>/dev/null
node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample3.json 2>/dev/null
3. 分析して DATA オブジェクトを作成

各 JSON ファイルを解析して集計します:

  • totalPosts を合計し、avgPostsPerSecond を計算します
  • 各時間枠の topWords、topPhrases、entities を統合します
  • 1分あたりのレートを計算します:(count / totalDurationSec) * 60
  • 時間枠ごとの件数を比較して傾向を検出します
4. コンテンツのクラスターを特定

関連する用語をテーマ別のクラスターにまとめます。各クラスターには以下を含めます:

  • name:内容を表すラベル
  • emoji:視覚的な識別子
  • terms:このクラスターに属するキーワード
  • searchQuery:Bsky 検索用に OR で結合した用語(例:"trump OR republican OR congress")
  • totalMentions:すべての時間枠の合計
  • mentionsPerMin:(totalMentions / totalDurationSec) * 60
  • trend:最後の時間枠が最初の時間枠より30%以上多ければ "up"、30%未満なら "down"、それ以外は "stable"
  • samples:クラスターに該当する投稿の例を2~3件
5. テンプレートからアーティファクトを作成

テンプレートをコピーして DATA を挿入します:

cp /mnt/skills/user/sampling-bluesky-zeitgeist/assets/zeitgeist-template.html /mnt/user-data/outputs/zeitgeist.html

次に str_replace を使って DATA オブジェクトを挿入します:

old_str: const DATA = {"aggregate":{"totalPosts":0,"totalDurationSec":30,"avgPostsPerSecond":0,"timestamp":""},"windows":[],"clusters":[],"entities":[],"phrases":[],"languages":{}};
new_str: const DATA = {YOUR_ACTUAL_DATA_OBJECT};

DATA のスキーマ全体については、references/artifact-template.md を参照してください。

出力形式

アーティファクトへのリンクを提示し、その後、簡潔な文章で概要を説明します:

  • 会話を支配している話題(上位1~2クラスター)
  • 注目すべき投稿頻度の急増
  • 興味深いパターン(例:「[topic] をめぐって日本語の投稿が急増」)

概要は簡潔にしてください。主な成果物はアーティファクトです。

更新ワークフロー

ユーザーから再更新・再サンプリングを求められた場合:

  1. 新しいサンプル時間枠を実行します(同じく10秒間を3回)
  2. 新しい結果で DATA オブジェクトを更新します
  3. str_replace を使って既存のアーティファクト内の DATA 行を置き換えます
  4. 変更点を報告します:「前回のサンプルより Trump の言及が20%増加し、M23 の話題は減少」

比較できるよう、前回の集計値を記録して差分を示します:

Previous: trump 50/min → Current: trump 62/min (+24%)

トピック監視ワークフロー

ユーザーが監視するトピックを指定した場合(例:「Lakers の試合を追跡して」「ドローン目撃情報について何が起きている?」):

オプション A:フィルターを使ったサンプリング

--filter フラグを使って、該当する投稿のみを取得するサンプルを実行します:

node zeitgeist-sample.js --duration 15 --filter "lakers" > /home/claude/topic1.json 2>/dev/null

特定のトピックを詳しく分析できますが、より広い状況は把握できません。

オプション B:全体サンプリング+トピックの投稿頻度(推奨)

全体のサンプルを実行してから、次の手順を行います:

  1. 結果からトピック固有の投稿頻度を計算します
  2. 専用の「監視対象トピック」クラスターを先頭に追加します
  3. トピックに該当する投稿サンプルを含めます

DATA オブジェクトに monitoredTopic フィールドを追加します:

{
  "monitoredTopic": {
    "query": "lakers",
    "totalMentions": 45,
    "mentionsPerMin": 90.0,
    "trend": "up",
    "windowCounts": [12, 15, 18],
    "samples": ["Lakers up by 10 in the 4th!", "LeBron with another triple double"]
  }
}
トピックに関するリクエストへの対応

会話の開始時:

  • 「ドローン目撃情報について何が起きている?」→ 全体サンプルを実行し、ドローン関連の内容を監視対象トピックとして強調します
  • 「Claude AI の言及を追跡して」→ 同様の方法で、その用語に焦点を当てます

会話の途中:

  • 「M23 の紛争に注目してくれる?」→ サンプルを再実行し、M23 を監視対象トピックとして追加します
  • 「日本語のコンテンツに絞るとどうなる?」→ lang:ja でフィルターするか、既存の日本語クラスターを強調します

フォローアップの例: ユーザー:「更新して。ただし試合に注目して」 → 新しいサンプルを実行し、監視対象トピックを維持して、すべてのデータを更新します

エラー処理

WebSocket 接続に失敗した場合:

  • *.bsky.network が許可ドメインに含まれていることを確認します
  • 期間を短くして(5秒)一度だけ再試行します
  • それでも失敗する場合は、エラーを報告し、ユーザーにネットワーク設定を確認するよう案内します

サンプルの投稿数がゼロの場合:

  • ネットワークまたはプロキシの問題が考えられます
  • その旨を報告し、アーティファクトは作成しません

カスタマイズオプション

ユーザーは次のようにリクエストできます。

  • より長いサンプル:ウィンドウごとの期間を延長するか、ウィンドウを追加します
  • トピックの絞り込み:最初のサンプルの後、特定のクラスタに絞ったサンプルを実行します
  • 比較:異なる時間にサンプルを実行して比較します

コメント