0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPTの一時チャットのオンオフをショートカットで切り替えられるようにした

Posted at

はじめに

タイトルそのままですが、ChatGPTの一時チャットのオンオフをショートカットで切り替えられるようにした、というお話です。

間にChrome拡張機能 (ブラウザ拡張機能) を挟むことで実現しています。

一時チャット機能とは?

以下は一時チャットをオンにしたときに表示される説明文です。

このチャットが履歴に残ったり、ChatGPT のメモリを使用または更新したり、モデルの学習に使用されたりすることはありません。安全上の理由から、弊社はこのチャットのコピーを最大 30 日間保管することがあります。

つまりチャット履歴に残らずモデルの学習にも使われない会話を始める、みたいなモードです。

チャット画面右上の点線の吹き出しボタンが一時チャットモードのオンオフを切り替えるトグルボタンになっています。

一時チャットのトグルボタン

特に「履歴に残らない」という点が気に入っていて、自分の使い方だと単発の質問をするケースが多く、回答を得られて不要になったスレッドは残ってほしくないので、ほぼ一時チャットモードで動かしています。

本題

さて、この一時チャットモードですが、新しいチャットを作成したときのデフォルトはオフです。

そして、これが一番の問題なのですが、このオンオフを切り替える方法がマウスクリックしかなく、キーボードショートカットが存在しないのです!「新しいチャットの作成」や「チャットの検索」にはショートカットがあるのに!!

うーむ、どうしたものか...

:
:
:

あれ?ボタンを押すだけの拡張機能をつくって、それにショートカットを紐づければよいでのは?

それで思いついたのが
キーボードショートカットでChrome拡張機能を実行 → Chrome拡張機能で画面のボタン要素のクリック処理を発火
という風に拡張機能を間に挟む方法です。

つくったもの

たったのこれだけです。

/toggle-temporary-chat
├─ manifest.json
├─ background.js
└─ script.js

manifest.json

拡張機能のメタデータが書かれています。

デフォルトショートカットもここで定義していて、Ctrl + Shift + K を割り当てています。
Ctrl + Shift + O が新規チャット作成なのでそこからスムーズに一時チャットをオンにできそうなコマンドにしました。

manifest.json
{
  "name": "Toggle Temporary Chat",
  "description": "一時チャットのON/OFFを切り替る機能",
  "version": "1.0",
  "manifest_version": 3,
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "background.js"
  },
  "commands": {
    "toggle": {
      "suggested_key": {
        "default": "Ctrl+Shift+K",
        "mac": "Command+Shift+K"
      },
      "description": "Toggle"
    }
  }
}

background.js

「ショートカットが押下されたら script.js を実行する」という処理が書かれています。

background.js
chrome.commands.onCommand.addListener((command) => {
  // 押されたキーに紐づくコマンドが toggle だった場合
  // = 押されたキーが Ctrl+Shift+K だった場合
  if (command === "toggle") {
    chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
      const activeTab = tabs[0];
      chrome.scripting.executeScript({
        target : {tabId : activeTab.id},
        files : ["script.js"]
      });
    });
  }
});

script.js

「一時チャットのボタンがあればクリックする」という処理が書かれています。

一点、記事執筆時点ではこのセレクターで動いてますが、HTML構造が変わると動かなくなるのでご注意を。(まれによくある)

script.js
(() => {
  const selector = 'div#conversation-header-actions > div > span > button';
  const btn = document.querySelector(selector);
  if (btn instanceof HTMLButtonElement) {
    btn.click();
  }
})();

つかいかた

ブラウザの拡張機能の管理ページから「パッケージ化されてない拡張機能の読み込み」で上記3ファイルを含むフォルダを指定すればインストールできます。
詳しい手順は「Chrome拡張機能 自作」などで検索するかChatGPTに聞いてみてください。

インストールできていれば ChatGPT で新しいチャットを作成して Ctrl + Shift + K を押すことで一時チャットをオンオフできるようになっているはずです!

トグルの動作確認

おわりに

いかがでしたか?

今回は ChatGPT の一時チャットモードの話でしたが、拡張機能を間に挟んで任意のWEBページの操作にキーボードショートカットを紐づけるという考えは他にもいろいろ応用できそうな気がしますね。

最後まで読んでいただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?