note メンバーシップ掲示板で検索/保存するための過去投稿のスクロール/展開の自動実行スクリプト
noteのメンバーシップに参加(購読)しているのですが、掲示板の検索や保存ができなくて困っていました。
本記事では、その解決策の1例をまとめておきます。

noteのメンバーシップ掲示板でできないこと
noteのメンバーシップ内の掲示板で、情報を探すために特定のキーワードで検索したくなったり、過去投稿を読み返しやすいようHTML保存したくなったりする訳ですが、noteの標準機能ではそのようなことができません。
超不便。有料コンテンツを提供するプラットフォームだというのに(個人の感想です)。
でも、なんとか解決したいですね。
noteメンバーシップ掲示板のスクロール/展開の自動実行スクリプト
ということで、チャッピー(ChatGPT)に相談してスクリプトを作ってもらいました。
note の禁止事項等
本記事で紹介するスクリプトは、noteのメンバーシップ掲示板でスクロールと展開を自動実行するものです。
noteの利用規約にはスクレイピングなどを禁止する直接的な記載は見当たりませんが、「サービスの障害となる行為」は禁止されています。
note総則規約
…
13. 禁止事項
…
(7) 当社のサービスの障害となる行為を行うこと
出典:note ご利用規約 – ご利用規約
掲示板の単一ページ内で読み込みを繰り返し実行したところでサービス障害を引き起こすほどの負荷は発生しないと思いますが、環境次第なので断言はできません。ということで、noteに迷惑がかからないよう適度に遅延パラメタを調整するなどして自己責任でご参考ください。
また、禁止事項に記載が無ければ何をしても良いという意味でもありません。
程度が難しいのですが、とりあえずアウトかセーフかのラインではなく、人間よりちょっと素早く操作しているかなぁくらいのスピード感での自動化を想定しています。
環境
Windows 11 PC 上の Chrome ブラウザで note の掲示板を開いて動作を確認しました。
チャッピーに作ってもらったスクリプトは JavaScript で、それをChromeの開発者ツールで実行します。試していませんがブックマークレットでも実行可能なはずです。
また、他のブラウザでも動作すると思いますが、試していません。
掲示板のデータ量に応じ、それなりにメモリを消費するかもしれません。スマホでは厳しいかも。
動作
このスクリプトは、メンバーシップ掲示板をブラウザで表示した状態で実行するとページの中にあるもっとみるや以前の返信を表示のクリックや、画面最下部までのスクロールを繰り返し実行します。



その結果、もっとみるや以前の返信を表示で折り畳まれたコンテンツが展開されたり、過去の投稿分のコンテンツが表示されたりします。
ステータス表示機能もついており、スクリプトの実行終了時には✅完全展開完了と表示されます。これ以上スクロールできないと判断されたら終了です。
BASE_DELAY変数で1つ1つの操作の際の遅延時間を ms単位で設定します。
スクリプト
スクリプトの内容は以下のとおりです。チャッピーが作ってくれたものをそのまま掲載しています。BASE_DELAY変数はちょっと大きめの値にしてあります(人間よりちょっと素早く操作しているかなぁくらい)。
(async () => {
/***** 設定 *****/
const BASE_DELAY = 1000; // 全体速度調整はここだけ
const STABLE_LIMIT = 5; // 安定判定回数
/****************/
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
// ===== ステータス表示 =====
const status = document.createElement("div");
status.style.cssText = `
position: fixed;
bottom: 12px;
right: 12px;
padding: 6px 10px;
background: rgba(0,0,0,0.7);
color: white;
font-size: 12px;
border-radius: 6px;
z-index: 99999;
`;
document.body.appendChild(status);
const setStatus = (t) => status.textContent = t;
// ===== 展開可能ボタン判定 =====
const hasExpandableButtons = () =>
[...document.querySelectorAll("button")]
.some(b =>
(b.textContent.includes("もっとみる") &&
b.getAttribute("aria-expanded") === "false") ||
b.textContent.includes("以前の返信を表示")
);
let lastHeight = 0;
let stableCount = 0;
setStatus("準備中…");
while (stableCount < STABLE_LIMIT) {
// ---- もっとみる ----
setStatus("📡 通信中:もっとみる");
const moreButtons = [...document.querySelectorAll("button")]
.filter(b =>
b.textContent.includes("もっとみる") &&
b.getAttribute("aria-expanded") === "false"
);
for (const btn of moreButtons) {
btn.click();
await sleep(BASE_DELAY);
}
// ---- 以前の返信を表示 ----
setStatus("📡 通信中:返信表示");
const replyButtons = [...document.querySelectorAll("button")]
.filter(b => b.textContent.includes("以前の返信を表示"));
for (const btn of replyButtons) {
btn.click();
await sleep(BASE_DELAY);
}
// ---- スクロール ----
setStatus("📡 通信中:スクロール");
window.scrollTo(0, document.body.scrollHeight);
await sleep(BASE_DELAY * 10);
// ---- 終了判定 ----
const newHeight = document.body.scrollHeight;
const expandableLeft = hasExpandableButtons();
if (newHeight === lastHeight && !expandableLeft) {
stableCount++;
} else {
stableCount = 0;
lastHeight = newHeight;
}
setStatus(
expandableLeft
? "🔁 再展開チェック中"
: "😴 待機中"
);
await sleep(BASE_DELAY * 2.5);
}
setStatus("✅ 完全展開完了");
})();
実行方法
ブラウザでメンバーシップ掲示板を表示させた状態で、開発者ツールを開き(F12キー)、Console画面で前述のスクリプトを実行できます(コピー&ペーストしてEnterキー)。

実行を中断したい場合はブラウザの画面ごと閉じるなどすればOKです。ネットワーク切断やいったんPCをスリープ/シャットダウンさせる等でも良いかと思います。
検索や保存
✅完全展開完了と表示されたら、スクリプトの実行が完了しています。
ブラウザの検索機能による検索や、ページ丸ごとの保存ができます。
実行に関する補足
上記のスクリプトの実行に関する補足事項です。
- スクリプトの実行中、掲示板を表示しているブラウザのウィンドウのフォーカスは維持しなくてもOK(つまり、他のウィンドウを操作してもOK)。
- 掲示板を表示しているタブを非表示にしてはいけない(つまり、そのタブを表示させたままの状態を維持しないといけない)。
- PCのスペックや環境によっては負荷によりブラウザの応答が停止したりするかも。復帰しなければ強制終了の上、遅延時間を大きくしたり、スペックの良いPCに切り替えたりして、実行し直しをするか、あるいは諦める。
- 掲示板のスクロールを進めるうちにページが重たくなり、最後までスクロールせずにスクリプトが終了する場合あり。再度実行すれば続きのスクロールや展開が可能。
チャッピーへのお願いの仕方
今回、チャッピーにスクリプトを作ってもらう際には、対象のページのもっとみるや以前の返信を表示の部分を選択してから右クリックメニューで検証でDOM要素を確認してから、以下のように指示をしています。
Webブラウザ上に表示させた掲示板ページで、スクロールと展開を自動実行するツールを作ってください。展開は、DOM上の以下の要素をクリックする操作です。一度クリックしても、また繰り返し表示される場合があります。
<button class="mt-2 cursor-pointer text-sm text-text-secondary underline hover:text-text-primary" aria-expanded="false" aria-controls=":r2k:">もっとみる</button>
<button type="button" class="justify-self-start text-sm text-text-secondary underline hover:text-text-primary">以前の返信を表示</button>
遅延処理などは、その後に追加してもらっています。
まとめ
noteのメンバーシップ掲示板で過去投稿の全スクロール/全展開を自動実行するスクリプトについてでした。










