Weekly SEO Opportunities and AI Visibility with n8n and Zabio
Set up an n8n workflow that finds pages close to the top results, writes new titles and answer-first copy, and checks every week what AI models say about you and your competitors.
Updated November 2026
Every Monday this template reads 28 days of Search Console data for each of your sites and finds four kinds of opportunity:
- pages just below the top results;
- titles getting fewer clicks than their position should bring;
- searches where no page of yours ranks well;
- pages competing with each other for the same search.
Zabio reads the pages involved and writes the fixes: a new title and description, an opening paragraph that answers the main search directly, the questions the page doesn’t answer yet, FAQ entries and internal links.
The same run asks models from five AI vendors the questions your customers ask, and records whether they name you, in what position, and which competitors they name instead. Every job runs at Zabio’s batch prices, and the report arrives by email once all the answers are back.
How it works
| Part | What it does |
|---|---|
| Pages close to the top | Queries at positions 4 to 15 with at least 50 impressions in 28 days, grouped by page. Up to 5 pages per site. |
| Low click-through | Pages in the top 10 with at least 200 impressions and less than half the clicks usually seen at that position. |
| Content gaps | Searches with at least 30 impressions where your best page ranks below 20. Zabio groups them into briefs for new pages. |
| Cannibalization | Searches where two or more of your pages each get at least 20% of the impressions. |
| AI visibility | Each question in ai_prompts, asked to every model in visibility_models. Mentions of brand_names and competitors are counted in code. |
| AI assistant visits | 8 weeks of GA4 sessions from ChatGPT, Perplexity, Gemini, Copilot, Claude and others, if the site has GA4. |
The workflow has two triggers. On Monday it collects the data and sends every job to Zabio as a background request with a 24-hour deadline. Every 2 hours it checks the jobs, and sends the report when all of them are done, or after 30 hours with what is ready.
Before you start
This template uses the seo_sites table and the Google credential from the daily SEO watch. Set that one up first, or follow its Step 2 and Step 3.
Step 1: Import the template
Download the workflow file from the template page. In n8n, open Workflows, choose Import from File and select it.
Step 2: Create two more data tables
seo_weekly: site_id, week, status, jobs, facts, created_at, sent_at (all String).
seo_ai_visibility: site_id, week, model, prompt, competitors, snippet (String), mentioned (Boolean) and position (Number).
Step 3: Describe each site’s market
Fill in three columns of seo_sites for every site:
| Column | Example | What it does |
|---|---|---|
brand_names | Acme Plumbing, acmeplumbing.com | Comma-separated names that count as a mention of you. |
competitors | ["Bayside Plumbing", "QuickFlow Plumbing"] | A JSON list of competitors to count. |
ai_prompts | ["Who is the best emergency plumber in Miami?", "How much does a water heater replacement cost in Miami?"] | A JSON list of questions your customers ask an AI assistant. |
Write the questions the way a customer would ask them, without your brand in them. Four to eight questions give a useful picture; each one is asked to every model.
Step 4: Credentials and settings
Select the Google credential in Call Google APIs, the Zabio credential (Header Auth: Name Authorization, Value Bearer YOUR_ZABIO_KEY) in Submit Jobs and Check Jobs, and the SMTP credential in Email Weekly Report.
Then open Weekly Settings:
| Field | Default | What it does |
|---|---|---|
email_from | The sender of the report. | |
review_model | auto/best | The model that writes the fixes. |
deadline | 24h | Sends every job to Zabio’s batch queue. 30m gets results sooner at flex or standard prices. |
visibility_models | Five models | A JSON list of the Zabio model IDs to ask. See Choosing the models. |
striking_min_position, striking_max_position | 4, 15 | The range of positions that count as close to the top. |
min_impressions | 50 | Minimum impressions in 28 days for a query to count. |
max_pages | 5 | Pages per site that get a full set of fixes. |
Step 5: Activate
Activate the workflow. The Monday run sends the jobs; the report usually arrives the same day and always within about a day. To try it straight away, open the Every Monday trigger and click Execute step, then run the Every 2 Hours trigger a few hours later.
Choosing the models
The default list asks one model from each of five vendors: gpt-5-mini, claude-haiku-5-5, gemini-3.5-flash-lite, deepseek-v4-flash@deepinfra and mistral-small-2603. You can put any chat model Zabio serves in the list; Zabio’s models page has the IDs. Larger models know more about smaller businesses and cost more per question.
Note: The models answer from what they learned in training, without searching the web. The scorecard shows what they know about you, not what ChatGPT or Perplexity show when they search live. GA4’s visits from AI assistants are the real-world number, and the report shows both.
Reading the report
- The headline names the single most valuable change this week.
- AI visibility: for each model, how many questions mention you this week and last week, and your average position when it does. A table shows every question against every model, followed by the competitors named instead and the sentences that describe you.
- Visits from AI assistants: 8 weeks of GA4 sessions by week, and the top sources.
- Pages to improve: for each page, why it was picked, its main searches, the current and suggested title and description, the opening paragraph to add, missing questions, FAQ, schema and internal links.
- New pages worth writing and pages competing for the same search, when there are any.
Anything Zabio couldn’t know, such as a price or a delivery time, comes back as a placeholder in [brackets] for you to fill in. Read the suggestions before you publish them.
What it costs
Every job is a Zabio background request with a 24-hour deadline, which goes to the batch queue at about half the list price. A site with 6 questions for 5 models runs 31 jobs a week: one review and 30 answers. Each report shows its own AI cost at the bottom.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| No report on Monday | The jobs are still in the batch queue | Wait for the next 2-hour check. Reports go out within about 30 hours at the latest. |
A row in seo_weekly stays pending | The site has no report_email | Add the email; the next check sends it. |
| “No AI prompts set for this site” | ai_prompts is empty or not valid JSON | Use a JSON list with double quotes. |
| A model never answers | The model ID is wrong or retired | Check the ID on Zabio’s models page and update visibility_models. |
| No pages to improve | Few impressions on the site | Lower min_impressions in Weekly Settings. |
Still stuck? Open a ticket. If your n8n runs on a RemarkableCloud server, an engineer can look at the workflow with you.