Quick overview
This workflow runs daily (or manually) to pull Google SERP results via SerpAPI for keywords stored in Notion, uses OpenAI to classify search intent, saves a daily snapshot back to Notion, and posts a Slack alert when rankings move significantly compared to yesterday.
How it works
- Runs on a daily 6AM schedule (or via manual trigger) and loads your brand and competitor configuration.
- Reads all keywords marked for tracking from a Notion database.
- For each keyword, fetches the top Google search results from SerpAPI and parses your current position, SERP features, People Also Ask questions, and featured snippet ownership.
- Sends the parsed SERP context to OpenAI (GPT-4o-mini) to classify the keyword’s search intent and related attributes.
- Looks up yesterday’s snapshot for the same keyword in Notion and computes rank movement and newly appearing SERP features.
- Creates a new Notion database entry to store today’s snapshot metrics for historical tracking.
- If the rank changes by 3+ positions, posts a formatted alert message to a configured Slack channel.
Setup
- Add credentials for Notion, SerpAPI (HTTP Query Auth with the
api_key parameter), OpenAI, and Slack.
- Update the Configuration code values for your brand name, website URL, and competitor domains.
- Create/select a Notion “Tracked Keywords” database, set its database ID in the keyword loader, and ensure it has at least a Keyword title field and a TrackSERP checkbox.
- Create/select a Notion “SERP Snapshots” database, set its database ID in both snapshot nodes, and ensure it has properties matching Date, Keyword, Position, Movement, Features, PAA Count, and Client.
- Set the target Slack channel ID in the Slack message step and run the workflow once manually to verify results before activating the daily schedule.