RemarkableCloud

Watch SEO and AI Search Every Day with n8n and Zabio

Set up an n8n workflow that checks Search Console, GA4, your top pages and robots.txt every morning, keeps a history of issues and emails what changed, the likely cause and what to do.

Updated November 2026

This template checks your sites every morning. It reads Search Console and Google Analytics 4, loads your home page, your top pages and robots.txt, and asks Google’s URL Inspection about pages that slipped. Plain code compares everything with the weeks before and keeps a history of issues. Zabio then writes a short explanation of each new problem: what happened, the likely cause and what to do.

You get an email only when something is new, worse or fixed. Urgent problems, like a home page that stops loading or a noindex tag on a top page, also go to WhatsApp, Slack, Discord or Telegram.

One workflow watches as many sites as you add to a table, which makes it a good fit for agencies.

How it works

CheckSourceFlags
Clicks and impressionsSearch ConsoleThe last 7 days down more than 30% against the weekly average of the 4 weeks before
Pages losing clicksSearch ConsoleA page down more than 40% that had at least 10 clicks a week
Important queriesSearch ConsoleA query from your money_queries list that was in the top 10 and lost 3 positions or more
Home page and top pagesPage checksErrors, redirects, a noindex tag, a canonical pointing elsewhere
Page changesPage checksTitle, description, canonical, robots and status changes since the last run
robots.txtPage checksRules blocking Googlebot, or AI crawlers such as GPTBot, ClaudeBot and PerplexityBot
IndexingURL InspectionPages Google reports as not indexed, or where Google picked another canonical
TrackingGA4No visits recorded yesterday, or far fewer organic visits than Search Console clicks
ConversionsGA4Key events down more than 30%, or landing pages that stopped producing them
AI assistantsGA4Visits from ChatGPT, Perplexity, Gemini, Copilot, Claude and others, and drops in them

Each issue is saved in a table with the day it was first seen. The next morning it counts as still open, worse or resolved, so the report never repeats yesterday’s news. The thresholds above are the defaults; you can change them in SEO Settings.

Note: Search Console data is final about 3 days later. The search figures cover the 7 days that ended 3 days ago, which keeps false alarms out. Page checks, robots.txt and Analytics run on today’s state.

What you need

ItemWhereNotes
n8nYour own n8n, or n8n on a RemarkableCloud AI serverBuilt-in nodes only.
Google Search Consolesearch.google.com/search-consoleThe Google account you connect must see each site.
Google Analytics 4OptionalAdds tracking, conversion and AI assistant checks.
A Google Cloud projectconsole.cloud.google.comFree. Holds the OAuth client n8n signs in with.
A Zabio API keyzabio.aiWrites the daily explanation.
An SMTP accountYour email providerSends the reports.

Step 1: Import the template

Download the workflow file from the template page. In n8n, open Workflows, choose Import from File and select it. It arrives inactive, with empty credentials.

Step 2: Create the data tables

In n8n, go to Data tables and create three tables with exactly these names.

seo_sites, one row per site:

ColumnTypeWhat goes in it
site_idStringA short name, like acme.
activeBooleanfalse pauses the site.
domainStringThe site’s address, like https://www.acme.com.
gsc_propertyStringThe Search Console property: sc-domain:acme.com for a domain property, or https://www.acme.com/ for a URL-prefix property.
ga4_propertyStringThe GA4 property ID (a number, from Admin > Property details). Leave it empty to skip GA4.
languageStringen or es: the language of the report and alerts.
report_emailStringWho gets the report.
digestStringchanges sends an email only when something changed; always sends one every morning.
money_queriesStringA JSON list of the searches that matter most, like ["emergency plumber miami", "water heater repair"].
alert_whatsapp, slack_webhook, discord_webhook, telegram_chat_idStringOptional channels for urgent issues. See Urgent alerts.
brand_names, competitors, ai_promptsStringUsed by the weekly template. They can stay empty here.

seo_pages, filled in by the workflow: site_id, url, title, description, canonical, robots, location, body_hash, last_checked, last_changed, last_change (all String) and status (Number).

seo_issues, filled in by the workflow: site_id, issue_key, type, severity, page, label, detail, first_seen, last_seen, status, resolved_at (all String).

Step 3: Connect Google

n8n reads Search Console and GA4 with one Google OAuth2 credential.

  1. In the Google Cloud console, create a project, or pick one you already have.
  2. Open APIs & Services > Library and enable the Google Search Console API and the Google Analytics Data API.
  3. Open OAuth consent screen. Choose Internal if you use Google Workspace, otherwise External, and fill in the app name and your email.
  4. Open Credentials > Create credentials > OAuth client ID, choose Web application, and add the OAuth Redirect URL that n8n shows in its Google credential form as an authorized redirect URI.
  5. In n8n, create a Google OAuth2 API credential. Paste the client ID and secret, and set Scope to https://www.googleapis.com/auth/webmasters.readonly https://www.googleapis.com/auth/analytics.readonly.
  6. Click Sign in with Google with the account that can see your sites.
  7. Select this credential in Call Google APIs and Inspect URLs.

Tip: An External consent screen left in Testing expires the Google sign-in after 7 days. Set it to In production so the workflow keeps running. For an app only you use, Google shows an unverified-app warning at sign-in, which you can accept.

Step 4: Add the other credentials

n8n credentialUsed byWhat to enter
Zabio API key (Header Auth)Write Brief With ZabioName Authorization, Value Bearer YOUR_ZABIO_KEY.
SMTPEmail ReportYour mail server, user and password.
WhatsApp, TelegramWhatsApp Alert, Telegram AlertOnly if you use those channels.

Then open SEO Settings and set email_from, like SEO Watch <seo@yourcompany.com>.

Step 5: Run it once, then activate

  1. Click Execute workflow. The first run saves the current state of every page and sends a baseline report: the numbers, and any issue already there.
  2. Read the report and fix anything urgent.
  3. Activate the workflow. From the next morning you only hear about changes.

Urgent alerts

Four issues are urgent: the home page not loading, a noindex tag on a page with search traffic, robots.txt blocking Google, and Analytics recording no visits. They go to every channel the site has set up, the same morning, along with the email.

ChannelSet in seo_sitesNotes
Slackslack_webhookAn incoming webhook URL from your Slack app.
Discorddiscord_webhookA webhook URL from the channel’s Integrations settings.
Telegramtelegram_chat_idNeeds a Telegram bot credential in n8n.
WhatsAppalert_whatsappA number with country code. See below.

WhatsApp only lets a business message someone outside a 24-hour conversation with an approved template. To use it:

  1. In WhatsApp Manager, create a Utility template, for example seo_alert, with two body variables: “Urgent SEO issue on {{1}}: {{2}}. The full report is in your email.”
  2. Wait for Meta to approve it.
  3. In SEO Settings, set wa_template to the name and language, like seo_alert|en, and wa_phone_number_id to your WhatsApp phone number ID.

The WhatsApp assistant guide explains how to get a WhatsApp number and its credential.

Settings

Field in SEO SettingsDefaultWhat it does
top_pages50How many pages, by clicks, are checked each morning.
max_inspections10URL Inspection calls per site per day. Google allows 2,000.
drop_pct30Sitewide drop in clicks or impressions that counts as an issue.
min_weekly_clicks20Below this weekly average, sitewide drops are ignored.
page_drop_pct40Drop that counts for a single page.
page_min_weekly_clicks10Pages with fewer weekly clicks are not checked for drops.
conversion_drop_pct30Drop in GA4 key events that counts as an issue.
money_position_drop3Positions an important query can lose before it is flagged.
zabio_modelautoThe model that writes the explanation.

What it costs

Google doesn’t charge for the Search Console and Analytics APIs at this volume. Zabio writes one short explanation per site on the days there is something to report, with model: auto on a fast, low-cost model. Each report shows its own AI cost at the bottom. Zabio’s models page lists current prices.

Troubleshooting

SymptomLikely causeFix
“Search Console data could not be read”Wrong gsc_property, or the Google account can’t see the siteCopy the property exactly as Search Console shows it, with sc-domain: for domain properties.
“Google Analytics data could not be read”Wrong ga4_property or missing accessUse the numeric property ID, not the measurement ID that starts with G-.
The workflow stops after a weekThe Google sign-in expiredSet the OAuth consent screen to In production and sign in again.
No emailNothing changed, or report_email is emptySet digest to always to get a daily email anyway.
The report has numbers but no explanationsThe Zabio call failedOpen Write Brief With Zabio in the execution. 401 means a wrong key; 402 insufficient_credits means the balance is empty.
Every page shows as changed on the second dayA page builder changes titles or descriptions per visitCheck the page source; the workflow reads what Google would read.

Still stuck? Open a ticket. If your n8n runs on a RemarkableCloud server, an engineer can look at the workflow with you.

Next steps

Still stuck? Ask a human, we answer in minutes.