通过 HTTP 模块连接 Scavio 搜索 API、安排每日 SERP 检查、提取排名数据以及根据位置变化发送警报,在 Make.com 中构建 SEO 监控管道。 Make.com 提供可视化工作流程自动化,非开发人员可以使用它来构建无需代码的 SEO 监控。通过将搜索 API 连接为 HTTP 数据源,您可以获得在自动驾驶仪上运行的每日排名快照、竞争对手跟踪和 SERP 功能检测,而无需管理脚本或 cron 作业。
前置条件
- Make.com 帐户(免费 1K 积分或核心 9 美元/月)
- 来自 scavio.dev 的 Scavio API 密钥
- 监控目标关键词
- Make.com基础场景知识
操作指南
步骤 1: 配置HTTP模块
设置 Make.com HTTP 模块以调用 Scavio API。
import os, requests, json
API_KEY = os.environ['SCAVIO_API_KEY']
# Make.com HTTP Module Configuration:
# Module: HTTP > Make a request
# URL: https://api.scavio.dev/api/v1/search
# Method: POST
# Headers:
# x-api-key: (your Scavio API key, stored in Make.com connection)
# Content-Type: application/json
# Body type: Raw
# Content type: JSON
# Request content: {"platform": "google", "query": "{{1.keyword}}"}
# Python equivalent:
def make_search(keyword: str) -> dict:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
json={'platform': 'google', 'query': keyword}, timeout=15)
return resp.json()
data = make_search('best CRM 2026')
print(f"Results: {len(data.get('organic_results', []))}")步骤 2: 提取排名位置
解析 API 响应以查找您的域在结果中的位置。
def find_my_position(data: dict, my_domain: str) -> dict:
results = data.get('organic_results', [])
for i, r in enumerate(results):
link = r.get('link', '')
if my_domain in link:
return {
'found': True,
'position': i + 1,
'title': r.get('title', ''),
'url': link,
}
return {'found': False, 'position': 0, 'title': '', 'url': ''}
# In Make.com, use a Router module to check:
# Condition: {{2.body.organic_results}} contains your domain
my_domain = 'scavio.dev'
keywords = ['search api', 'serp api alternative', 'google search api']
for kw in keywords:
data = make_search(kw)
pos = find_my_position(data, my_domain)
status = f'#{pos["position"]}' if pos['found'] else 'not found'
print(f' {kw}: {status}')步骤 3: 监控 SERP 功能
跟踪哪些 SERP 功能针对您的目标关键字出现。
def check_serp_features(data: dict) -> dict:
features = {
'featured_snippet': 'featured_snippet' in data or 'answer_box' in data,
'people_also_ask': len(data.get('people_also_ask', [])) > 0,
'knowledge_panel': 'knowledge_graph' in data,
'ai_overview': 'ai_overview' in data,
}
active = [k for k, v in features.items() if v]
return {'features': features, 'active': active, 'count': len(active)}
for kw in keywords:
data = make_search(kw)
features = check_serp_features(data)
print(f' {kw}: {features["count"]} features ({', '.join(features["active"])})')步骤 4: 追踪竞争对手
监控哪些竞争对手出现在您的目标关键字及其位置上。
def track_competitors(data: dict, competitor_domains: list) -> list:
found = []
results = data.get('organic_results', [])
for i, r in enumerate(results):
link = r.get('link', '')
for domain in competitor_domains:
if domain in link:
found.append({
'competitor': domain,
'position': i + 1,
'title': r.get('title', ''),
})
return found
competitors = ['serpapi.com', 'scrapingbee.com', 'brightdata.com']
for kw in keywords:
data = make_search(kw)
comps = track_competitors(data, competitors)
print(f' {kw}:')
for c in comps:
print(f' #{c["position"]}: {c["competitor"]}')步骤 5: 构建完整的管道
将所有检查合并到一个每天运行并存储结果的管道中。
import datetime
def seo_pipeline(keywords: list, my_domain: str, competitors: list) -> dict:
report = {
'date': datetime.date.today().isoformat(),
'keywords': [],
}
for kw in keywords:
data = make_search(kw)
position = find_my_position(data, my_domain)
features = check_serp_features(data)
comp_positions = track_competitors(data, competitors)
report['keywords'].append({
'keyword': kw,
'my_position': position['position'] if position['found'] else None,
'serp_features': features['active'],
'competitors': comp_positions,
})
# Save report
with open(f'seo_report_{report["date"]}.json', 'w') as f:
json.dump(report, f, indent=2)
# Summary
ranked = sum(1 for k in report['keywords'] if k['my_position'])
print(f'Pipeline complete: {ranked}/{len(keywords)} keywords ranked')
return report
seo_pipeline(keywords, 'scavio.dev', competitors)Python 示例
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def seo_check(keyword, my_domain):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': keyword}).json()
for i, r in enumerate(data.get('organic_results', [])):
if my_domain in r.get('link', ''):
return {'keyword': keyword, 'position': i+1}
return {'keyword': keyword, 'position': None}
print(seo_check('search api', 'scavio.dev'))JavaScript 示例
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function seoCheck(keyword, myDomain) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({platform: 'google', query: keyword})
});
const results = (await r.json()).organic_results || [];
const idx = results.findIndex(r => (r.link || '').includes(myDomain));
return {keyword, position: idx >= 0 ? idx + 1 : null};
}
seoCheck('search api', 'scavio.dev').then(console.log);预期输出
A Make.com-ready SEO pipeline that tracks keyword rankings, monitors SERP features, and detects competitor position changes on a daily automated schedule.