我用 n8n + SerpBase 搭了一套自动 SEO 监控系统,每月成本不到 40 块
之前我每个月花 800 多块订阅一个 SEO 排名监控工具。功能确实全每天早上发邮件告诉我 30 个关键词排第几。但说实话我根本用不了那么多功能——我要的其实就是一个定时任务 一个数据库 一个告警结果被包装成了 SaaS 按月收我钱。上个月我把这套东西拆了自己用 n8n SerpBase 重搭了一套。现在监控 150 个关键词每天自动跑数据存在我自己的 Postgres 里成本从 800 块降到 40 块不到。这篇帖子把完整方案放出来给想省钱的独立开发者参考。先说说之前为什么觉得亏Ahrefs、SEMrush 这些工具对 agency 来说确实值那个价。但独立开发者或者小 SaaS 创始人很多时候是在为 90% 用不到的功能买单。我的需求其实很简单每天查 150 个关键词在 3 个国家的排名排名掉 3 位以上或者竞品冲进前十通知我数据能存下来方便我查历史就这三点。之前那个工具月费 119 美金折合人民币 850套餐是 500 个关键词起步。我只用了 150 个剩下的额度纯浪费。新架构n8n SerpBase Postgresn8n跑在一台 Hetzner VPS 上1核 2G月付 5.35 美金约 38 块人民币负责定时触发、逻辑判断、发通知。SerpBase提供 Google 搜索结果。我用的是 Starter Boost3 美金买 1 万次搜索另外充了 10 美金的 Starter Pack2 万次永不过期。Postgres存关键词配置和每天的排名快照和 n8n 跑在同一台机器的 Docker 里。每月固定成本就是 38 块的服务器费。搜索是按量消耗的150 个词 × 30 天 4500 次查询。3 美金的 Starter Boost 够跑两个月常规价 $0.50/千次的话也就 15 块一个月。工作流怎么搭的可直接抄第一步关键词库建了一张简单表CREATETABLEkeywords(idSERIALPRIMARYKEY,keywordTEXTNOTNULL,countryTEXTDEFAULTus,languageTEXTDEFAULTen,target_urlTEXT,alert_thresholdINTDEFAULT3);塞了 150 个词。target_url是我要追踪的页面比如定价页alert_threshold是排名下降多少位才告警。第二步n8n 工作流每天早 6 点UTC触发节点链如下1. Schedule TriggerCron 表达式0 6 * * *2. Postgres 节点查所有关键词SELECT * FROM keywords3. Split In Batches每批处理 10 个词。别问我怎么知道的——我第一次直接并发 150 个 HTTP 请求SerpBase 返回 1029rate limit直接限流了。分批是必须的。4. HTTP Request 节点调 SerpBase注意SerpBase 的搜索接口是POST不是 GET。配置如下Method: POSTURL:https://api.serpbase.dev/google/searchHeaders:Content-Type:application/jsonX-API-Key:{{ $env.SERPBASE_API_KEY }}Body(JSON):{q:{{ $json.keyword }},gl:{{ $json.country }},hl:{{ $json.language }},page:1}平均延迟 1.4 秒。我设了 10 秒超时失败自动重试 2 次。重要SerpBase 即使出错也可能返回 HTTP 200必须在 JSON 里检查status字段。0是成功1020是余额不足1029是触发限流1504是上游超时。5. IF 节点校验响应判断{{ $json.status }} 0不是就记录错误跳过。我早期有个 bug请求体写错了但 HTTP 状态是 200我没检查status结果白白烧了好几块钱额度才发现。6. Code 节点提取排名constorganic$input.first().json.organic||[];consttarget$input.first().json.target_url;constmatchorganic.find(rr.linkr.link.includes(target));constpositionmatch?match.rank:0;constpageTitleorganic[0]?.title||无结果;return[{json:{position,page_title:pageTitle}}];注意 SerpBase 返回的字段名rank不是positionlink不是url。我第一次搭的时候写错了字段名所有排名都返回 0排查了半天。如果前 100 条里没有我的页面position 记为 0。7. Postgres 节点存快照INSERTINTOrankings(keyword_id,position,checked_at)VALUES({{ $json.id }},{{ $json.position }},NOW());8. Postgres 节点对比昨天SELECTpositionFROMrankingsWHEREkeyword_id{{ $json.id }}ORDERBYchecked_atDESCLIMIT1OFFSET1;9. IF 节点判断要不要告警排名跌幅 threshold或者竞品 URL单独一张表维护冲进前十就走告警分支。10. Telegram 节点给我发消息“ALERT‘affordable serp api’ 在美国从第 4 掉到第 8竞品 serpapi.com 现在排第 3。”11. Merge批次合并流程结束。没异常就静默执行我不会被打扰。第三步看数据我没搭可视化面板。直接用 psql 查或者丢进 Metabase本来就在跑。比如查最近 7 天趋势SELECTkeyword,position,checked_atFROMrankings rJOINkeywords kONr.keyword_idk.idWHEREchecked_atNOW()-INTERVAL7 daysORDERBYkeyword,checked_at;需要图表就导出 CSV 贴 Google Sheets30 秒搞定零成本。实际花了我多少钱第一个月搭环境 大量测试VPS38 块SerpBase Starter Boost22 块3 美金SerpBase Starter Pack73 块10 美金永不过期合计133 块第二个月稳定期4500 次查询VPS38 块SerpBase0用上月余额合计38 块第三个月新上了落地页扩到 220 个词VPS38 块SerpBase22 块又买了 Starter Boost合计60 块三个月平均每月 77 块。之前的工具一个月 850。一年下来差将近一万块。对 Bootstrap 的独立开发者来说这是一笔不小的现金流。为什么 SerpBase 适合搭这种系统我试了三个 SERP API最后锁死 SerpBase几个原因价格没有套路。有些 API 表面单价低实则最低充值 50 美金或者强制月付。SerpBase 3 美金就能买额度而且常规 Pack 永不过期不用怕月底清零。地理定位准。我追踪美、英、澳三个市场。POST body 里设glus或glgb返回的结果很稳定不会串区。之前用另一家英国结果时不时混入美国条目数据直接废掉。JSON 结构干净。organic数组里每条结果都有rank、title、link、display_link、snippet不用写正则扒 HTML也不用维护 headless browser。n8n 里四行 JS 就能定位到我的页面排第几。抗封能力强。四个月来没有一次因为 CAPTCHA 或反爬导致请求失败。SerpBase 自己管会话轮换。我以前自己搭代理池抓 Google一个月代理费 300 块还要天天修。砍掉这部分比取消 rank tracker 还爽。状态码清晰。返回 JSON 里的status字段告诉你具体发生了什么0成功1020余额不足1029限流1502上游解析出错1504上游超时。这比只看 HTTP 状态码有用多了。这套方案的缺点必须诚实说自己搭的自己修。某天早上某个词返回 position 0我得自己排查。通常是 SerpBase 超时status 1504或者我 target_url 填错了。没有工单系统可以提只能看 n8n 执行日志、检查 JSON、改数据、重跑节点。功能不如企业工具全。Featured snippet 监控、本地搜索结果、图片轮播这些除非我自己写解析逻辑否则拿不到。也没有竞品流量预估、关键词难度这些衍生指标。你需要这些就买 Ahrefs这套方案只解决我的词排第几这个问题。n8n 有学习成本。我第一版没做分批150 个并发请求出去直接被限流1029。改成分批要搞懂 Split In Batches 节点折腾了 40 分钟。Zapier 会自动处理限流和重试自托管就得自己解决。Starter Boost 月底过期。3 美金/1 万次的特价包当月有效忘了用就没了。我设了日历提醒。常规额度永不过期我会保持 10 美金左右的余额确定要用得多的时候再买 Boost。什么人适合搞这套如果你是 agency管着 50 个客户站去买专业工具。报表功能和白标面板值那个钱。如果你是独立开发者、技术创始人或者开发者出身的人想监控 50500 个词又不想被月费绑架这套方案非常合适。每月不到 40 块固定成本数据存在自己手里扩容只需要买预付额度不用升套餐。真正的价值不只是省钱。因为 SerpBase 返回的是干净 JSONn8n 又能把数据路由到任何地方我现在用同一套搜索数据源搭了三个新工作流自动生成内容简报、监控竞品页面变动、每周检查我的页面有没有抢到 featured snippet。一个 API一个工作流引擎组合出无数用法。这才是我想要的灵活性。30 分钟最小试错方案不确定要不要投入按这个来去 SerpBase 注册领 100 次免费搜索不用绑卡。本地跑 n8ndocker run -it --rm --name n8n -p 5678:5678 n8nio/n8n搭一个最小工作流定时触发 → HTTP RequestPOST 到https://api.serpbase.dev/google/searchHeader 带X-API-Key→ Telegram把第一条结果的 title 发给自己。跑一遍检查返回 JSON 的status是否为0看看organic[0].title长什么样。顺手就继续不顺手也就亏了一晚上。我当初就是这么开始的。一个词一条通知一个周末。现在 150 个词每天早上静默跑完我喝咖啡的时候扫一眼 Telegram就知道昨天排名有没有异动。有用 n8n 或者 SerpBase 的同学吗你们搭了什么好玩的工作流欢迎交流。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2589397.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!