ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Workflows
  3. n8n SEO Content Pipeline With a Search API
Workflow

n8n SEO Content Pipeline With a Search API

Build a daily n8n workflow that pulls live SERP data via Scavio, maps content gaps from People Also Ask, and drafts a brief per keyword.

Start FreeAPI Docs

Overview

This n8n workflow runs on a daily cron, pulls live SERP data for a list of target keywords through Scavio, and turns each result into a content brief without any manual handoff. The core node is a single HTTP Request calling POST /api/v1/google with light_request=false, which costs 2 credits ($0.01 per keyword) and returns organic_results, people_also_ask, knowledge_graph, and related_searches in one response. From there you extract the People Also Ask questions, the related searches, and the top organic titles, then feed that map of demand into an LLM node that drafts a brief: target keyword, intent, questions to answer, competing titles, and suggested H2s. Optionally a second branch hits POST /api/v1/reddit/search to check whether real people are asking about the topic on Reddit, so you don't write briefs for keywords nobody discusses. The honest tradeoff: Scavio gives you live SERP features and Reddit demand under one key, but it does not return historical search-volume numbers. If you need volume, pair this pipeline with DataForSEO (after its $50 minimum deposit) or another volume source. Scavio's edge here is one HTTP node, live SERP features, and multi-platform data under a single credit pool. n8n's Starter plan is EUR 20/mo for 2,500 executions, or you can self-host the Community Edition for free.

Trigger

Daily cron / schedule trigger in n8n

Schedule

Daily

Workflow Steps

1

Schedule trigger fires once a day

Add a Schedule Trigger node set to a daily cron (for example 06:00). This is the only thing that starts the run, so there's no manual handoff. Keep the list of target keywords in a Set node or a Google Sheet the workflow reads at the top.

2

Loop over your target keywords

Use a Split In Batches (Loop Over Items) node over your keyword list so each keyword flows through the rest of the pipeline one at a time. This keeps you under the rate limit (1 req/sec on free/PAYG, 2 req/sec on Project) and makes errors per-keyword instead of all-or-nothing.

3

HTTP Request to Scavio Google SERP

Add an HTTP Request node: POST https://api.scavio.dev/api/v1/google, header Authorization: Bearer {{ $env.SCAVIO_API_KEY }}, JSON body {"query": "{{ $json.keyword }}", "light_request": false}. With light_request=false (2 credits) the response includes people_also_ask, knowledge_graph, and related_searches alongside organic_results in one call.

4

Map the content gap with a Function node

A Function (Code) node pulls people_also_ask questions, related_searches terms, and the top 10 organic titles out of the response and shapes them into a compact JSON gap map. This is the structured input the LLM will turn into a brief, so you're not asking the model to guess what's ranking.

5

Optional: cross-check Reddit demand

Add a second HTTP Request node calling POST https://api.scavio.dev/api/v1/reddit/search with body {"query": "{{ $json.keyword }}"} (1 credit). If real threads come back, people actually discuss the topic. Merge those thread titles into the gap map so the brief reflects real questions, not just what Google surfaces.

6

LLM node drafts the brief

Feed the gap map into an LLM node (OpenAI, Anthropic, or any model node) with a prompt that returns a structured brief: target keyword, search intent, the PAA questions to answer, competing titles, and suggested H2s. Write the result to a Google Doc, Notion, or a database node, and the run finishes with no human in the loop.

Python Implementation

Python
import os, requests

H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}

def build_brief(keyword: str) -> dict:
    # Live SERP with full features: 2 credits ($0.01)
    serp = requests.post("https://api.scavio.dev/api/v1/google", headers=H,
        json={"query": keyword, "light_request": False}).json()

    paa = [q.get("question") for q in serp.get("people_also_ask", [])]
    related = [r.get("query") for r in serp.get("related_searches", [])]
    titles = [row["title"] for row in serp.get("organic_results", [])[:10]]

    # Optional: cross-check real demand on Reddit (1 credit)
    reddit = requests.post("https://api.scavio.dev/api/v1/reddit/search", headers=H,
        json={"query": keyword}).json()
    threads = [t.get("title") for t in reddit.get("results", [])][:5]

    return {
        "keyword": keyword,
        "people_also_ask": paa,
        "related_searches": related,
        "competing_titles": titles,
        "reddit_threads": threads,
    }

if __name__ == "__main__":
    keywords = ["best serp api", "reddit api for sentiment", "google paa scraper"]
    for kw in keywords:
        gap_map = build_brief(kw)
        # hand gap_map to your LLM call to draft the brief
        print(gap_map["keyword"], len(gap_map["people_also_ask"]), "PAA questions")

JavaScript Implementation

JavaScript
// n8n Function-node style fetch
const H = {
  Authorization: `Bearer ${process.env.SCAVIO_API_KEY}`,
  "Content-Type": "application/json",
};

async function buildBrief(keyword) {
  // Live SERP with full features: 2 credits ($0.01)
  const serpRes = await fetch("https://api.scavio.dev/api/v1/google", {
    method: "POST",
    headers: H,
    body: JSON.stringify({ query: keyword, light_request: false }),
  });
  const serp = await serpRes.json();

  const paa = (serp.people_also_ask || []).map((q) => q.question);
  const related = (serp.related_searches || []).map((r) => r.query);
  const titles = (serp.organic_results || []).slice(0, 10).map((row) => row.title);

  // Optional: cross-check real demand on Reddit (1 credit)
  const redditRes = await fetch("https://api.scavio.dev/api/v1/reddit/search", {
    method: "POST",
    headers: H,
    body: JSON.stringify({ query: keyword }),
  });
  const reddit = await redditRes.json();
  const threads = (reddit.results || []).slice(0, 5).map((t) => t.title);

  return { keyword, people_also_ask: paa, related_searches: related, competing_titles: titles, reddit_threads: threads };
}

const keyword = $json.keyword;
return [{ json: await buildBrief(keyword) }];

Platforms Used

Google

Web search with knowledge graph, PAA, and AI overviews

Reddit

Community, posts & threaded comments from any subreddit

Frequently Asked Questions

This n8n workflow runs on a daily cron, pulls live SERP data for a list of target keywords through Scavio, and turns each result into a content brief without any manual handoff. The core node is a single HTTP Request calling POST /api/v1/google with light_request=false, which costs 2 credits ($0.01 per keyword) and returns organic_results, people_also_ask, knowledge_graph, and related_searches in one response. From there you extract the People Also Ask questions, the related searches, and the top organic titles, then feed that map of demand into an LLM node that drafts a brief: target keyword, intent, questions to answer, competing titles, and suggested H2s. Optionally a second branch hits POST /api/v1/reddit/search to check whether real people are asking about the topic on Reddit, so you don't write briefs for keywords nobody discusses. The honest tradeoff: Scavio gives you live SERP features and Reddit demand under one key, but it does not return historical search-volume numbers. If you need volume, pair this pipeline with DataForSEO (after its $50 minimum deposit) or another volume source. Scavio's edge here is one HTTP node, live SERP features, and multi-platform data under a single credit pool. n8n's Starter plan is EUR 20/mo for 2,500 executions, or you can self-host the Community Edition for free.

This workflow uses a daily cron / schedule trigger in n8n. Daily.

This workflow uses the following Scavio platforms: google, reddit. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 50 credits on signup with no credit card required. That is enough to test and validate this workflow before scaling it.

n8n SEO Content Pipeline With a Search API

Build a daily n8n workflow that pulls live SERP data via Scavio, maps content gaps from People Also Ask, and drafts a brief per keyword.

Get Your API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy