答案引擎优化(AEO)是在 ChatGPT、Perplexity 和 Claude 答案中排名的做法,而不仅仅是 Google。本教程将引导您构建一个 AEO 仪表板,该仪表板运行每日提示、捕获品牌提及以及使用 Scavio 获取数据和 Metabase 获取图表来可视化随时间变化的趋势。
前置条件
- Python 3.8+
- Scavio API 密钥
- Postgres 数据库(Supabase 免费套餐有效)
- 元数据库自托管或云
操作指南
步骤 1: 设置数据库架构
创建一个表来记录提示答案提及行。
CREATE TABLE aeo_log (
id SERIAL PRIMARY KEY,
run_date DATE,
engine TEXT,
prompt TEXT,
answer TEXT,
brand_mentions JSONB
);步骤 2: 编写每日跟踪脚本
对于每个引擎和提示,查询 Scavio 并记录结果。
ENGINES = ['chatgpt', 'perplexity']
PROMPTS = ['best SERP API 2026', 'top Claude Code alternatives']
def run_tracker():
for engine in ENGINES:
for prompt in PROMPTS:
resp = requests.post('https://api.scavio.dev/api/v1/ask',
headers={'x-api-key': API_KEY},
json={'platform': engine, 'prompt': prompt}).json()
mentions = count_brands(resp.get('answer', ''))
save_row(engine, prompt, resp['answer'], mentions)步骤 3: 使用 cron 进行计划
每天上午 8 点(世界标准时间)运行跟踪器。
0 8 * * * /usr/bin/python3 /path/to/aeo_tracker.py步骤 4: 构建元数据库图表
创建每个引擎随时间变化的品牌提及趋势图。
-- In Metabase, use:
SELECT run_date, engine, brand_mentions->>'Scavio' AS scavio_count
FROM aeo_log
ORDER BY run_date;步骤 5: 设置警报
配置 Metabase,以便在竞争对手的提及次数跃升 20% 以上时向团队发送电子邮件。
// Metabase UI: Subscriptions > New alert on trend changePython 示例
import os, requests, psycopg2, json
API_KEY = os.environ['SCAVIO_API_KEY']
PG_URL = os.environ['POSTGRES_URL']
BRANDS = ['Scavio', 'SerpAPI', 'Tavily']
def count_brands(text):
return {b: text.lower().count(b.lower()) for b in BRANDS}
def run():
conn = psycopg2.connect(PG_URL)
cur = conn.cursor()
for engine in ['chatgpt', 'perplexity']:
for prompt in ['best SERP API 2026']:
r = requests.post('https://api.scavio.dev/api/v1/ask',
headers={'x-api-key': API_KEY},
json={'platform': engine, 'prompt': prompt}).json()
cur.execute('INSERT INTO aeo_log (run_date, engine, prompt, answer, brand_mentions) VALUES (CURRENT_DATE, %s, %s, %s, %s)',
(engine, prompt, r.get('answer', ''), json.dumps(count_brands(r.get('answer', '')))))
conn.commit()
run()JavaScript 示例
import { Client } from 'pg';
const API_KEY = process.env.SCAVIO_API_KEY;
const BRANDS = ['Scavio', 'SerpAPI', 'Tavily'];
const pg = new Client({ connectionString: process.env.POSTGRES_URL });
await pg.connect();
for (const engine of ['chatgpt', 'perplexity']) {
const r = await fetch('https://api.scavio.dev/api/v1/ask', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: engine, prompt: 'best SERP API 2026' })
});
const { answer } = await r.json();
const mentions = Object.fromEntries(BRANDS.map(b => [b, (answer.toLowerCase().match(new RegExp(b.toLowerCase(), 'g')) || []).length]));
await pg.query('INSERT INTO aeo_log (run_date, engine, prompt, answer, brand_mentions) VALUES (CURRENT_DATE, $1, $2, $3, $4)', [engine, 'best SERP API 2026', answer, mentions]);
}
await pg.end();预期输出
Daily rows appear in the aeo_log table, one per engine-prompt combination. Metabase charts display a 30-day trend line of brand mentions, and an alert fires when a competitor's count spikes.