Python応用

BlueSkyのフォロワーリストをAPIで取得・エクスポートする方法【認証不要】

「SNSのフォロワーデータって、APIで簡単に取れないの?」そう思ったことありませんか?TwitterやInstagramは認証の壁が高くて、ちょっとフォロワーリストを取りたいだけでも一苦労ですよね。

でも、Bluesky(ブルースカイ)は違います。🎉 オープンなプロトコル「AT Protocol」を採用しているため、ログイン不要・認証なしでパブリックなプロフィール情報やフォロワーリストが取得できるんです!

🔍 BlueskyのオープンAPIとは?

social network API
social network API / Photo by Pixabay via Pexels

Blueskyは分散型SNSの仕組みであるAT Protocol(ATプロトコル)をベースに作られています。設計の思想として「パブリックなデータは誰でもアクセスできる」ことを重視しているため、公開プロフィールのデータはドキュメント化されたAPIで自由に取得できます。

主に使うエンドポイントはたったの2つです。

  • app.bsky.actor.getProfile:プロフィール情報(bio・フォロワー数など)を取得
  • app.bsky.graph.getFollowers:フォロワーリストを取得

イメージとしては、「公開されている本棚から本を自由に読める図書館」みたいな感じです。認証という鍵が最初からないんですよね。

🐍 PythonでBlueskyフォロワーをエクスポートしてみよう

実際にPythonで試してみましょう。標準ライブラリの requests だけで動きます。

ポイントをまとめるとこんな感じです。

  • ベースURLは https://api.bsky.app/xrpc/
  • クエリパラメータに actor(ハンドル名)を渡すだけ
  • フォロワーが多い場合は cursor を使ってページネーション対応が必要
import requests
import csv

# 取得したいBlueskyのハンドル名
HANDLE = "example.bsky.social"
BASE_URL = "https://api.bsky.app/xrpc"

def get_followers(handle):
    followers = []
    cursor = None

    while True:
        # フォロワー一覧を取得するエンドポイント(認証不要!)
        params = {"actor": handle, "limit": 100}
        if cursor:
            params["cursor"] = cursor

        response = requests.get(
            f"{BASE_URL}/app.bsky.graph.getFollowers",
            params=params
        )
        data = response.json()

        # フォロワー情報を追加
        for follower in data.get("followers", []):
            followers.append({
                "handle": follower.get("handle"),
                "displayName": follower.get("displayName", ""),
                "did": follower.get("did")
            })

        # 次のページがあれば続ける
        cursor = data.get("cursor")
        if not cursor:
            break

    return followers

# フォロワーを取得してCSVに保存
followers = get_followers(HANDLE)

with open("followers.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["handle", "displayName", "did"])
    writer.writeheader()
    writer.writerows(followers)

print(f"✅ {len(followers)}人のフォロワーを取得しました!")

ここが重要です。

  • cursor(カーソル):ページネーション用のトークンで、大量フォロワーでも全件取得できます
  • limit:1回のリクエストで最大100件まで取得可能
  • 取得できる情報は handle(ユーザー名)・displayName(表示名)・did(分散ID)など

⚠️ 使う際の注意点


オープンとはいえ、いくつか気をつけておきたいポイントがあります。

  • レートリミットあり:短時間に大量リクエストを投げすぎると制限がかかります
  • 取得できるのはパブリック設定のアカウントのみ
  • 取得したデータの利用は利用規約・プライバシーポリシーの範囲内で行うこと

まとめ

BlueskyはAT Protocolのオープン設計のおかげで、認証なしにフォロワーデータを取得できます。PythonとrequestsライブラリだけでCSVエクスポートまで一気に実現できるのは、他のSNSにはない大きな魅力ですよね。📊

分散型SNSのデータ活用に興味が出てきた方は、ぜひ実際に手を動かして試してみてください。AT Protocolの世界、思ったよりずっとシンプルで面白いですよ!

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

ESP32&Arduino 電子工作 プログラミング入門

もしも

ESP32&Arduino 電子工作 プログラミング入門

ESP32とArduinoで電子工作を学ぶ入門書

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です