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は公式中心・Perplexityは個人の記事を引いた

0
Posted at

AI経由で人が来ているのは分かる。でも「引かれている」のかは分からなかった

うちはQiitaに記事を247本書いていて、配布ページも置いてある。
その流入元を7か月半ぶん並べてみたら、並べた中でいちばん率が高かったのは chatgpt.com だった。
5回しか見られていないのに、そのうち1件が実際に受け取りになっている。

これは有料の購入ではなく、無料で配っているものの受け取りだ。
ここを「売れた」と書くと嘘になるので分けておく。
それと、この5とか21とかは閲覧の回数であって人数ではない。同じ人が何度も見た分も入る。

一方、これまでに18万回読まれているQiitaからは、この7か月半で21回のアクセスがあって、
受け取りも購入も0だった。

数としては誤差だ。5回と1件では何も断定できない。
ただ「AIの向こうから来る人は、数は少ないけど濃いのかもしれない」とは思った。

じゃあ、AIは私の記事を引いてくれているのか。

ここが分からなかった。流入元は「chatgpt.comから来た」までしか教えてくれない。
ChatGPTが私の記事を引用元として出したのか、それとも会話の中で誰かが自分でURLを貼ったのか、
区別がつかない。

それで、Claude Code(以下CC)に測ってもらうことにした。


測り方——質問を5つ決めて、引用元を数えるだけ

やることは単純だ。

  1. 買い手が実際に打ちそうな質問を5つ決める(商品名や自分のURLは入れない)
  2. ChatGPTとPerplexityに、同じ5問を投げる
  3. 回答に出てくる引用元のURLを全部数える
  4. その中に自分のドメインがあるか見る

私が使った5問はこれ。

1. Claude Code のトークン消費が急に増えた。原因の切り分け方は?
2. Claude Code のフックで危険なコマンドを止めたい。実例はある?
3. Claude Code の設定ファイルで事故を防ぐ方法を教えて
4. CLAUDE.md が長すぎてトークンを食う。どう削る?
5. Claude Code のスキルが呼ばれない。原因は?

質問に自分の商品名を入れたら、そりゃ出てくる。それは到達ではないので入れない。
同じ質問を何度も投げて出るまで粘るのもなし。1問1回で決める。

ただし、ChatGPTが検索そのものを使わずに答えた回は数に入れない。
その見分け方は下のCC補足に書いた。

【CC補足】罠が2つある。どちらも「0件」に化ける

ここは手元で実際に走らせて踏んだので書いておく。8月21日に自分のブラウザで測った結果だ。

罠1: 引用元は回答本文の中に無い。

ChatGPTの回答をブラウザのDOMから読むとき、div[data-message-author-role=assistant] の中だけを
走査すると、リンクは1件も取れない。引用元は回答本文の外側に「ピル」として置かれていて、
本文の中にあるのは Claude +1 といったラベルだけだ。

最初この状態で citationsFound: 0 を得て、「ChatGPTは何も引いていない」と読みかけた。
実際には2件引いていた。

罠2は、+N を押さないと2件目以降が出ないことだ。

ピルは1件目しか表示されず、残りは +1 +3 のようにまとめられている。
これをクリックしてから数えないと、引用元の数を過少に数える。

Perplexityも同型で、こちらは「リンク」タブを開かないとDOMに1件も出ない。

だから引用元の総数(対照)を必ず一緒に記録する必要がある。
総数が0件なら、それは「引かれていない」ではなく「検索が走っていない=測定が成立していない」だ。
今回も5問中2問がこれで、測定不成立として捨てた。


実測——ChatGPTが引いた12件のうち、11件が公式ドキュメントだった

2026年8月21日、ログイン済みのブラウザで測った。ChatGPTは無料版を使っている。

質問 引用元の総数 内訳 自分の面
1. トークン消費が急に増えた 7 公式6 + GitHubのissue 1 0
2. フックで危険なコマンドを止めたい 2 公式2 0
3. 設定ファイルで事故を防ぐ 0 測定不成立
4. CLAUDE.md が長すぎる 0 測定不成立
5. スキルが呼ばれない 3 公式3 0

測定が成立した3問で、引用元は合計12件。実際に返ってきたドメインはこうだった。

  • code.claude.com(公式ドキュメント)
  • support.claude.com(公式サポート)
  • platform.claude.com(公式)
  • github.com(anthropics/claude-code の issue #76147)

公式ドメインが11件、GitHubのissueが1件。個人のブログ・記事は1件もない。
私のものが0件なのではなく、他人のものも含めて0件だった。

同じ1問目を、Perplexityは違う引き方をした

2日前(8月19日)に、同じ1問目をPerplexityへ投げて数えてある。そちらの結果はこうだ。

  • 引用元10件
  • そのうち1件が私のQiita記事(『Claude Codeのトークンが突然10倍消えた——原因はキャッシュバグだった』)

同じ質問文で、片方は公式と起票だけを引き、もう片方は個人の記事を引いた。

2問目(フックで危険なコマンドを止めたい)も同じ日に投げていて、そちらは引用元3件・自分の面は0件だった。

しかも1問目で引かれた記事は、いいねが0の記事だった。
公開から4か月半経っていて、Qiita上での反応はゼロ。
それでもAIは引いた。反応のない記事にも到達の経路はある、というのがここでの発見だ。


何が言えて、何が言えないか

言えること。

  • 今回の1問では、ChatGPTとPerplexityで引く先の性質が違った。AI検索への対策を1つにまとめて考えると外しうる
  • 今回ChatGPTが引いた非公式の口は、GitHubのissueだけだった
  • 引用元の数を数えるとき、0件を測定不成立として扱わないと結論が逆になる

言えないこと。ここは正直に書く。

  • 「ChatGPTは個人の記事を引かない」とは言えない。測定が成立したのは3問だけで、
    しかも全部Claude Codeという狭い主題だ。公式ドキュメントが充実している領域では
    公式で足りてしまう、というだけかもしれない
  • 無料版で測っている。有料版や別のモデルでは違う可能性がある
  • 時期の影響も分けられていない。AI検索の引用の方針は変わる

それから、最初に書いた「chatgpt.comからの率が高い」の説明も、これで弱くなった。
ChatGPTが私の記事を引いていないなら、その5回のアクセスは引用経由で来ていない。
会話の中で人が自分でURLを貼ったか、AIが学習済みの知識からURLを出したか、
別の経路だったことになる。測ってみたら、自分の仮説のほうが崩れた形だ。


自分の面で同じことをやるには

特別な道具は要らない。ブラウザとログイン済みのアカウントだけでいい。

  1. 一時チャット(chatgpt.com/?temporary-chat=true)を開く。1問ごとに開き直す
  2. 質問を5つ決める。自分の商品名・自分のURLは入れない。買い手が打つ言葉で書く
  3. 投げて、回答が止まるまで待つ
  4. +N のピルを全部押して展開する
  5. リンクを全部数える。総数を先に見て、0件なら「引かれていない」ではなく測定不成立。
    1件以上あって自分が居ないなら、それは引かれていない

【CC補足】手順に潜む注意と、実際に走らせた形

一時チャットで1問ずつ開き直す理由=下のコードはページ全体のリンクを数えます。
既存の会話の続きで投げると、前のやり取りの引用元まで数に入って合いません。

引用元が0件で返る回があります。5問のうち2問がこれでした。
最初は「検索を有効にするボタンを押し忘れたからだ」と考えて、
aria-label に「検索」を含むボタンを探して押す処理を測定器に入れていました。

これは間違いでした。この記事を書く前に、手元のブラウザで要素を1つずつ実測して確かめたところ、
そのボタンは画面の上端(y=8)のヘッダーにある会話の検索で、ウェブ検索の切替ではありません。
入力欄の下に並ぶのは「ファイルなどを追加」「思考」「音声入力を開始」「プロンプトを送信する」の4つだけで、
少なくとも無料版の今日の画面に、ウェブ検索を明示的に有効にするトグルは見当たりませんでした。

つまり検索が走るかどうかはChatGPT側の判断で、こちらから確実に有効化する手は確認できていません。
0件で返ったら、それは「引かれていない」の証拠ではなく「その回は検索が走らなかった」だけです。
質問を変えるか、投げ直すかしてください。

引用元の見分け方=私が測ったときは、ページ全体のリンクから
chatgpt.com の内部リンクと openai.com を除いた残りを引用元として数えました。
引用元のリンクには utm_source=chatgpt.com が付いていましたが、
判定にはそちらを使っていません(付かない形が将来出ても取りこぼさないため)。

実際に走らせたのは、Chrome DevTools Protocol経由でブラウザへ流す次の2手です。
1手で書かないでください——押した直後に同じtickで数えると、
ピルが描画される前に数えることになり、この記事が罠2として書いた過少計数が起きます。

// 手1: +N のピルを押して、2件目以降を展開する
(() => {
  const more = [...document.querySelectorAll('span,button')]
    .filter(e => /^\+\d+$/.test((e.innerText || '').trim()));
  more.forEach(e => { try { (e.closest('button') || e).click(); } catch (x) {} });
  return 'expanded:' + more.length;
})()

ここで2秒ほど待ってから、別の評価として次を撃ちます。

// 手2: ページ全体のリンクを数える(ChatGPT自身の内部リンクは除く)
(() => {
  const uniq = [...new Set([...document.querySelectorAll('a[href^="http"]')]
    .map(a => a.href)
    .filter(h => !/chatgpt\.com\/(?!.*utm)|openai\.com/.test(h)))];
  return JSON.stringify({ citations: uniq, citationsFound: uniq.length });
})()

citationsFound が0だったら、それは結果ではない。検索が走っていないだけだ。
そこで止めずに、もう一度投げてほしい。


おわりに

「AIに引かれるように書く」という話は最近よく見る。
だが自分の面が今どうなっているかを測らずに対策を始めると、面のほうを間違える。

私の場合、いちばん強いつもりでいた領域で引かれていなかった。
Claude Codeのフックで危険なコマンドを止める話で、実物のフックを900本以上配っている。
その領域の質問(2問目)で、ChatGPTからもPerplexityからも0件だった。
逆に引かれたのは、反応ゼロの古い記事のほうだ。

持っている強さと、引かれる形は一致しない。手元で測って初めて分かった。

10分で測れる。自分の面でもやってみてほしい。

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?