自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/VBA/GAS/JavaScript/Raspberry Piなどで色んなことを自動化

【悪用厳禁】AIチャットにURLパラメータでプロンプトを流し込む方法まとめ(Notion AI / Grok / Gemini ほか)

※便利な半面、攻撃の対象にもなり得るので、安易にAIのリンクを開いちゃだめですね。

この記事でできるようになること

  • URLに ?q=プロンプト を付けるだけで、チャットUIへプロンプトを自動入力・実行可能なAIがどれなのかを知る
  • 対応サービスごとの挙動の違いを把握(Notion AI / Grok / Google AIモード / Felo / Claude / ChatGPT / Gemini ほか)
  • 非対応サービス(Gemini)でも、Tampermonkeyスクリプトで同じことを実現
  • ブックマーク・ショートカット・ユーザースクリプト連携で、ワンクリックでAIに仕事を振れるようにする

パラメータ q にプロンプトを渡すだけで実行される

TL;DR

AIサービスのURLに ?q=プロンプト を付けるだけで、チャットUIへプロンプトを自動入力・実行できる。対応状況はサービスごとに違う。7サービスを検証した結果まとめ。

対応状況サマリ(2026-05-01 時点)

サービス URL例 パラメータ 入力 自動実行 備考
Notion AI https://notion.so/ai?q=... q 標準機能。PCブラウザのみ
Grok https://grok.com/?q=... q そのまま実行される
Google AIモード https://www.google.com/search?udm=50&q=... q 追加: aep=11&mtid=...&atvm=2
Felo AI https://felo.ai/search?q=... q 動作確認済み
Claude https://claude.ai/new?q=... q 入力のみ。警告表示あり
ChatGPT https://chatgpt.com/?prompt=... prompt セットされるが実行はされない
Gemini https://gemini.google.com/app?q=... q 非対応
GenSpark 非対応
Sakana AI 非対応

Notion AI — 標準機能でいけるのが強い

Notion AI は URLパラメータ qネイティブでサポートしている。スクリプト不要。

項目 内容
パラメータ名 q
動作 Notion AI チャットUIを開いた時点で q の値がプロンプトとして自動入力・実行される
対応環境 PCブラウザ版のみ(モバイル非対応)

使用例

https://www.notion.so/ai?q=テストメッセージ

パラメータ q にプロンプトを渡すだけで実行される

発見の経緯

  • 2026-04-11: Tampermonkey で q パラメータを受け取るスクリプトを自作
  • 2026-04-12: Tampermonkeyを無効にしても同じ挙動 → 標準機能として実装済みと判明

⚠️ 公式ドキュメントでの言及は未確認(undocumented feature の可能性あり)。UI変更で挙動が変わるリスクは留意。

Gemini — Tampermonkeyで補う

Gemini は標準では q パラメータ非対応。Tampermonkey で実現する。

Geminiはパラメータ非対応なので自前のスクリプトで対応

使用例

https://gemini.google.com/app?q=テストメッセージ

コピペで動くTampermonkeyスクリプト

// ==UserScript==
// @name         Gemini q autorun
// @namespace    https://codelife.cafe
// @version      2026-04-12
// @description  URLパラメータ q のプロンプトをGemini Web UIへ自動入力・送信する
// @icon         https://www.google.com/s2/favicons?sz=64&domain=gemini.google.com
// @author       marumo
// @match        https://gemini.google.com/*
// @run-at       document-idle
// @grant        none
// ==/UserScript==

const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

(async () => {
  const url = new URL(location.href);
  const q = url.searchParams.get('q') ?? '';
  if (!q) return;

  let editor = null;
  for (let i = 0; i < 20; i++) {
    const rte = document.querySelector('rich-textarea');
    editor =
      rte?.querySelector?.('[contenteditable="true"]') ||
      rte?.shadowRoot?.querySelector?.('[contenteditable="true"]');
    if (editor) break;
    await sleep(500);
  }
  if (!editor) return;

  editor.focus();
  document.execCommand('selectAll');
  const ok = document.execCommand('insertText', false, q);
  editor.dispatchEvent(new Event('input', { bubbles: true }));
  if (!ok) return;

  url.searchParams.delete('q');
  history.replaceState(null, '', url.toString());

  await sleep(2000);

  editor.dispatchEvent(
    new KeyboardEvent('keydown', {
      key: 'Enter', code: 'Enter', keyCode: 13, which: 13,
      bubbles: true, cancelable: true,
    }),
  );
  editor.dispatchEvent(
    new KeyboardEvent('keyup', {
      key: 'Enter', code: 'Enter', keyCode: 13, which: 13,
      bubbles: true, cancelable: true,
    }),
  );
})();

参考: Notion AI 用 Tampermonkey

標準機能で動くので不要だが、挙動をカスタマイズしたいとき用のテンプレ。

// ==UserScript==
// @name         Notion AI q autorun
// @namespace    https://codelife.cafe
// @version      2026-04-12
// @description  URLパラメータ q のプロンプトをNotion AIチャットへ自動入力・送信する
// @icon         https://www.google.com/s2/favicons?sz=64&domain=notion.so
// @author       marumo
// @match        https://www.notion.so/*
// @run-at       document-idle
// @grant        none
// ==/UserScript==

const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

(async () => {
  const url = new URL(location.href);
  const q = url.searchParams.get('q') ?? '';
  if (!q) return;

  let editor = null;
  for (let i = 0; i < 20; i++) {
    editor = document.querySelector('[role="textbox"]');
    if (editor) break;
    await sleep(500);
  }
  if (!editor) return;

  editor.focus();
  document.execCommand('selectAll');
  const ok = document.execCommand('insertText', false, q);
  editor.dispatchEvent(new Event('input', { bubbles: true }));
  if (!ok) return;

  url.searchParams.delete('q');
  history.replaceState(null, '', url.toString());

  await sleep(2000);

  editor.dispatchEvent(
    new KeyboardEvent('keydown', {
      key: 'Enter', code: 'Enter', keyCode: 13, which: 13,
      bubbles: true, cancelable: true,
    }),
  );
  editor.dispatchEvent(
    new KeyboardEvent('keyup', {
      key: 'Enter', code: 'Enter', keyCode: 13, which: 13,
      bubbles: true, cancelable: true,
    }),
  );
})();

共通テクニック

活用シナリオ

  • ブックマーク化 — よく使うプロンプトをブラウザのブックマークに登録して、ワンクリック実行
  • 外部トリガー連携 — Shortcuts / タスクスケジューラ 等からURLを開いてプロンプトを投入
  • Tampermonkey連携 — 他サイトのユーザースクリプトから window.open() でAIへ渡す(YouTube要約ボタンなど)

ハマりポイント

  • execCommand('insertText') は非推奨API。動かなくなったら InputEvent ベースへ切替
  • history.replaceStateq を消すのはリロード再送信防止
  • UI更新でセレクタが変わると動作停止する。定期メンテ前提で運用するのが安全そう

各サービスの個別メモ

Grok

クォータ制限掛かったけど認識はされてる

Google AIモード

パラメータ q にプロンプトを渡す

Felo AI

パラメータ q にプロンプトを渡す

Claude

  • URL: https://claude.ai/new?q=test
  • 入力はされるが自動実行はなし
  • 警告メッセージが出る。セキュリティ配慮されてる感じ

プロンプトとしてセットされるが、自動送信は無し。

ChatGPT

ChatGPTもセットはされるが実行はされない

GenSpark / Sakana AI

  • どちらもURLパラメータ注入は非対応(2026-04-13)

Tampermonkeyスクリプト比較

項目 Notion AI Gemini
q パラメータ 標準対応 Tampermonkey必須
入力欄セレクタ [role="textbox"] rich-textarea → 内部 [contenteditable]
入力方式 execCommand('insertText') execCommand('insertText')
送信方式 Enter キー Enter キー
対応環境 PCブラウザのみ PCブラウザ(Chrome推奨)

💡 @run-at context-menu にしておくと、Tampermonkeyスクリプトをコンテキストメニューから任意のタイミングで実行できる。

セキュリティリスクの話

便利な反面、攻撃面も広がる。ざっと整理しておく。

攻撃ベクトル

プロンプトインジェクション via URL(最大リスク)

?q=自動実行されるサービス(Notion AI, Grok, Google AI, Felo)では以下が成立する。

  • フィッシングリンク偽装 — 短縮URLに悪意あるプロンプトを仕込み、クリックさせる
  • ソーシャルエンジニアリング — 「便利なリンク」と称して、AIにワークスペース情報の検索・表示を指示
  • Notion AI固有リスク — ワークスペースデータへのアクセス権を持つため、q で機密データの検索・要約が走りかねない

Tampermonkeyスクリプトの信頼チェーン

  • execCommand('insertText') + Enterキーイベント送信は、UIの認証バウンダリを完全にバイパスする
  • スクリプト改ざん(サプライチェーン攻撃)で任意プロンプトをサイレント実行可能
  • @match のワイルドカード指定はサブパス全体が影響範囲

history.replaceState による痕跡消去

リロード再送信防止が目的だが、同手法を使われるとURLバーから悪意あるプロンプトの痕跡が消えてしまい、ユーザーは実行内容を確認しづらくなる。

リスクマトリクス

攻撃 対象サービス 深刻度 実行難易度
URLフィッシング(自動実行) Notion AI, Grok, Felo
ワークスペースデータ窃取 Notion AI
Tampermonkey改ざん Gemini, Notion AI
セッションハイジャック経由 全サービス

緩和策

  1. 実行前確認ダイアログ — Claude方式。自動実行せず、プロンプト内容をプレビューしてから承認
  2. リファラチェック — 外部サイトからの q 付きアクセスを検知・警告
  3. スクリプト署名検証 — Tampermonkey自作スクリプトにハッシュチェックを追加
  4. 自動実行の無効化オプション&autorun=false のようなフラグで明示的に制御

⚠️ 特にNotion AIはワークスペースデータへのアクセス権を持つので、URLフィッシングの影響範囲が他サービスより大きい。短縮URLや外部サイトからのリンクには要注意。

まとめ

  • Notion AI / Grok / Google AIモード / Felo は ?q= だけで自動実行まで走る
  • Claude / ChatGPT は入力まで、実行はユーザー操作が必要
  • Gemini は非対応だが Tampermonkey で補える
  • 便利さと引き換えに、特にNotion AIはフィッシング耐性が低くなる点は覚悟して使う

ブックマークやショートカットから一撃でAIを叩けるようになると、体感の生産性がかなり上がる。試しやすい所から導入して、セキュリティ面も頭の片隅に置いておくといいかも。