ChatGPT Conversation Lister (Unified)
ChatGPTのウェブインターフェース上で、過去の会話履歴を効率的に検索・管理・エクスポートするためのユーザースクリプトです。
主な機能
会話タイトルの検索
- サイドバーの「New Chat」ボタンの横に追加される検索アイコン、またはドラッグ可能なUIパネルの「Search」ボタンから検索ダイアログを起動できます。
- 保存された過去の会話タイトルからキーワード検索を行い、目的のチャットへ即座にジャンプできます。
会話リストのTSVエクスポート
- 取得済みの会話データを「ID」「タイトル」「内部順序(ProjectionID)」の形式でTSV出力します。
- ExcelやGoogleスプレッドシート、Notion等への貼り付けに最適です。
会話データのスキャンと件数表示
- UIパネルに検出できた会話数を表示します。
- 「Scan List」を押すと、現在表示されている会話一覧を再スキャンして保存します。
- UIパネルの位置はドラッグで変更でき、位置は保存されます。
技術的な特徴
- リンクベースの取得: サイドバー内の
/c/リンクから会話IDとタイトルを取得します(必要に応じてReact内部データにもフォールバックします)。 - UIの分離 (Shadow DOM): スクリプトが生成するパネルやダイアログはShadow DOM内に構築されているため、ChatGPT本体のCSSスタイルと干渉しません。
- 動的な要素注入:
MutationObserverを使用しており、ChatGPTのページ遷移や要素の再描画が発生しても、検索ボタンなどのUI要素を安定して表示し続けます。 - マルチセレクタ対応: ChatGPTの頻繁なアップデートに対応するため、複数のDOMセレクタをフォールバックとして保持しています。
使い方
会話の検索
- サイドバー上部の検索アイコンをクリックするか、UIパネルの「Search」を押します。
- 入力欄にキーワードを入力すると、リアルタイムでタイトルが絞り込まれます。
- タイトルをクリックすると、その会話に移動します。
データのバックアップ/エクスポート
- UIパネルの「List TSV」を押します。
- 表示されたテキストエリアの内容をコピーして利用してください。
会話の再スキャン
- UIパネルの「Scan List」を押して、現在表示されている会話一覧を更新します。
- 会話数が更新され、検索/TSVに反映されます。
注意事項
- このスクリプトはブラウザのローカルストレージ(ユーザースクリプトマネージャーの機能)に会話のタイトルとIDを保存します。
- ChatGPTの仕様変更により、サイドバーの構造が大きく変わった場合は、スクリプト内の
CONVERSATION_LIST_SELECTORSの更新が必要になる場合があります。 - 取得できるのは、サイドバーに表示されている会話のみです。古い会話が表示されていない場合は、手動でスクロールしてから「Scan List」を実行してください。
Author: Takashi Sasaki (@TakashiSasaki)
License: MIT