将 Surfer SEO 与搜索 API 相结合,以提取实时 SERP 数据以及 Surfer 的内容推荐。 Surfer SEO 提供内容结构和关键字密度指导,但它不会向您显示您撰写时的实时 SERP 情况。通过查询目标关键字的搜索 API,您可以实时查看当前精选片段、人们也提出的问题以及竞争对手的标题。这使您可以将内容与 Surfer 基于 NLP 的建议和实际搜索结果页面保持一致。
前置条件
- 已安装 Python 3.8+
- 请求已安装库
- 来自 scavio.dev 的 Scavio API 密钥
- Surfer SEO 帐户(基本费用为 99 美元/月或更高)
操作指南
步骤 1: 查询 SERP 目标关键字
为您在 Surfer SEO 中优化的关键字提取当前的 Google SERP。
import os, requests, json
API_KEY = os.environ['SCAVIO_API_KEY']
def get_serp(keyword: str) -> dict:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': keyword}, timeout=15)
return resp.json()
serp = get_serp('best project management tools 2026')
print(f"Organic results: {len(serp.get('organic_results', []))}")
print(f"People Also Ask: {len(serp.get('people_also_ask', []))}")步骤 2: 提取竞争对手内容信号
分析排名靠前的页面,了解其标题模式、字数信号和内容角度。
def analyze_competitors(serp: dict) -> list:
competitors = []
for r in serp.get('organic_results', [])[:10]:
competitors.append({
'position': r.get('position', 0),
'title': r.get('title', ''),
'url': r.get('link', ''),
'snippet_length': len(r.get('snippet', '')),
'has_date': any(str(y) in r.get('title', '') for y in [2025, 2026]),
'has_number': any(c.isdigit() for c in r.get('title', '')),
})
return competitors
comps = analyze_competitors(serp)
for c in comps[:5]:
print(f"#{c['position']}: {c['title'][:55]} (date={c['has_date']})")步骤 3: 捕获人们还问
将 PAA 问题作为 H2 或 H3 副标题合并到您的 Surfer 内容中。
def get_paa(serp: dict) -> list:
paa = serp.get('people_also_ask', [])
questions = []
for item in paa:
if isinstance(item, dict):
questions.append(item.get('question', ''))
elif isinstance(item, str):
questions.append(item)
return questions
questions = get_paa(serp)
print('People Also Ask questions to address in your content:')
for q in questions:
print(f' - {q}')步骤 4: 提取特色片段格式
确定当前特色片段格式,以便您可以构建您的内容以进行竞争。
def analyze_snippet(serp: dict) -> dict:
snippet = serp.get('featured_snippet', serp.get('answer_box', {}))
if not snippet or not isinstance(snippet, dict):
return {'type': 'none', 'exists': False}
snippet_text = snippet.get('snippet', snippet.get('answer', ''))
has_list = '<li>' in str(snippet) or isinstance(snippet.get('list'), list)
has_table = '<table>' in str(snippet) or isinstance(snippet.get('table'), list)
return {
'exists': True,
'type': 'list' if has_list else 'table' if has_table else 'paragraph',
'text_length': len(str(snippet_text)),
'source': snippet.get('link', snippet.get('source', '')),
}
fs = analyze_snippet(serp)
print(f"Featured snippet: {fs['type']} ({fs.get('text_length', 0)} chars)")步骤 5: 生成内容简介
将 SERP 见解与 Surfer SEO 建议结合到一个内容简介中。
def generate_brief(keyword: str) -> dict:
serp = get_serp(keyword)
comps = analyze_competitors(serp)
paa = get_paa(serp)
snippet = analyze_snippet(serp)
titles_with_dates = sum(1 for c in comps if c['has_date'])
brief = {
'keyword': keyword,
'competitor_count': len(comps),
'titles_with_year': titles_with_dates,
'paa_questions': paa,
'featured_snippet': snippet,
'top_3_titles': [c['title'] for c in comps[:3]],
'recommendations': [],
}
if titles_with_dates > 3:
brief['recommendations'].append('Include 2026 in your title')
if snippet['exists']:
brief['recommendations'].append(f"Target a {snippet['type']} featured snippet")
if paa:
brief['recommendations'].append(f'Address {len(paa)} PAA questions as subheadings')
return brief
brief = generate_brief('best project management tools 2026')
for rec in brief['recommendations']:
print(f' > {rec}')Python 示例
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def serp_brief(keyword):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': keyword}).json()
titles = [r['title'] for r in data.get('organic_results', [])[:5]]
paa = [q.get('question', q) if isinstance(q, dict) else q for q in data.get('people_also_ask', [])]
return {'titles': titles, 'paa': paa}
print(serp_brief('best project management tools 2026'))JavaScript 示例
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function serpBrief(keyword) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({platform: 'google', query: keyword})
});
const data = await r.json();
return {
titles: (data.organic_results || []).slice(0, 5).map(r => r.title),
paa: (data.people_also_ask || []).map(q => q.question || q)
};
}
serpBrief('best project management tools 2026').then(console.log);预期输出
A content brief combining Surfer SEO recommendations with live SERP data including competitor titles, PAA questions, and featured snippet analysis for better content optimization.