【noteを伸ばす×データ分析】Note APIでフォロワーといいねを可視化
概要
Noteの非公式APIを活用することで、自身のフォロワー数や記事についた「いいね」の詳細なメタデータ(ユーザーIDやタイムスタンプ、プロフィール情報など)をプログラムから取得し、時系列分析や時間帯別分析など多角的に傾向を把握できます note(ノート)。フォロワー数は /api/v2/creators/{userId} エンドポイントで取得でき、定期的にカウントすることで増減のトレンドを可視化できます note(ノート)。一方、記事に対する「いいね」は /api/v3/notes/{noteId}/likes エンドポイントにより、誰がいつ「いいね」したかまで詳細に取得可能です note(ノート)。これらの生データをPythonやGoogleスプレッドシート上で整形し、日別・時間帯別の集計やプロフィール別の傾向分析を行うことで、効果的なコンテンツ改善や投稿タイミングの最適化が期待できます note(ノート)。
前提
Note APIは公式ドキュメント非公開の“非公式”APIであり、予告なく仕様変更があり得る点に注意が必要です note(ノート)。
バージョンは主にv2とv3が用いられ、ベースURLは https://note.com/api/v2/ および https://note.com/api/v3/ です note(ノート)。
データ収集
認証設定
ログイン用APIを利用
POST https://note.com/api/v1/sessions/sign_in にメールアドレス・パスワードを送信し、セッションCookieを取得します note(ノート)。
以降のリクエストでは同じCookieをヘッダーに付与し、認証状態を維持してください。
リクエストヘッダー
User-Agent: your-app-name/1.0
Cookie: session=取得したセッションCookie
Accept: application/jsonフォロワー情報の取得
エンドポイント
GET https://note.com/api/v2/creators/{ユーザID}取得できる主なフィールド
followersCount(総フォロワー数)
followingsCount(自分がフォローしている数)
itemsCount(記事数) など note(ノート)。
時系列トレンド
毎日同じ時刻にこのAPIを呼び出し、フォロワー数を保管。
日次で増減を計算しグラフ化。
いいね情報の取得
エンドポイント
GET https://note.com/api/v3/notes/{記事ID}/likes?size=100&start=0取得できる主なフィールド
userId, userName, profileImageUrl(「いいね」したユーザー情報)
followingsCount, followersCount(ユーザーのフォロワー数)
createdAt(いいねした日時) note(ノート)。
全件取得
size と start を調整しページネーションで全データを取得。
定期的に(例:毎時間)取得して差分を抽出することで、リアルタイムに近い解析が可能。
データ整形と加工
JSON→DataFrame変換
import pandas as pd
df = pd.json_normalize(response.json()['data'])日時パース
df['createdAt'] = pd.to_datetime(df['createdAt'])
df['date'] = df['createdAt'].dt.date
df['hour'] = df['createdAt'].dt.hour日次・時間帯集計
daily_likes = df.groupby('date').size()
hourly_likes = df.groupby('hour').size()傾向分析
フォロワー増減の時系列分析
日次フォロワー数の差分を計算し、増加日・減少日を可視化。
特定コンテンツ投稿翌日の変化を測定し、エンゲージメントとの相関を調査。
いいねの時間帯分析
時間帯別の「いいね」件数をヒートマップや棒グラフでプロット。
朝・昼・夜それぞれのピーク時間を特定し、投稿ベストタイムを割り出す note(ノート)。
可視化
例:Matplotlibを使った時間帯別いいね件数の棒グラフ
import matplotlib.pyplot as plt
plt.figure(figsize=(8,4))
plt.bar(hourly_likes.index, hourly_likes.values)
plt.xlabel('Hour of Day')
plt.ylabel('Number of Likes')
plt.title('Hourly Likes Distribution')
plt.tight_layout()
plt.show()※Note.comデータを可視化した事例として、Kiyo氏がいいね数の可視化例を紹介しています note(ノート)。
実装例
import requests, time, pandas as pd
SESSION = requests.Session()
# 1. ログイン
login_payload = {"email":"あなたのメール","password":"あなたのパスワード"}
SESSION.post("https://note.com/api/v1/sessions/sign_in", json=login_payload)
# 2. フォロワー数取得
resp = SESSION.get("https://note.com/api/v2/creators/あなたのユーザID")
followers = resp.json()['data']['followersCount']
# 3. いいね取得(例:最新100件)
params = {"size":100,"start":0}
likes_resp = SESSION.get("https://note.com/api/v3/notes/記事ID/likes", params=params)
likes_df = pd.json_normalize(likes_resp.json()['data'])
# 4. 時系列・集計
likes_df['createdAt'] = pd.to_datetime(likes_df['createdAt'])
daily = likes_df.groupby(likes_df['createdAt'].dt.date).size()
print(daily)
以上の流れを定期実行し、データベースやスプレッドシートに保存しておくことで、フォロワー動向やいいね傾向を継続的にモニタリングできます。APIの仕様変更には注意しつつ、自動化パイプラインを構築して分析を深めていきましょう。
