categorizing-bsky-accounts について
categorizing-bsky-accountsは、Blueskyアカウントのプロフィールと投稿を取得し、キーワードを抽出してトピック分類に備えるClaudeスキルです。複数の入力方法に対応し、固定ルールではなくClaudeが分類します。
主な機能
- 01フォロー、フォロワー、ハンドル、ファイルの分析
- 02アカウントのプロフィールと投稿の取得
- 03YAKEによるキーワード抽出
- 04分野別ストップワードの選択
- 05語句に基づくアカウント除外
- 06Claudeによるトピック分類
活用シーン
- 01フォロー一覧のトピック傾向の確認
- 02フォロー中のアカウントから専門家を探す
- 03選定したアカウント一覧の分類
- 04スパムやボットの疑いがあるアカウントの除外
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oaustegard/ claude-skills --skill categorizing-bsky-accountsインストール後、Claude Code で/categorizing-bsky-accountsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CHANGELOG.mdREADME.mdscripts/bluesky_analyzer.py詳細
Bluesky アカウントの分類
Bluesky のアカウントデータを取得し、Claude がトピック別に分類するためのキーワードを抽出します。このスクリプトは、アカウントのコンテキスト(自己紹介+投稿)を自己紹介+キーワードに圧縮し、その後 Claude が高度な分類を行います。
前提条件
必要なもの: extracting-keywords スキル(YAKE の venv とドメイン別ストップワードを提供)
このアナライザーはキーワード抽出を extracting-keywords スキルに委任します。このスキルは以下を提供します。
- 依存関係を最小限に抑えた最適化済み YAKE インストール
- ドメイン固有のストップワード:英語(574)、AI/ML(1357)、ライフサイエンス(1293)
- 34 言語のサポート
基本的なワークフロー
ユーザーが Bluesky アカウントの分析をリクエストした場合:
-
キーワード抽出のセットアップを確認する - Skill ツールを使って extracting-keywords スキルを呼び出し、YAKE の venv が存在することを確認します(このセッションですでに呼び出している場合は省略します)。
-
入力モードを決定する - ユーザーのリクエストに応じて選択します。
- フォローリスト →
--following handleを使用 - フォロワー →
--followers handleを使用 - ハンドルのリスト →
--handles "h1,h2,h3"を使用 - ファイルが指定されている →
--file accounts.txtを使用
- フォローリスト →
-
パラメーターを設定する:
--accounts N- 分析するアカウント数(デフォルト:100、最大:100)--posts N- アカウントごとの投稿数(デフォルト:20、最大:100)--stopwords [en|ai|ls]- ドメイン固有のストップワードを選択します。en:英語(汎用)ai:AI/ML 分野(技術系アカウントに推奨)ls:ライフサイエンス(生物医学/研究系アカウント向け)
--exclude "pattern1,pattern2"- スパム/ボットアカウントを除外します。
-
スクリプトを実行する - 標準出力にシンプルなテキスト形式で出力します。
@handle1.bsky.social (Display Name) Bio text here Keywords: keyword1, keyword2, keyword3 @handle2.bsky.social (Another Name) Bio text here Keywords: keyword4, keyword5, keyword6 -
アカウントを分類する - 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 リクエスト
このアナライザーは組み込みの待機処理によって、これらの制限を遵守します。
カテゴリ分類アルゴリズム
スクリプトの役割:
- アカウントデータ(プロフィール+投稿)を取得します
- コンテキストを圧縮するため、キーワードを抽出します
- プロフィール+キーワードをシンプルな形式で出力します
Claude の役割:
- 各アカウントのプロフィール+キーワードを読み取ります
- トピックごとに柔軟に分類します(ハードコードされたルールは使用しません)
- アカウントをグループ化し、パターンを特定して、ユーザーの質問に回答します
このエージェント型のパターンは、ハードコードされたキーワードマッチングよりも柔軟です。
トラブルシューティング
「分析対象のアカウントがありません」
- ハンドルの形式を確認します(ドメインを含めます: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 とドメイン固有のストップワードに自動的に委任します
出力のカテゴリ分類
固定の分類体系ではなく判断に基づいて、プロフィール+キーワードからアカウントをトピックごとにグループ化します。カテゴリと件数はテンプレートではなく、実際のデータに基づいて決まります。