[note tips] noteのフォロワーは1,000人までしか確認できない
「noteで、自分のフォロワーが20人×50ページの1,000人までしか見れないのですが、全員見る方法はありますか?」
回答:「ありません」(2025/06/07現在)
【結論】noteのフォロー、フォワーは1,000人までしか表示されない
[ブラウザ・アプリ]
PC・スマホのブラウザでは1ページ20人で50ページまでの1,000人まで。
スマホアプリはページがありませんが、どれだけスクロースしても上限の1,000人までしかフォロー(フォロイー)・フォロワーは表示されません。
[Chrome拡張機能]
「note フォローチェッカー」というChrome拡張機能がありますが、これも50ページまでのようです。
※あまり安易に拡張機能をインストールしたくないため、実機での確認はしていません。
[プログラミング]
noteの非公式APIを使って取得を試みましたが、結局、1,000人までしか取得できませんでした。
フォロワー取得の非公式API
https://note.com/api/v2/creators/{note ID}/followers?page=1&per=20フォロー(フォロイー)取得の非公式API
https://note.com/api/v2/creators/{note ID}/followings?page=1&per=20{note ID}:自分のnote ID。「https://note.com/〇〇」の〇〇の部分
page=1:「1」が1ページ目を指し、2ページ目の場合は「2」に変更
「page=51」など51ページ以降は取得できませんでした。
ということで、誰からフォローされているか、
私はわかりません。
最近フォローいただいた方は、表示されている1,000人に含まれるためわかりますが、古くからフォローされている方が把握できないです💦
フォロワー一覧のExcel保存方法
1,000人までという制限がありますが、フォロワーを自動的に取得し、Googleスプレッドシートに保存(その後、Excelに変換は手動)するプログラムを作りました。
【2025/06/09追記】
作ってみて、いろいろ試していくうちに価値を感じるようになりました。
「皆さんはこの人いいな、ベンチマークしたいな」
という人はいませんか?
実は自分だけではなく、他の人のフォロワーさんも取得できます。
つまり、人気のnoterさんのフォロー・フォロワーの分析ができるのです。
「この人はどんな人をフォローしているのだろう?」
⇒ この人がフォローしているなら、きっと有益な情報を提供していたり、面白い記事が読めるかもしれない✨
「この人はどんな人にフォローされているのだろう?」
⇒ どのような内容の記事を公開して交流すると、どんな読者層の支持・フォローされるか、わかるかもしれない💡
また、フォロワーさんの記事を読んで、スキやフォローをするとその人と交流できるかもしれない💖
ということで、
なんとかフォロワー一覧を取得できないかなと思って調べたり、プログラミングしたりで2時間も使ってしまいました(失敗したぁ)😭
と書いていましたが、2時間の価値はありました。
ただし、下記はその通りなので、これは改善したいと思います。
プログラミングをする前に、
「1,000人以上取得できるか?」、言い換えると、
「https://note.com/api/v2/creators/{note ID}/followers?page=51&per=20」を試し、取得できないことを確認すればプログラミング不要でした。
普段、「プログラムする前にきちんと設計しよう」という立場なのに自分ができていませんでした。反省です。自戒のためにメモ。
下記は、GoogleのApps Scriptを使ったソースです。
/**
* noteのフォロワー情報を取得し、Googleスプレッドシートに保存するメイン関数。
* このAPIは非公式なため、将来的に動作しなくなる可能性あり。
* サーバーに過度な負荷をかけないよう待機時間を設定。
*/
function getAndSaveNoteFollowers() {
const allFollowers = [];
// ここにフォロワーを取得したいNoteユーザーのIDを設定してください
// 例: 'murata_ssj'
const USER_ID_TO_FETCH = 'murata_ssj';
// サーバー負荷軽減のための待機時間(秒)
const WAIT_TIME_SECONDS = 5.0;
const MAX_PAGES = 100; // 取得する最大ページ数、noteの仕様上、実質最大50ページ
Logger.log(`ユーザーID: '${USER_ID_TO_FETCH}' のフォロワー取得を開始します。`);
for (let i = 1; i <= MAX_PAGES; i++) {
// noteの非公式v2フォロワーAPIエンドポイント
const url = `https://note.com/api/v2/creators/${USER_ID_TO_FETCH}/followers?page=${i}&per=20`;
Logger.log(`ページ ${i} を取得中: ${url}`);
let response;
try {
// UrlFetchApp.fetch を使用してHTTP GETリクエストを実行
// muteHttpExceptions: true でHTTPエラーでも例外を投げずレスポンスを返させる
response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
} catch (e) {
Logger.log(`URLフェッチ中にエラーが発生しました(ページ ${i}): ${e.message}`);
break;
}
const statusCode = response.getResponseCode();
if (statusCode !== 200) {
Logger.log(`エラー: ステータスコード ${statusCode} (ページ ${i}、URL: ${url})`);
Logger.log(`エラーレスポンス本文: ${response.getContentText()}`);
break;
}
Logger.log(`ページ ${i} を正常に取得しました (ステータス: ${statusCode})`);
let dataJson;
try {
dataJson = JSON.parse(response.getContentText());
} catch (e) {
Logger.log(`ページ ${i} のJSONパース中にエラーが発生しました: ${e.message}`);
break;
}
// フォロワーデータは `data.follows` または `data.users` に格納される。
const currentFollowers = dataJson.data && dataJson.data.follows ? dataJson.data.follows : [];
if (currentFollowers.length === 0) {
Logger.log('これ以上フォロワーが見つかりませんでした。');
break;
}
allFollowers.push(...currentFollowers); // 取得したフォロワーを全体リストに追加
// サーバー負荷軽減のための待機(ミリ秒単位に変換)
Utilities.sleep(WAIT_TIME_SECONDS * 1000);
}
Logger.log(`フォロワーの取得が完了しました。合計: ${allFollowers.length} 件`);
// --- 取得したフォロワーデータをスプレッドシートに保存 ---
if (allFollowers.length > 0) {
saveFollowersToSpreadsheet(allFollowers, USER_ID_TO_FETCH);
} else {
Logger.log("スプレッドシートに保存するフォロワー情報がありませんでした。");
}
}
/**
* 取得したフォロワーオブジェクトのリストをGoogleスプレッドシートに保存する補助関数。
* @param {Array<Object>} followersList フォロワーオブジェクトのリスト
* @param {string} userIdToFetch データを取得したユーザーのID (ファイル名に利用)
*/
function saveFollowersToSpreadsheet(followersList, userIdToFetch) {
// スプレッドシートのファイル名を動的に生成
const spreadsheetName = `Note_${userIdToFetch}_フォロワーリスト_${new Date().toLocaleDateString('ja-JP').replace(/\//g, '-')}`;
const spreadsheet = SpreadsheetApp.create(spreadsheetName);
const sheet = spreadsheet.getActiveSheet();
// ヘッダー行を定義
const headers = ['ユーザー名', 'URL名', 'プロフィールURL', 'フォロワー数', 'フォロー数', 'プロフィール文'];
sheet.appendRow(headers);
// データをスプレッドシートの行形式に整形
const dataToAppend = followersList.map(follower => {
const userName = follower.name || '';
const urlName = follower.urlname || '';
const profileUrl = `https://note.com/${urlName}`;
const followerCount = follower.followerCount || 0;
const followingCount = follower.followingCount || 0;
// 改行文字をスペースに置換
const profileText = (follower.profile || '').replace(/\n/g, ' ');
return [userName, urlName, profileUrl, followerCount, followingCount, profileText];
});
// 整形したデータをシートに一括書き込み
if (dataToAppend.length > 0) {
sheet.getRange(sheet.getLastRow() + 1, 1, dataToAppend.length, headers.length)
.setValues(dataToAppend);
}
Logger.log(`フォロワーデータをスプレッドシート '${spreadsheet.getName()}' に保存しました。`);
Logger.log(`スプレッドシートのURL: ${spreadsheet.getUrl()}`);
}いいなと思ったら応援しよう!
最後までお読みいただきありがとうございました!
サポートもうれしいですが「スキ」をしていただけると大変励みになります!!