Gemini Turn Counter
Google Gemini 上での会話において、メッセージ数(ターン数)や文字数をリアルタイムにカウントし、画面上に表示するためのユーザースクリプトです。
最新バージョン: 読み込み中...
最終更新日: 読み込み中...
最終更新日: 読み込み中...
v0.4.48
1. 概要と目的
すでに作成済みの chatgpt-turn-counter と同様に、Google Gemini 上での会話において、メッセージ数や文字数をリアルタイムにカウントし、画面上に表示することを目的としています。
2. 機能一覧
2.1 カウンター機能 (Turn Counter)
以下の要素をカウントし、表示します。
- ディープスキャン機能 (Deep Scan): 過去の長い会話履歴を全件遡って数え上げる「Deep Scan History」ボタンを搭載
- ユーザー送信数 (User): ユーザーがメッセージを送信した回数
- 文字数表示: テキストノードの合計文字数を併記
- モデル応答数 (Model): Geminiがレスポンスを返した回数
- 文字数表示: 応答メッセージの合計文字数を併記
- 画像送信/生成数 (Images): ユーザー送信画像とモデル生成画像の数を別々にカウント (U:M表示)
- サムネイル表示: 画像を縮小表示し、一覧で確認可能 (モデル生成画像には青枠を表示)
- 画像一括コピー (📋U / 📋M / 📋All): "Images" 行の各ボタンをクリックすると、ユーザー画像のみ、モデル画像のみ、あるいは全画像をHTMLタグ(Data URI埋め込み)としてクリップボードに一括コピーします。画像コピー時に適用する Max Height 制限を指定可能。
- 外部スクリプト連携: カスタムイベント (
gemini-turn-counter-copy-images) を通じて、外部のユーザースクリプトからも画像コピー機能を利用可能です。
- 思考プロセス (Thinking Process): 応答に含まれる「思考プロセス」ブロックの数をカウント
- アーティファクト / リンクカード (Maps等): 応答に含まれるキャンバス(Artifacts)や、Googleマップ等のリンクカードの数を独立してカウント
- コードブロック / テーブル数: 応答に含まれるコードブロックやテーブルの数を独立してカウント
2.2 ユーザーインターフェイス (UI)
chatgpt-turn-counter のデザインをベースに、Gemini向けに最適化されています。
- 初期状態: 画面右上に浮動パネルとして表示
- ドラッグ&ドロップ: パネルを自由に移動でき、その位置は保存されます (
localStorageに記憶) - 展開 / 最小化: クリックで詳細表示とアイコン表示(最小化)を切り替えられます。最小化状態でも主要なカウント概要を確認可能です。
3. 技術仕様
- 対象URLパターン:
https://gemini.google.com/* - 名前空間:
userscript.moukaeritai.work - 自動アップデート (Automatic Updates): GitHub 上の raw ファイルを参照して自動更新されます。
連携スクリプト(送信先)
このスクリプトは、以下のスクリプトにイベントを送信し、機能してもらうことを期待しています。
- Artifact Exporter Worker (
gemini-turn-counter-copy-images-result) - Export to Docs (
gemini-turn-counter-copy-images-result)
連携スクリプト(受信元)
このスクリプトは、以下のスクリプトからイベントを受信して動作します。
- Artifact Exporter Worker (
gemini-turn-counter-copy-images) - Export to Docs (
gemini-turn-counter-copy-images)
更新履歴
- v0.4.53: Trusted Types を必須化し、DOM-Based XSS 脆弱性を修正しました。
- v0.4.52: 最小化表示のスタイルとクラス名を共通化(gemini-common.css/jsを活用)
- v0.4.51: フローティングUIが画面外にはみ出した場合に画面内に強制移動する機能を共通ライブラリ(gemini-common.js)に追加。
- v0.4.50: フローティングUIのドラッグハンドルをgus-versionに修正し、バージョン表示のフォーマットを標準化
- v0.4.49: バージョン表記のハードコードを廃止し、GM_infoから取得するように変更
- v0.4.48: バージョン表記のバッジをマウスオーバーで拡大表示するように変更。
- v0.4.48: パネル展開時にバージョン表記が重複して表示される問題を修正しました。
- v0.4.47: 共通ライブラリのバグ修正により、UIが移動できない問題を修正
- v0.4.44: 汎用ユーティリティ関数(sleepやwaitForElementなど)をgemini-common.jsにオフロードし、コードを共通化しました。
- v0.4.35: gemini.google.com 全体で動作するように変更
- v0.4.34: サムネイルリセット処理時の `innerHTML` を `textContent` に置き換え、Gemini のセキュリティポリシー (Trusted Types) 違反によるエラーを修正しました。
- v0.4.33: フローティングUIの背景色をライトピンクに変更し、文字色を見やすく調整しました。
- v0.4.29: 直近のGemini UI変更により
user-message要素がDOMから削除されたため、独自の属性(data-test-id="uploaded-img")を使用して確実かつ一意にアップロード画像を検出できるようセレクタを再調整。 - v0.4.28: ユーザー側のアップロード画像数を集計する際、GeminiのUI上の仕様(非表示のプロフィール画像など)が含まれてしまう不具合を修正。さらに画像収集ループが重複して二重カウントを行っていた内部ロジックを解消し、正確な枚数が反映されるように改修。
- v0.4.27: 長い会話履歴を遡って全件を数え上げる「Deep Scan History」機能を追加および内部の変数重複の修正。
- v0.4.26: 外部スクリプトから画像コピー機能を利用できるカスタムイベント (
gemini-turn-counter-copy-images) を追加し、内部処理をリファクタリング。 - v0.4.25: ローカル環境用のインストール検知ガードコード (
127.0.0.1,.app.github.dev) を削除。 - v0.4.24: 画像コピーボタンを3つ(📋U:ユーザーのみ, 📋M:モデルのみ, 📋All:全て)に分割し、対象を絞ってコピーできるように改善。
- v0.4.23: モデル生成画像、Googleマップ連携カード、思考プロセス (Thinking Process) ブロックのカウント機能を追加。画像コピー時に生成元種別 (user/model) を属性として付与。
- v0.4.22: MutationObserverにデバウンス処理(300ms)を追加しパフォーマンスを改善。
- v0.1.30 ~ v0.4.21 の更新: 画像コピーの高さ制限設定追加、テーブル・コードブロックのカウント強化、各種UI微調整など
- v0.1.29: インストール用の動的ドキュメントページへのアップデート。
- v0.1.25: アーティファクトの二重カウント問題を修正。
- v0.1.22: UIのドラッグ&ドロップ移動および位置の保存に対応。
- v0.1.21: UIの最小化ボタン追加と状態保存に対応。
- v0.1.20: アーティファクト(Canvas)およびリンクカードのカウントに対応。
- v0.1.19: SPAナビゲーション検知を
window.navigationAPI に移行しパフォーマンス向上。