ChatGPT Auto Scroll
ChatGPTのサイドバーにある会話履歴リストを自動的にスクロールし、過去のすべての会話を読み込むためのユーザースクリプトです。
主な機能
会話リストの自動スクロール
- ChatGPTのサイドバーは「無限スクロール」形式になっており、古い会話はスクロールしないと読み込まれません。
- このスクリプトは、リストの最下部へのスクロールを自動的に繰り返し、すべての会話履歴をDOM上にロードさせます。
- 他のツール(会話エクスポートツールなど)で全履歴を処理したい場合の前準備として有用です。
高機能フローティング操作パネル
- 画面上にドラッグ可能な操作パネルを表示し、スクリプトの制御と状態確認を行えます。
- リアルタイムステータス表示:
- State: 現在の動作状態(Idle / Running / Cooldown)。
- Scrolls: スクロールを実行した回数。
- Top: 現在のスクロール位置(ピクセル)。
- ドラッグ移動: ボタン以外のパネル上のどこを掴んでも自由に位置を移動できます。
- 位置の記憶: パネルの位置は保存され、次回アクセス時やリロード後も同じ場所に復元されます。
ポータルサイト連携 (Install Detection)
- 配布用ポータルサイト(
userscript.moukaeritai.work)にアクセスした際、スクリプトがインストール済みであることをサイト側に通知します。 - これにより、ポータルサイト上で「インストール済み」のステータス表示が可能になります。
- 配布用ポータルサイト(
使い方
- スクリプトをインストールした状態で ChatGPT (
chatgpt.com) を開きます。 - 画面右上(初期位置)に「Auto Scroll vX.X.X」というパネルが表示されます。
- パネルはボタン以外の場所をドラッグして好きな位置に移動できます。
- Start Scroll ボタンをクリックすると、サイドバーの自動スクロールが始まります。
- ボタンの色が緑から赤(Stop Scroll)に変わり、Stateが
Runningになります。
- ボタンの色が緑から赤(Stop Scroll)に変わり、Stateが
- リストの読み込みが完了するまで(または Stop Scroll を押すまで)動作します。
- スクロール中は
Scrollsカウンタが増加し、Topの値が更新されます。
- スクロール中は
技術的詳細
DOM監視:
MutationObserverを使用してリスト要素の変化を監視しています。スクロールによって新しい要素が読み込まれると、再度最下部へスクロールを行います。セレクタ管理: ChatGPTの頻繁なUI変更に対応するため、会話リストを特定するためのCSSセレクタを複数保持し、優先順位順に適用します。
UI/UX設計:
- ドラッグ操作: パネル全体(ボタンを除く)をドラッグ領域とすることで、操作性を向上させています。
- 誤操作防止: ステータステキスト等は
user-select: noneにより選択不可となっており、ドラッグ時の誤選択を防ぎます。 - SPA対応:
setIntervalを使用して定期的にUIパネルの存在を確認し、画面遷移などで削除された場合に再生成します。 - 位置保存:
GM_setValue/GM_getValueを使用して、ユーザーが移動させたパネルの位置を記憶・復元します。
イベント通信:
userscript-check-installed: ページロード時に発火し、スクリプトの存在を通知します。userscript-ping: ポータルサイトからの問い合わせに応答します。
Target Domain:
chatgpt.comand portal domains.Required: Tampermonkey or similar.
Features: Position persistence, adjustable interval.
著者
Takashi SASAKI (@TakashiSasaki)
ライセンス
MIT