AI回答エンジン全体でブランドの感情を監視する方法
Scraping and Proxy Management Expert
TL;DR:
- AIの回答におけるブランド感情は引用シェアとは異なる信号です。 引用されることはソースが使用されたことを示し、感情は買い手が実際に読む回答におけるあなたのブランドの説明の仕方を示します — 両者が一致しない場合もあります。
- 一つのプロンプト、すべてのエンジン、一つのエンベロープ。 Scrapeless LLMのアクター(
scraper.chatgpt,scraper.copilot,scraper.perplexity,scraper.gemini, など)はエンドポイントと{ status, task_id, task_result }の形状を共有しているため、一つのキャプチャループで全てをカバーできます。 - 感情は回答テキストから計算され、引用からは計算されません。
result_text内のブランド名を見つけ、その言及の周囲の言葉を読み、周囲のコンテキストをスコア付けします — 透明なレキシコンのベースラインに必要なモデルキーは不要です。 - エンジンによって異なる結果が出ます。 "Scrapelessはウェブスクレイピングの良いツールですか?"というプロンプトのライブキャプチャでは、同じブランドが二つのエンジンでポジティブ、三つ目でニュートラル、四つ目でネガティブであった — 単一エンジンでのチェックでは見逃すような分割です。
- スケジュールに従って実行されます。 各実行を
task_idとタイムスタンプと共に取り込み、検出し、スコア付けし保存します;数週間にわたるシリーズがブランド認識のトレンドです。 - 無料で始められます。 新しいScrapelessアカウントには無料トライアルクレジットが含まれています — app.scrapeless.comでサインアップしてください。
パイプラインの概要
買い手がAIアシスタントにあなたの製品について尋ねると、アシスタントは二つのことを決定します:あなたに言及するか、そしてどのように言及するか。 "Xは最も信頼できる選択"も"Xは強力だが高価で学ぶのが難しい"もどちらも言及ですが、助けになるのは一方だけです。引用トackingは最初の次元をカウントします。このパイプラインは二つ目の次元を測定します。
このビルドはユニバーサルスクレイピングAPIの上に三つのステージがあります:
- キャプチャ — AI回答エンジンにわたって固定のブランド意図プロンプトをScrapelessアクターを通じて実行し、各生の回答を保存します。
- 検出 — 回答テキスト内のブランドのすべての言及を見つけ、周囲のコンテキストウィンドウを引き出します。
- スコア付け — 各言及のコンテキストの感情を評価し、エンジンごとに一つの数値に集約します。
出力は、時間を通じてチャート化できるエンジンごとの感情スコアであり、それを生成した生の言及とともに提供されます。引用シェアに関する関連指標 — エンジンがどこからデータを引っ張っているか — はAI概要スクレイパーガイドを参照してください。
これができること
- ネガティブなフレーミングが広がる前にキャッチする。 あるエンジンがあなたのブランドを「高価」や「学ぶのが難しい」といった言葉で表現し始めた場合、失われた取引に現れる前にスコアでそれを捉えます。
- エンジン間の認識を比較する。 あなたの買い手が使うアシスタントは、必ずしもあなたを最も好むエンジンではありません;並べてスコアを比較することで、どこに焦点を合わせるべきかが分かります。
- 感情をコンテンツの変更に結びつける。 比較ページやドキュメントのリライト発表前後でキャプチャし、フレーミングが変わるかどうかを観察します。
- 「言及された」と「うまく言及された」を区別する。 高い言及数でフラットな感情スコアは低い言及数とは異なる問題であり、別の修正を要します。
- ダッシュボードにフィードする。 エンジンごとのスコアと発言の行はデータベースやチャートに直接取り込むことができます。
なぜScrapeless LLMアクターなのか
各AIアシスタントは認証と自動化防御の背後にあるJavaScriptアプリケーションです;自分自身で回答をキャプチャすることは、プラットフォームごとのレンダリング、サインイン、およびプロキシのローテーションを意味します。Scrapeless LLMアクターはサーバーサイドでその面を実行し、回答をフィールドとして返します。感情パイプラインに特化して、以下の特長を持ちます:
- すべてのエンジンにわたる共有の
{ status, task_id, task_result }JSONエンベロープ — したがって、一つのキャプチャループと一つのパーサーで全体をカバーできます。 result_textはマークダウンとして — ブランドが説明されている正確なテキストであり、言及をスキャンする準備ができています。- 195か国以上での住宅向け出口 — したがって、固定された
countryが、その市場の実際のユーザーが読む回答をキャプチャします。 - 実行するブラウザーは不要、サインインを維持する必要もありません — 一つのHTTPエンドポイント、一つの
x-api-tokenヘッダー。
俳優ラインの価格設定は使用ベースで、サインアップ時に無料トライアルクレジットが付与されます。現在の価格帯は価格ページに記載されています。無料プランでのAPIキーは、app.scrapeless.comで取得できます。
前提条件
- ScrapelessのアカウントとAPIキー(無料プランにはトライアルクレジットが含まれています) — app.scrapeless.com。
- 環境にキーを設定:
bash
export SCRAPELESS_API_KEY="your_api_token_here"
- Python 3と
requestsライブラリ。感情分析のステップは標準ライブラリのみを使用するため、ベースラインのモデルキーを管理する必要はありません。
ステージ1 — 回答をキャプチャ
一つのループがすべてのエンジンをカバーします。なぜなら、俳優はエンドポイントとエンベロープを共有しているからです。各エンジンの違いは入力マップにあり、Grokは推論modeを取り、Perplexityはweb_searchを必要とし、Copilotは独自のmodeを取ります。回答のテキストはChatGPT、Copilot、Perplexity、Gemini、AI Modeの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"],
}
BRAND = "Scrapeless"
PROMPT = "Scrapelessはウェブスクレイピングに適したツールですか?その長所と短所は何ですか?"
COUNTRY = "US"
ENGINES = {
"chatgpt": {"actor": "scraper.chatgpt", "extra": {}},
"copilot": {"actor": "scraper.copilot", "extra": {"mode": "smart"}},
"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": PROMPT, "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,
"brand": BRAND,
"prompt": PROMPT,
"captured_at": int(time.time()),
"status": data.get("status"),
"task_id": data.get("task_id"),
"result_text": result.get("result_text") or "",
}) + "\n")
print(f"{platform}: {data.get('status')} ({len(result.get('result_text') or '')}文字)")
answers.jsonlの各行は各エンジンの回答で、監査トレイルのためにtask_idでキー付けされています。
無料プランでAPIキーを取得: app.scrapeless.com
ステージ2および3 — 言及を検出し、感情をスコアリング
各回答の中からブランドを見つけ、各言及の周辺のテキストのウィンドウを読み取り、その文脈を小さなポジティブ/ネガティブのレキシコンに対してスコアリングします。レキシコンのベースラインは透明でモデルキーを必要とせず、ニュアンスを求める場合は後でモデルベースのスコアラーに入れ替えることができます。
python
# score.py — answers.jsonl -> エンジンごとの感情
import json
import re
POSITIVE = {"best", "great", "powerful", "reliable", "easy", "fast", "robust", "excellent",
"strong", "good", "effective", "scalable", "flexible", "recommended", "leading",
"top", "efficient", "affordable"}
NEGATIVE = {"expensive", "slow", "difficult", "limited", "weak", "poor", "lacking", "unreliable",
"complex", "costly", "drawback", "weakness", "con", "cons", "issue", "problem", "downside"}
WINDOW = 120 # 言及の両側の文脈の文字数
rows = []
for line in open("answers.jsonl", encoding="utf-8"):
record = json.loads(line)
brand = record["brand"].lower()
text = (record.get("result_text") or "").lower()
hits = [m.start() for m in re.finditer(re.escape(brand), text)]
pos = neg = 0
for i in hits:
context = text[max(0, i - WINDOW): i + WINDOW]
words = set(re.findall(r"[a-z]+", context))
pos += len(words & POSITIVE)
neg += len(words & NEGATIVE)
total = pos + neg
sentiment = (pos - neg) / total if total else 0.0
label = "positive" if sentiment > 0.15 else "negative" if sentiment < -0.15 else "neutral"
rows.append({"platform": record["platform"], "mentions": len(hits),
"pos_signals": pos, "neg_signals": neg,
"sentiment": round(sentiment, 3), "label": label})
print(f"{record['platform']:11} mentions={len(hits):3} sentiment={sentiment:+.3f} ({label})")
json.dump(rows, open("sentiment.json", "w"), indent=2)
単一のライブキャプチャによるScrapelessプロンプトは、一つのエンジンだけでは隠されていた分裂を生み出しました:
| エンジン | 言及数 | 感情 | 読み |
|---|---|---|---|
| ChatGPT | 18 | +0.52 | ポジティブ |
| Copilot | 38 | −0.02 | ニュートラル |
| Perplexity | 40 | +0.39 | ポジティブ |
| Gemini | 19 | −0.60 | ネガティブ |
言及数と感情は独立して動きます:Copilotの38の言及はニュートラルに収まりましたが、Geminiの19の少ない言及は sharply ネガティブ に偏りました。引用を数えることでは、両方の事実を見逃すことになったでしょう。各エンジンが新たに答えを生成するため、具体的な数値は実行ごとに変動します — エンジン間のポジティブ/ニュートラル/ネガティブの分裂が耐久的な信号であり、単一の数値ではありません。
シリーズのスケジューリングとスケーリング
capture.py を実行し、次に score.py をスケジュール — 毎日または毎週 — して、各実行の行を captured_at と task_id にキーを付けてストアに追加します。ライブ実行からのいくつかのメモ:
- 回答は実行ごとに変動します ので、単一のキャプチャはサンプルであり、判決ではありません。シリーズ全体のトレンドが信号です。
countryを固定します ので、スコアが重視する市場を反映し、実行間で比較可能な状態を保ちます。- 語彙をベースラインとして扱います。 それは透明で迅速です。より細かい読み(皮肉、条件付き称賛)のためには、同じコンテキストウィンドウでモデルを使用してスコアをつけ、語彙をクロスチェックとして保持します。
- 生の言及を保ちます。 スコアが動いたとき、保存されたコンテキストウィンドウは どの フレーズがそれを動かしたかを教えてくれます。
結論:AIがあなたをどのように描写するかを測定する
引用追跡はアシスタントがあなたのページを使用したことを伝え、感情追跡は回答を読んだバイヤーが良い印象を持ったかどうかを教えます。Scrapeless LLM アクターは二つ目を測定可能にします:一つのキャプチャループ、回答テキストをフィールドとして、そして透明なスコアラーが「AIエンジンは私たちについてどう話していますか?」をチャートにできる数値に変えます。
AI回答データパイプラインを構築する準備ができましたか?
私たちのコミュニティに参加して無料プランを手に入れ、AI回答パイプラインを構築している開発者とつながりましょう:Discord · Telegram。
無料トライアルクレジットのために app.scrapeless.com にサインアップし、監視する必要のあるブランド、プロンプト、市場にパイプラインを向けます。
FAQ
Q: ブランドの感情は引用のシェアとどう違いますか?
A: 引用のシェアはあなたのドメインがソースとして使われるかどうかをカウントします;感情は回答テキスト内であなたのブランドがどのように描写されているかを読み取ります。ブランドは頻繁に引用されることがあっても、平坦に描写される場合や、ほとんど引用されていないのに温かく描写されることがあります — 2つの指標は異なる質問に答えます。
Q: 感情ステップにモデルAPIキーは必要ですか?
A: いいえ。ベースラインスコアラーはコンテキストウィンドウ上での透明なポジティブ/ネガティブ語彙を使用するため、標準ライブラリだけで実行されます。モデルベースのスコアラーはオプションのアップグレードであり、必須ではありません。
Q: なぜ同じブランドが各エンジンで異なったスコアを得ましたか?
A: 各エンジンは自分のソースとフレーズから独自の答えを合成するため、あなたのブランドの周りの言葉は異なります。その乖離こそがパイプラインが浮き彫りにするものです — あなたのバイヤーが使用するアシスタントは、あなたが想定したものとは異なる枠組みであなたを捉えるかもしれません。
Q: AI回答のスクレイピングは合法ですか?
A: アクターは公に利用可能な回答コンテンツを読み取ります。すべてのスクレイピングと同様に、公のデータに使用を制限し、各プラットフォームの利用規約を尊重し、個人データを避け、不明な使用例については弁護士に相談してください。
Q: 複数のブランドを追跡できますか?
A: はい。競合に中立的なプロンプトで同じキャプチャを実行し、同じ回答に対して複数のブランドの文字列をスコアして、あなた自身の記録で横並びでフレーミングを比較します。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



