~/social/bluesky-scraper
Bluesky Scraper — 投稿・プロフィール・フィード・エンゲージメント
AT Protocol経由でBlueskyの投稿・プロフィール・フォロワー・フィード・スレッド・いいねしたユーザー・リポストしたユーザーを抽出——さらにアプリパスワードによる認証で検索とハッシュタグの結果にも対応。クリーンで正規化されたJSON。
ソーシャル
TypeScriptAT Protocol
グローバル
カテゴリsocial / ソーシャル
言語TypeScript
スタックTypeScript, AT Protocol
マーケットグローバル
出力クリーンでRAG対応のJSON
主な機能
11のモード — search、profile、posts、followers、following、feed、thread、likers、reposters、actorLikes、hashtag
認証不要の公開APIで、プロフィール・投稿・フォロワー・フォロー中・フィード・スレッド・いいねしたユーザー・リポストしたユーザーを取得
認証が必要なアプリパスワードモード — search、hashtag、自分のアカウントのいいね
投稿エンゲージメントのエクスポート — 投稿ごとのいいねしたユーザー・リポストしたユーザーの全リスト
スレッドのフラット化 — 設定可能な深さまで返信ツリーを辿る
全リストエンドポイントで、指定した件数上限まで自動カーソルページネーション
全モードで統一された、投稿とプロフィールの正規化JSON構造
堅牢なHTTP処理 — リクエストスロットリング、指数バックオフ、429/5xxでのリトライ
活用例
- 認証付き検索によるブランド・キーワードモニタリング
- ネットワーク全体でのハッシュタグ・トレンド追跡
- オーディエンスのエクスポート — クリエイターやブランドのフォロワー・フォロー中リスト
- エンゲージメント分析 — 特定の投稿に誰がいいね・リポストしたかを正確に把握
- クリーンで正規化されたJSONによる、BI・分析・RAGパイプライン向けデータセット構築
- 投稿配下の会話・スレッドのアーカイブ
入力パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
mode | string | 任意 | 取得対象:posts、profile、followers、following、feed、thread、likers、reposters、actorLikes、search、hashtagのいずれか(デフォルト:posts)。 |
handles | array | 任意 | profile/posts/followers/following/actorLikesモード用のBlueskyハンドル。例:bsky.app。 |
query | string | 任意 | 検索テキスト(searchモード)またはハッシュタグ(hashtagモード — 自動的に#が付加されます)。 |
postUri | string | 任意 | 投稿のAT URI — thread、likers、repostersモードで使用。 |
feedUri | string | 任意 | カスタムフィードのAT URI — feedモードで使用。 |
identifier | string | 任意 | 認証モード(search、hashtag、actorLikes)用のBlueskyログインハンドルまたはメールアドレス。 |
appPassword | string | 任意 | 認証モード用のBlueskyアプリパスワード(メインアカウントのパスワードではありません)。 |
maxItems | number | 任意 | 保存する投稿/プロフィールの最大数。1件ごとに1課金イベント(デフォルト:100)。 |
Output Example
1{
2 "itemType": "post",
3 "mode": "posts",
4 "uri": "at://did:plc:.../app.bsky.feed.post/...",
5 "author": {
6 "did": "did:plc:...",
7 "handle": "bsky.app",
8 "displayName": "Bluesky",
9 "followersCount": 1234567
10 },
11 "text": "Example post text",
12 "createdAt": "2026-06-11T00:00:00Z",
13 "replyCount": 10,
14 "repostCount": 20,
15 "likeCount": 100,
16 "langs": ["en"],
17 "url": "https://bsky.app/profile/bsky.app/post/..."
18}
Pricing
イベント課金制:保存されたアイテム(投稿またはプロフィール)1件につき$0.001。1,000件のエクスポートで約$1.00、maxItemsが件数とコストの両方に上限を設けます。
Tips
- まずは公開モードから始めましょう。 プロフィール、投稿、フォロワー、エンゲージメント(likers/reposters)にはログインが不要です——アプリパスワード認証はsearchとhashtagの実行時のためにとっておきましょう。
- 投稿だけでなくエンゲージメントもエクスポートしましょう。 likersとrepostersモードは、誰がその投稿を拡散したかを正確に明らかにします——多くのBlueskyスクレイパーが見落としているシグナルです。
- 大規模アカウントのフォロワー/フォロー中を取得する際は
maxItemsで上限を設定し、実行を高速かつコストを予測可能に保ちましょう。
よくある質問
Blueskyの認証情報は必要ですか?
search、hashtag、actorLikesモードのみ必要です——Blueskyの設定でアプリパスワードを生成し、appPasswordとして渡してください。profile、posts、followers、following、feed、thread、likers、repostersモードは、公開のAT Protocol APIにより認証情報なしで動作します。
任意のアカウントのいいねをエクスポートできますか?
いいえ。BlueskyのAPIは、認証済みアカウント自身のactorLikesしか公開していません。そのため、handleとログイン用identifierは同一アカウントを指している必要があります。
投稿やフィードのURIはどうやって調べますか?
AT URIはat://did:plc:.../app.bsky.feed.post/...のような形式です——BlueskyのAPI出力や開発者向けツールからコピーしてください。フィードURIはapp.bsky.feed.generatorコレクションを使用します。
アプリパスワードを使うのは安全ですか?
はい——Blueskyのアプリパスワード(設定 → App Passwordsで作成)を使用し、メインパスワードは絶対に使わないでください。スコープが限定されており、取り消し可能で、シークレット入力として渡されます。
~/social の関連ツール
メディア
YouTube Subtitle & Transcript Scraper — JSON・SRT・VTT・LLM対応
YouTubeの文字起こしをJSON、SRT、VTT、またはLLM対応テキストで取得。
開く