关键词研究工作流
从竞品词库挖掘 → 搜索量过滤 → 长尾扩词,三步构建可执行的内容关键词清单。
涉及 API
| 步骤 | API | 端点 |
|---|---|---|
| Step 1 竞品词库 | 域名关键词挖掘 | /v3/keywords_data/google_ads/keywords_for_site/live |
| Step 2 搜索量过滤 | 搜索量查询 | /v3/keywords_data/google_ads/search_volume/live |
| Step 3 长尾扩词 | 关键词联想 | /v3/keywords_data/google_ads/suggestions/live |
工作流
竞品域名列表
↓ keywords_for_site(每个域名)
合并词库 + 去重
↓ search_volume(批量 1000 词/次)
过滤:搜索量 ≥ 100,竞争度 ≤ MEDIUM
↓ suggestions(高价值种子词)
扩长尾 + 再次 search_volume 验证
↓
输出:内容计划 CSVStep 1:竞品词库挖掘
import requests
API_KEY = "smt_live_YOUR_KEY"
BASE = "https://api.seermartech.cn/v3"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
COMPETITORS = ["competitor-a.com", "competitor-b.com", "competitor-c.com"]
def keywords_for_site(domain: str) -> list[str]:
resp = requests.post(
f"{BASE}/keywords_data/google_ads/keywords_for_site/live",
headers={**HEADERS, "Content-Type": "application/json"},
json=[{"target": domain, "location_code": 2156, "language_code": "zh", "limit": 200}],
timeout=120,
)
resp.raise_for_status()
return [r["keyword"] for r in resp.json()["tasks"][0]["result"]]
all_keywords = set()
for domain in COMPETITORS:
all_keywords.update(keywords_for_site(domain))
print(f"collected {len(all_keywords)} unique keywords")Step 2:搜索量过滤
def search_volume(keywords: list[str]) -> list[dict]:
# 每批最多 1000 词
results = []
for i in range(0, len(keywords), 1000):
batch = keywords[i:i + 1000]
resp = requests.post(
f"{BASE}/keywords_data/google_ads/search_volume/live",
headers={**HEADERS, "Content-Type": "application/json"},
json=[{"keywords": batch, "location_code": 2156, "language_code": "zh"}],
timeout=120,
)
resp.raise_for_status()
results.extend(resp.json()["tasks"][0]["result"])
return results
volumes = search_volume(list(all_keywords))
qualified = [
v for v in volumes
if (v.get("search_volume") or 0) >= 100
and v.get("competition") in ("LOW", "MEDIUM", None)
]
print(f"qualified: {len(qualified)} / {len(volumes)}")Step 3:长尾扩词
def expand_keyword(seed: str, limit: int = 30) -> list[str]:
resp = requests.post(
f"{BASE}/keywords_data/google_ads/suggestions/live",
headers={**HEADERS, "Content-Type": "application/json"},
json=[{"keyword": seed, "location_code": 2156, "language_code": "zh", "limit": limit}],
timeout=120,
)
resp.raise_for_status()
return [r["keyword"] for r in resp.json()["tasks"][0]["result"]]
# 取搜索量最高的 10 个种子词扩词
seeds = sorted(qualified, key=lambda x: x.get("search_volume", 0), reverse=True)[:10]
long_tail = set()
for seed in seeds:
long_tail.update(expand_keyword(seed["keyword"]))
final_list = search_volume(list(long_tail))TypeScript 串联示例
const API_KEY = "smt_live_YOUR_KEY";
const BASE = "https://api.seermartech.cn/v3";
async function apiPost<T>(path: string, body: unknown): Promise<T> {
const resp = await fetch(`${BASE}${path}`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify([body]),
});
return resp.json();
}
// Step 1 → 2 → 3 可封装为 pipeline 函数
async function researchPipeline(competitors: string[]) {
const keywords = new Set<string>();
for (const domain of competitors) {
const data = await apiPost<{ tasks: [{ result: { keyword: string }[] }] }>(
"/keywords_data/google_ads/keywords_for_site/live",
{ target: domain, location_code: 2156, language_code: "zh", limit: 200 }
);
data.tasks[0].result.forEach((r) => keywords.add(r.keyword));
}
return [...keywords];
}成本估算
| 步骤 | 调用次数(示例) | 参考费用 |
|---|---|---|
| 3 竞品 × keywords_for_site | 3 次 | ≈ ¥2.40 |
| 500 词 search_volume | 1 次 | ≈ ¥1.20 |
| 10 种子 × suggestions | 10 次 | ≈ ¥8.00 |
| 300 长尾 search_volume | 1 次 | ≈ ¥1.20 |
| 合计 | — | ≈ ¥12.8 |
一次完整研究流程通常在 ¥10–20 以内,远低于人工调研时间成本。
最佳实践
- 去重优先:多竞品词库合并后用
set去重,减少 search_volume 调用次数 - 批量提交:search_volume 单次最多 1000 词,尽量凑满批次
- 搜索量阈值:B2B 站点可降至 ≥ 50;B2C 内容站建议 ≥ 200
- 验证排名难度:高搜索量词还需用 SERP API 看 Top 10 竞争强度
- 输出格式:建议导出 CSV 字段
keyword, search_volume, cpc, competition, priority