mcpField
C
categorizing-bsky-accounts

categorizing-bsky-accounts

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

categorizing-bsky-accounts について

categorizing-bsky-accountsは、Blueskyアカウントのプロフィールと投稿を取得し、キーワードを抽出してトピック分類に備えるClaudeスキルです。複数の入力方法に対応し、固定ルールではなくClaudeが分類します。

主な機能

  1. 01フォロー、フォロワー、ハンドル、ファイルの分析
  2. 02アカウントのプロフィールと投稿の取得
  3. 03YAKEによるキーワード抽出
  4. 04分野別ストップワードの選択
  5. 05語句に基づくアカウント除外
  6. 06Claudeによるトピック分類

活用シーン

  1. 01フォロー一覧のトピック傾向の確認
  2. 02フォロー中のアカウントから専門家を探す
  3. 03選定したアカウント一覧の分類
  4. 04スパムやボットの疑いがあるアカウントの除外

インストール

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

$npx skills add https://github.com/oaustegard/claude-skills --skill categorizing-bsky-accounts

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

同梱ファイル

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

CHANGELOG.md
README.md
scripts/
bluesky_analyzer.py

詳細

Bluesky アカウントの分類

Bluesky のアカウントデータを取得し、Claude がトピック別に分類するためのキーワードを抽出します。このスクリプトは、アカウントのコンテキスト(自己紹介+投稿)を自己紹介+キーワードに圧縮し、その後 Claude が高度な分類を行います。

前提条件

必要なもの: extracting-keywords スキル(YAKE の venv とドメイン別ストップワードを提供)

このアナライザーはキーワード抽出を extracting-keywords スキルに委任します。このスキルは以下を提供します。

  • 依存関係を最小限に抑えた最適化済み YAKE インストール
  • ドメイン固有のストップワード:英語(574)、AI/ML(1357)、ライフサイエンス(1293)
  • 34 言語のサポート

基本的なワークフロー

ユーザーが Bluesky アカウントの分析をリクエストした場合:

  1. キーワード抽出のセットアップを確認する - Skill ツールを使って extracting-keywords スキルを呼び出し、YAKE の venv が存在することを確認します(このセッションですでに呼び出している場合は省略します)。

  2. 入力モードを決定する - ユーザーのリクエストに応じて選択します。

    • フォローリスト → --following handle を使用
    • フォロワー → --followers handle を使用
    • ハンドルのリスト → --handles "h1,h2,h3" を使用
    • ファイルが指定されている → --file accounts.txt を使用
  3. パラメーターを設定する:

    • --accounts N - 分析するアカウント数(デフォルト:100、最大:100)
    • --posts N - アカウントごとの投稿数(デフォルト:20、最大:100)
    • --stopwords [en|ai|ls] - ドメイン固有のストップワードを選択します。
      • en:英語(汎用)
      • ai:AI/ML 分野(技術系アカウントに推奨)
      • ls:ライフサイエンス(生物医学/研究系アカウント向け)
    • --exclude "pattern1,pattern2" - スパム/ボットアカウントを除外します。
  4. スクリプトを実行する - 標準出力にシンプルなテキスト形式で出力します。

    @handle1.bsky.social (Display Name)
    Bio text here
    Keywords: keyword1, keyword2, keyword3
    
    @handle2.bsky.social (Another Name)
    Bio text here
    Keywords: keyword4, keyword5, keyword6
    
  5. アカウントを分類する - Claude が自己紹介+キーワードを分析し、トピック別に分類します。

クイックスタート

AI/ML ストップワードを使ってフォローリストを分析:

python scripts/bluesky_analyzer.py --following austegard.com --stopwords ai

フォロワーを分析:

python scripts/bluesky_analyzer.py --followers austegard.com

特定のハンドルを分析:

python scripts/bluesky_analyzer.py --handles "user1.bsky.social,user2.bsky.social,user3.bsky.social"

ファイルから読み込む:

python scripts/bluesky_analyzer.py --file accounts.txt --stopwords ai

ボットアカウントを除外:

python scripts/bluesky_analyzer.py --following handle --exclude "bot,spam,promo" --stopwords ai

パラメーター

入力モード(いずれか1つを選択)

--handles "h1,h2,h3" カンマ区切りの Bluesky ハンドル一覧

--following HANDLE HANDLE がフォローしているアカウントを分析します。

--followers HANDLE HANDLE をフォローしているアカウントを分析します。

--file PATH ファイルからハンドルを読み込みます(1 行に 1 件)。

分析オプション

--accounts N 分析するアカウント数(1~100、デフォルト:100)

--posts N アカウントごとに取得する投稿数(1~100、デフォルト:20)

--stopwords [en|ai|ls] キーワード抽出に使用するストップワード(デフォルト:en)

  • en:英語のストップワード(574 語)- 汎用
  • ai:AI/ML 分野のストップワード(1357 語)- 技術系アカウント向け
  • ls:ライフサイエンスのストップワード(1293 語)- 生物医学/研究系アカウント向け

--exclude "word1,word2" 自己紹介/投稿にこれらのキーワードを含むアカウントを除外します。

出力形式

スクリプトは Claude が処理できるよう、シンプルなテキスト形式で出力します。

@alice.bsky.social (Alice Smith)
AI researcher working on LLM alignment and safety
Keywords: alignment, safety research, interpretability, llm evaluation

@bob.bsky.social (Bob Johnson)
Full-stack developer building web applications
Keywords: react, typescript, node.js, api design, postgresql

@carol.bsky.social (Carol Williams)
Biotech researcher studying CRISPR applications
Keywords: crispr, gene editing, therapeutics, clinical trials

その後 Claude は、ハードコードされたルールを使わず、自己紹介+キーワードに基づいてアカウントを分類します。

よくあるワークフロー

フォローリストを確認する
python scripts/bluesky_analyzer.py --following your-handle.bsky.social --stopwords ai

Claude はアカウントをトピック別に分類し、フォローしている相手の傾向を特定します。

特定のトピックの専門家を見つける
python scripts/bluesky_analyzer.py --following alice.bsky.social --stopwords ai

Claude に「このアカウントの中に ML 研究者はいますか?」や「気候テックに注力しているのは誰ですか?」と尋ねます。

厳選したリストを分析する
cat > accounts.txt << 'EOF'
expert1.bsky.social
expert2.bsky.social
expert3.bsky.social
EOF

python scripts/bluesky_analyzer.py --file accounts.txt --stopwords ls
ボットアカウントを除外する
python scripts/bluesky_analyzer.py --following handle --exclude "bot,spam,promo,follow back" --stopwords ai

技術的な詳細

キーワード抽出

YAKE の venv を使って extracting-keywords スキルに委任します。

  • ストップワードのオプション(--stopwords):
    • en:英語(574 語)- 汎用
    • ai:AI/ML 分野(1357 語)- 技術的なノイズや ML の定型表現を除外
    • ls:ライフサイエンス(1293 語)- 研究手法や臨床用語を除外
  • N-gram:1~3 語
  • 重複除去:0.9 のしきい値
  • 上位キーワード:アカウントごとに 10 件
  • パフォーマンス:英語のストップワードと比較して、ドメイン別ストップワードによるオーバーヘッドは約 5%
API のレート制限

Bluesky API の制限:

  • 5 分あたり 3000 リクエスト
  • 1 時間あたり 5000 リクエスト

このアナライザーは組み込みの待機処理によって、これらの制限を遵守します。

カテゴリ分類アルゴリズム

スクリプトの役割:

  1. アカウントデータ(プロフィール+投稿)を取得します
  2. コンテキストを圧縮するため、キーワードを抽出します
  3. プロフィール+キーワードをシンプルな形式で出力します

Claude の役割:

  1. 各アカウントのプロフィール+キーワードを読み取ります
  2. トピックごとに柔軟に分類します(ハードコードされたルールは使用しません)
  3. アカウントをグループ化し、パターンを特定して、ユーザーの質問に回答します

このエージェント型のパターンは、ハードコードされたキーワードマッチングよりも柔軟です。

トラブルシューティング

「分析対象のアカウントがありません」

  • ハンドルの形式を確認します(ドメインを含めます:handle.bsky.social)
  • アカウントが存在し、公開フォロー中アカウント/フォロワーがあることを確認します

「キーワード抽出に十分なコンテンツがありません」

  • アカウントの投稿数が少ない(<5)
  • 投稿が非常に短い
  • --posts パラメーターの値を増やしてみてください

レート制限エラー

  • --accounts パラメーターの値を減らします
  • バッチ間に待機時間を追加します
  • Bluesky API のステータスを確認します

インポートエラー

  • extracting-keywords スキルが利用可能であることを確認します
  • YAKE の venv が存在することを確認します:/home/claude/yake-venv/bin/python -c "import yake"
  • Python 3.8 以降であることを確認します:python3 --version

他のスキルとの連携

組み込みの連携:

  • extracting-keywords:キーワード抽出を、このスキルに最適化された YAKE venv とドメイン固有のストップワードに自動的に委任します

出力のカテゴリ分類

固定の分類体系ではなく判断に基づいて、プロフィール+キーワードからアカウントをトピックごとにグループ化します。カテゴリと件数はテンプレートではなく、実際のデータに基づいて決まります。

コメント