Skip to content

关键词研究工作流

从竞品词库挖掘 → 搜索量过滤 → 长尾扩词,三步构建可执行的内容关键词清单。

涉及 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 长尾扩词Labs 关键词建议/v3/dataforseo_labs/google/keyword_suggestions/live

工作流

竞品域名列表
 ↓ keywords_for_site(每个域名)
合并词库 + 去重
 ↓ search_volume(批量 1000 词/次)
过滤:搜索量 ≥ 100,竞争度 ≤ MEDIUM
 ↓ keyword_suggestions(高价值种子词)
扩长尾 + 再次 search_volume 验证

输出:内容计划 CSV

Step 1:竞品词库挖掘

python
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:搜索量过滤

python
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:长尾扩词

python
def expand_keyword(seed: str, limit: int = 30) -> list[str]:
 resp = requests.post(
 f"{BASE}/dataforseo_labs/google/keyword_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 串联示例

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_site3 次≈ ¥2.40
500 词 search_volume1 次≈ ¥1.20
10 种子 × keyword_suggestions10 次≈ ¥3.20
300 长尾 search_volume1 次≈ ¥1.20
合计≈ ¥12.8

一次完整研究流程通常在 ¥10–20 以内,远低于人工调研时间成本。

最佳实践

  1. 去重优先:多竞品词库合并后用 set 去重,减少 search_volume 调用次数
  2. 批量提交:search_volume 单次最多 1000 词,尽量凑满批次
  3. 搜索量阈值:B2B 站点可降至 ≥ 50;B2C 内容站建议 ≥ 200
  4. 验证排名难度:高搜索量词还需用 SERP API 看 Top 10 竞争强度
  5. 输出格式:建议导出 CSV 字段 keyword, search_volume, cpc, competition, priority

相关文档

统一入口:官网 · LLM API · 控制台