Daily SEO keyword rank tracker with biggest movers report

Every weekday at 7am, see which keywords climbed, which slipped, and which competitors broke into the top 5, delivered as a short written report.

Agentic Task
ScrapingBeeGoogle SheetsGmailMarketingAI ReportsDaily DigestsResearch & Monitoring
PromptCreate

Every weekday at 7am, run an SEO keyword rank tracker that reports the biggest movers for our domain and emails the report to our marketing distribution list.

Step 1. Read the tracked keyword list from Google Sheets using Get Values. The sheet has a tab called 'keywords' with one keyword per row in column A. Our domain is stored in cell B1 of the same tab.

Step 2. For each keyword, call the ScrapingBee Google Search operation to pull the top 10 organic results as structured JSON. Find the position of our domain in the results, or record 'not in top 20' if it does not appear. Also capture the URLs in positions 1 through 5 so we can detect new competitors.

Step 3. Append a new row to the 'history' tab in the same spreadsheet using Append Values, with today's date, the keyword, our domain's position, and the current top 5 URLs.

Step 4. Read yesterday's rows from the 'history' tab with Get Values and compare. For each keyword, identify whether our position moved up or down by 3 or more, and which URLs in the top 5 are new compared to yesterday.

Step 5. Write a short narrative report (a few paragraphs, not a raw table) covering top gains, top losses, notable new competitor URLs that broke into the top 5, and any keywords where our domain dropped out of the top 20 entirely. Keep the tone factual and concise.

Step 6. Send the report via Gmail (Send a Message) to our marketing distribution list with a subject line like 'SEO rank report for {date}, X gains and Y losses'.

If a keyword has no prior history row (for example, it was added yesterday), skip the comparison for that keyword and just note that it is newly tracked.

What does this prompt do?

  • Reads your tracked keyword list from a Google Sheet every weekday at 7am and looks up where your domain ranks in Google for each one.
  • Logs the daily position for every keyword to a history tab so you keep a record of where you started and where you ended up.
  • Calls out the biggest movers, climbs and drops of three or more positions, plus any keyword where you fell out of the top 20 entirely.
  • Spots new competitor URLs that broke into the top 5 since yesterday so you know who is suddenly taking your space.
  • Writes a short narrative report covering top gains, top losses, and notable new competitors, and emails it to your marketing distribution list.

What do I need to use this?

  • A Google account with a sheet that holds the keywords you want to track and a second tab for the daily history log.
  • A ScrapingBee account, used to pull the top 10 Google results for each keyword.
  • A Gmail account that can send the daily report to your marketing distribution list.

How can I customize it?

  • Change the schedule, send it daily, three times a week, or only on Mondays, instead of every weekday at 7am.
  • Adjust the movement threshold, for example flag changes of five or more positions instead of three.
  • Swap the recipient list or send the report to a Slack channel instead of email.

FAQs

Where does the list of keywords come from?
From a Google Sheet you control. You add or remove keywords whenever you want, and the next morning's run picks up the new list automatically.
Which search engine does this check?
Google. ScrapingBee pulls the top 10 organic results for each keyword as Google would show them, so the rankings match what a real searcher sees.
Will it work if my domain is not in the top 10?
Yes. The report looks at the top 10 organic results for movers and competitor changes, and separately calls out any keyword where your domain has slipped out of the top 20 entirely.
Can I track more than one domain?
Yes. You can add a column to the sheet for each domain you care about, and ask Geni to write the report from the perspective of all of them or only one.
How do I change who receives the email?
Tell Geni the new recipient list, for example a distribution alias or a set of individual addresses, and the workflow will send future reports there.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App

Stop refreshing rank trackers every morning.

Connect Google Sheets, ScrapingBee, and Gmail once, and Geni emails you the day's biggest SEO movers before standup.