LLM驱动的内容简报生成:从SERP分析到文章大纲只需要5分钟
·
写一篇高质量SEO文章,前期调研最耗时。我搭了一套自动化流程:用SerpBase采集SERP数据,丢给LLM分析竞争格局,自动生成内容简报(content brief)。原来2小时的调研现在5分钟搞定。
一、内容简报为什么重要
内容简报(Content Brief)是写作者的生产指南,通常包含:
- 目标关键词和搜索意图
- 文章应该覆盖哪些子话题
- 目标字数和结构建议
- 竞品内容分析
- 必须回答的问题(PAA)
- 建议的标题和H2/H3大纲
传统做法是人工做这些调研,一篇brief要1-2小时。问题是:调研质量取决于执行者的经验,容易遗漏关键信息。
二、自动化简报生成流程
输入关键词 → SerpBase采集SERP → 数据清洗 → LLM分析 → 生成Brief
2.1 SERP数据采集
import requests
from typing import Dict, List
API_KEY = "YOUR_KEY"
BASE_URL = "https://api.serpbase.dev/google/search"
def collect_serp_data(keyword: str) -> Dict:
"""采集关键词的完整SERP数据"""
headers = {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
}
body = {
"q": keyword,
"hl": "en",
"gl": "us",
"page": 1
}
r = requests.post(BASE_URL, headers=headers, json=body, timeout=30)
data = r.json()
return {
"keyword": keyword,
"organic": data.get("organic", []),
"people_also_ask": data.get("people_also_ask", []),
"related_searches": data.get("related_searches", []),
"knowledge_graph": data.get("knowledge_graph"),
"top_stories": data.get("top_stories", [])
}
2.2 数据清洗和特征提取
def extract_brief_features(serp_data: Dict) -> Dict:
"""从SERP数据中提取简报所需的特征"""
organic = serp_data["organic"]
paa = serp_data["people_also_ask"]
related = serp_data["related_searches"]
features = {
"keyword": serp_data["keyword"],
# 竞品内容特征
"top_results": [
{
"rank": item["rank"],
"title": item.get("title", ""),
"domain": item.get("display_link", ""),
"snippet": item.get("snippet", "")[:200]
}
for item in organic[:5]
],
# 内容类型分析
"content_types": analyze_content_types(organic[:5]),
# PAA问题
"questions": [item.get("question", "") for item in paa],
# 相关搜索(扩展话题)
"related_topics": related[:10],
# SERP特征
"has_featured_snippet": len(paa) > 0,
"has_knowledge_graph": serp_data.get("knowledge_graph") is not None,
"has_news": len(serp_data.get("top_stories", [])) > 0,
# 预估内容规格
"suggested_word_count": estimate_word_count(organic[:5]),
"avg_top_result_length": estimate_content_length(organic[:3])
}
return features
def analyze_content_types(organic: List[Dict]) -> Dict:
"""分析前5结果的内容类型"""
types = {"listicle": 0, "how_to": 0, "guide": 0, "review": 0, "comparison": 0}
for item in organic:
title = item.get("title", "").lower()
if any(w in title for w in ["best", "top", "vs"]):
types["listicle"] += 1
elif any(w in title for w in ["how to", "step", "guide"]):
types["how_to"] += 1
elif any(w in title for w in ["review", "reviews"]):
types["review"] += 1
elif any(w in title for w in ["comparison", "vs", "versus"]):
types["comparison"] += 1
else:
types["guide"] += 1
return types
def estimate_word_count(organic: List[Dict]) -> int:
"""根据竞品内容长度建议字数"""
# 简化估算:如果都是长文,建议2000+;如果都是短文,建议1000-1500
long_count = sum(1 for item in organic if len(item.get("snippet", "")) > 150)
if long_count >= 3:
return 2500
elif long_count >= 2:
return 1800
else:
return 1200
2.3 LLM Prompt设计
def build_brief_prompt(features: Dict) -> str:
"""构建生成Content Brief的LLM Prompt"""
top_results_text = "\n".join([
f"{i+1}. {r['title']} ({r['domain']})\n {r['snippet']}"
for i, r in enumerate(features["top_results"])
])
questions_text = "\n".join([f"- {q}" for q in features["questions"][:8]])
related_text = "\n".join([f"- {r}" for r in features["related_topics"][:8]])
prompt = f"""你是一个资深SEO内容策略师。请基于以下SERP分析数据,为关键词"{features['keyword']}"生成一份详细的内容简报(Content Brief)。
## SERP数据
### 前5名搜索结果
{top_results_text}
### People Also Ask 问题
{questions_text}
### Related Searches(相关搜索)
{related_text}
### SERP特征
- 有Featured Snippet/PAA: {'是' if features['has_featured_snippet'] else '否'}
- 有Knowledge Graph: {'是' if features['has_knowledge_graph'] else '否'}
- 有新闻结果: {'是' if features['has_news'] else '否'}
## 请输出以下内容:
### 1. 搜索意图分析
- 主要意图(Informational/Commercial/Transactional)
- 用户真正想解决的问题
### 2. 内容类型建议
- 推荐的文章类型
- 目标字数:{features['suggested_word_count']}字左右
### 3. 文章大纲(H2/H3结构)
请给出详细的标题大纲,至少包含5个H2,每个H2下建议2-3个H3。
### 4. 必须覆盖的子话题
基于PAA和Related Searches,列出文章必须回答的问题和覆盖的话题。
### 5. 差异化建议
分析前5名内容的不足,建议我们如何做出更好的内容。
### 6. 标题建议
给出3个标题选项,包含目标关键词,有吸引力。
### 7. CTA建议
文章结尾应该引导用户做什么。
请用中文输出。"""
return prompt
2.4 调用LLM生成简报
import openai
def generate_brief_with_llm(features: Dict, api_key: str) -> str:
"""用LLM生成内容简报"""
prompt = build_brief_prompt(features)
client = openai.OpenAI(api_key=api_key)
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个专业的SEO内容策略师,擅长分析搜索意图和规划内容结构。"},
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=2500
)
return response.choices[0].message.content
三、完整流水线
def auto_generate_content_brief(keyword: str, serp_key: str, llm_key: str) -> Dict:
"""一键生成内容简报"""
print(f"正在采集 '{keyword}' 的SERP数据...")
serp_data = collect_serp_data(keyword)
print("正在提取特征...")
features = extract_brief_features(serp_data)
print("正在生成简报...")
brief_text = generate_brief_with_llm(features, llm_key)
return {
"keyword": keyword,
"features": features,
"brief": brief_text,
"generated_at": datetime.now().isoformat()
}
# 使用
brief = auto_generate_content_brief("docker compose tutorial", "SERPBSE_KEY", "OPENAI_KEY")
print(brief["brief"])
四、简报质量验证
生成brief后,需要验证LLM的建议是否靠谱:
def validate_brief(brief: Dict, serp_key: str) -> Dict:
"""验证brief的质量"""
keyword = brief["keyword"]
# 1. 检查建议的子话题是否覆盖了PAA
headers = {
"X-API-Key": serp_key,
"Content-Type": "application/json"
}
body = {
"q": keyword,
"hl": "en",
"gl": "us",
"page": 1
}
r = requests.post("https://api.serpbase.dev/google/search", headers=headers, json=body, timeout=30)
data = r.json()
paa_questions = [item.get("question", "").lower() for item in data.get("people_also_ask", [])]
brief_text = brief["brief"].lower()
covered = sum(1 for q in paa_questions if any(word in brief_text for word in q.split()[:3]))
coverage = covered / len(paa_questions) if paa_questions else 0
return {
"paa_coverage": f"{coverage:.0%}",
"total_paa": len(paa_questions),
"covered_paa": covered,
"quality_score": "good" if coverage >= 0.7 else "needs_improvement"
}
五、实战效果
我们团队用这个流程后的变化:
Before:
- 调研时间:1.5-2小时/篇
- Brief质量:取决于写作者经验,参差不齐
- 遗漏PAA问题:约30%的brief漏了关键问题
After:
- 调研时间:5-8分钟/篇
- Brief质量:稳定,覆盖全面
- PAA覆盖率:92%
- 写作者满意度:4.5/5(“知道该写什么了”)
六、进阶:批量生成
def batch_generate_briefs(keywords: List[str], serp_key: str, llm_key: str) -> List[Dict]:
"""批量生成简报"""
briefs = []
for keyword in keywords:
try:
brief = auto_generate_content_brief(keyword, serp_key, llm_key)
briefs.append(brief)
print(f"✓ {keyword}")
time.sleep(2) # 避免LLM限流
except Exception as e:
print(f"✗ {keyword}: {e}")
return briefs
# 生成10篇内容的brief
keywords = ["docker tutorial", "kubernetes basics", "ci/cd pipeline", "devops tools"]
briefs = batch_generate_briefs(keywords, SERP_KEY, LLM_KEY)
七、总结
LLM + SERP数据的组合,让内容调研从"体力活"变成了"自动化流水线"。
核心价值:
- 速度:2小时 → 5分钟
- 一致性:不再依赖个人经验
- 全面性:PAA、Related Searches自动覆盖
- 可扩展:批量生成,一次搞定一周的内容排期
成本:
- SerpBase:$0.30/千次
- LLM API:GPT-4大概$0.03/次
- 一篇brief成本约$0.05
LLM生成的brief需要人工review。特别是差异化建议部分,LLM有时候会提一些不切实际的建议(比如"做一个交互式工具")。建议把brief当作"初稿",人类编辑做最终把关。
更多推荐

所有评论(0)