AI回答エンジンによるキーワードリサーチ:回答のアウトラインを掘り下げる
Advanced Data Extraction Specialist
まとめ:
- AIの回答は整ったコンテンツのアウトラインです。 エンジンがトピックに答えるとき、その回答を構成する見出しや太字のフレーズは、モデルが重要だと考えるサブトピックです。この情報を集めれば、モデルが実際に返したものからキーワードとアウトラインマップを構築できます。
- 1つのプロンプト、複数のエンジン、1つの流れ。 Scrapeless LLMアクター(
scraper.chatgpt、scraper.gemini、scraper.perplexityなど)はエンドポイントと{ status, task_id, task_result }形式を共有しているため、単一のループで各エンジンから回答テキストを取得できます。 - シグナルは回答の独自の構造であり、引用ではありません。
result_text内のMarkdown見出しと短い太字のフレーズがサブトピックです。これらを抽出するのにモデルキーは不要で、単にパーサーがあれば大丈夫です。 - エンジン間の重複がサブトピックのランキングを決定します。 複数のエンジンが独立して取り上げるサブトピックは、あなたのコンテンツがほぼ確実にカバーする必要があるものです。
- スケジュールに沿って動作します。 時間をかけて種トピックを再キャプチャし、エンジンが強調し始めたり止めたりするサブトピックを確認しましょう。
- 無料で始められます。 新しいScrapelessアカウントには無料トライアルクレジットが含まれています — app.scrapeless.com でサインアップしてください。
パイプラインの概観
従来のキーワードリサーチは検索ボックスとボリューム予測から始まります。AI回答リサーチは回答自体から始まります:エンジンに種トピックを尋ね、その構造を読み返します — トピックを分割するセクション、太字にする概念、それらを配置する順序。この構造は、モデルがあなたのために作成したコンテンツブリーフです。
構築は以下のUniversal Scraping APIの3ステージで行われます:
- キャプチャ — Scrapelessアクターを介してAI回答エンジンで種トピックを実行し、各回答を保存します。
- 抽出 — 各回答のMarkdownから見出しと短い太字のフレーズを引き出します;それが候補のサブトピックです。
- ランキング — 各サブトピックを取り上げるエンジンの数をカウントします;重複があなたの優先順位になります。
出力は、アウトライン、ブリーフ、またはキーワードクラスターに変換できるランク付けされたサブトピックリストです。各エンジンが引用するソースについては、AI Overview scraper guideを参照してください。
使用できること
- 回答からコンテンツブリーフを作成する。 エンジンの見出しはあなたのH2になります;太字のフレーズは各項目でカバーすべきポイントになります。
- 既存のページのギャップを見つける。 エンジンのサブトピックと既存のセクションを比較し、欠けている部分を書いてください。
- 意図によってキーワードをクラスター化する。 複数のエンジンで共起するサブトピックは同じコンテンツに属するべきです;単独で存在するものは独自のページに値するかもしれません。
- トピックの動向を追跡する。 毎月再キャプチャし、どのサブトピックが浮上するかを観察すると、トピックの行き先を早期に把握できます。
- 証拠でライターにブリーフを渡す。 「3つのエンジンがX、Y、Zを中心にこれを構築しています」というのは、単なる推測よりも強いブリーフです。
なぜScrapeless LLMアクターか
各AIアシスタントは、認証や自動化防御の背後にあるJavaScriptアプリケーションです。回答を自分でキャプチャするには、レンダリング、サインイン、各プラットフォームごとのプロキシ回転が必要です。Scrapeless LLMアクターは、そのサーバーサイドを運用し、回答をフィールドとして返します。特にサブトピックの採掘に関して、彼らは以下を提供します:
- エンジン間で共有された
{ status, task_id, task_result }の流れにより、1つのループと1つのパーサーで全体をカバーできます。 result_textをMarkdownとして — 見出しや太字マーカーがそのまま生き残っており、ちょうど抽出者が読むべき情報です。- 195以上の国での住宅用出口 — ピン留めされた
countryが、その市場にいる実際のユーザーが見る回答の構造をキャプチャします。 - ブラウザを実行したり、サインインを維持したりする必要なし — 1つのエンドポイント、1つの
x-api-tokenヘッダー。
アクターラインの価格設定は使用ベースで、サインアップ時に無料トライアルクレジットがあります — 現在の料金体系はpricingページにあります。無料プランでAPIキーを取得するには、app.scrapeless.comにアクセスしてください。
前提条件
- ScrapelessのアカウントとAPIキー(無料プランには試用クレジットが含まれています) — app.scrapeless.com。
- あなたの環境におけるキー:
bash
export SCRAPELESS_API_KEY="your_api_token_here"
requestsを用いたPython 3。抽出ステップは標準ライブラリのみを使用します。
ステージ1 — 回答をキャッチする
1つのループがすべてのエンジンをカバーします。なぜなら、アクターはエンドポイントとエンベロープを共有するからです。回答のテキストは、マークダウンとしてresult_textに到達し、見出しや太字のマーカーはそのままです。
python
import json
import os
import time
import requests
ENDPOINT = "https://api.scrapeless.com/api/v2/scraper/execute"
HEADERS = {
"Content-Type": "application/json",
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
}
SEED = "初心者のためのウェブスクレイピング"
COUNTRY = "US"
ENGINES = {
"chatgpt": {"actor": "scraper.chatgpt", "extra": {}},
"perplexity": {"actor": "scraper.perplexity", "extra": {"web_search": True}},
"gemini": {"actor": "scraper.gemini", "extra": {}},
}
with open("answers.jsonl", "w", encoding="utf-8") as out:
for platform, spec in ENGINES.items():
payload = {"actor": spec["actor"], "input": {"prompt": SEED, "country": COUNTRY, **spec["extra"]}}
data = requests.post(ENDPOINT, headers=HEADERS, json=payload, timeout=300).json()
result = data.get("task_result") or {}
out.write(json.dumps({
"platform": platform,
"seed": SEED,
"captured_at": int(time.time()),
"status": data.get("status"),
"result_text": result.get("result_text") or "",
}) + "\n")
print(f"{platform}: {data.get('status')}")
各行のanswers.jsonlは、1つのエンジンによるシードに対する完全な回答です。
無料プランでAPIキーを取得する: app.scrapeless.com
ステージ2および3 — サブトピックを抽出し、重複度でランク付けする
各回答のマークダウンから見出しと短い太字のフレーズを引き出し、どれだけのエンジンがそれらを取り上げたかをカウントします。web_resultsのタイトルは意図的に省略されています。なぜなら、それらはサブトピックではなく、サードパーティのページ名だからです。
python
# extract.py — answers.jsonl -> ランク付けされたサブトピック候補
import json
import re
from collections import Counter
cands = Counter()
for line in open("answers.jsonl", encoding="utf-8"):
record = json.loads(line)
text = record["result_text"]
for heading in re.findall(r"^#{2,4}\s+(.+)$", text, re.M):
cands[heading.strip().lower()[:60]] += 1
for bold in re.findall(r"\*\*(.+?)\*\*", text):
phrase = bold.strip().lower()
if 2 <= len(phrase.split()) <= 6 and not phrase.startswith("http") and ":" not in phrase:
cands[phrase[:60]] += 1
ranked = [{"subtopic": k, "hits": c} for k, c in cands.most_common(25) if k]
json.dump(ranked, open("keywords.json", "w"), indent=2)
for item in ranked[:12]:
print(f'{item["hits"]}x {item["subtopic"]}')
シード「初学者のためのウェブスクレイピング」についての実行により、javascript-rendered sites、anti-bot protection、large-scale scraping、code vs. no-codeの決定、python scraping stack、およびinspect elementのようなサブトピックが浮かび上がりました。これらは初心者向けのこのトピックに関するページがカバーすべき正確なセクションです。回答は毎回再生成されるため、正確なリストは変動しますが、エンジン間や実行間で繰り返されるサブトピックは、優先すべき持続的なものです。
シリーズのスケジューリングとスケーリング
capture.pyを実行し、その後extract.pyをスケジュールで実行し、各実行をcaptured_atでキー付けして追加します。ライブ実行からのいくつかの注意点:
- ノイズをフィルタリングします。 マークダウンの見出しには「これが何をするか」のようなスキャフォールディングが含まれています — 小さなストップリストを維持するか、サブトピックが2つ以上のエンジンに出現することを要求します。
- 原始的な頻度ではなく、エンジン間の重複でランク付けします。 3つのエンジンが独立して取り上げるサブトピックは、1つのエンジンが自分を繰り返すよりも強い信号です。
countryを固定します。 マーケットによって回答構造は変わります;その値を記録に残しておくことでシリーズが比較可能に保たれます。- 引用データと組み合わせます。 サブトピックは何をカバーするかを教えてくれます;引用ソース(別のキャプチャ)が誰を信頼しているかを教えてくれます。
結論:回答を使ってアウトラインを作成します
トピックに対する最速のコンテンツブリーフは、AIエンジンが毎回その回答を生成するものです。回答をキャッチし、その構造を読み取り、エンジン間でサブトピックをランク付けすると、「このページは何をカバーすべきか?」は予想ではなくなり、計測したリストになります。
AI回答データパイプラインを構築する準備はできましたか?
無料プランを請求し、AI回答パイプラインを構築している開発者とつながるために私たちのコミュニティに参加してください: Discord · Telegram。
app.scrapeless.comで無料トライアルクレジットにサインアップし、あなたのコンテンツプログラムがカバーするシードトピックと市場にパイプラインを指向させてください。
よくある質問
Q: これはキーワードツールとどう違うのですか?
A: キーワードツールはクエリ文字列とボリューム見積もりを提供します。これは、AIエンジンが回答に課すサブトピック構造を提供します — それが本質的だと見なすセクションと概念 — これはフラットなキーワードリストではなく、より直接的にアウトラインに対応します。
Q: 抽出ステップにモデルAPIキーは必要ですか?
A: いいえ。見出しと太字マーカーはプレーンマークダウンなので、エクストラクターは標準ライブラリのみを使用します。モデルベースのパスはクラスタリングまたはラベリングのためのオプションのアップグレードです。
Q: 実行毎にサブトピックが変わるのはなぜですか?
A: 各エンジンは回答を再生成するため、正確な見出しが異なります。これが、パイプラインがエンジン間および実行間のオーバーラップでランクを付ける理由です — 繰り返し出現するサブトピックは安定した信号です。
Q: AI回答をスクレイピングするのは合法ですか?
A: アクターは公開されている回答コンテンツを読むことができます。すべてのスクレイピングと同様に、公共データの使用に制限し、各プラットフォームの利用規約を尊重し、個人データを避け、使用例が不明な場合は弁護士に相談してください。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



