Quick overview
This weekly workflow audits how often your brand is named versus cited by link in ChatGPT (with web search) and Perplexity, then identifies which external pages win those citations, classifies them with OpenAI, and logs a trend report plus a content-gap backlog in Google Sheets.
How it works
- Runs weekly on a schedule and reads one brand’s settings from Google Sheets (domain, sitemap path, competitors, sampling and notification settings).
- Fetches the site sitemap, follows a sitemap index one level down when needed, and scores URLs to select the most commercial pages to sample.
- Uses OpenAI to turn the selected page themes into buyer-style questions without naming the brand, then expands each question into multiple repeat runs.
- Sends every repeated question to Perplexity and to the OpenAI Responses API with web search, then normalizes both outputs into a single record with answer text and cited URLs.
- Calculates mention rate, citation rate, and stability per question/engine, and ranks the external cited URLs that are not on your own domain.
- Fetches the top cited external pages and uses OpenAI to classify each page’s format, topic, and why it earns citations.
- Builds a week-over-week HTML report, logs the run to Google Sheets History, emails the report via Gmail, optionally alerts Slack on large drops, and writes each citation gap as its own row in a Google Sheets Content Gaps backlog.
Setup
- Create a Google Sheets file with tabs named Settings, History, and Content Gaps, and add the columns referenced in the Google Sheets nodes (including Settings fields like Domain, Sitemap Path, Competitors, Pages To Sample, Repeats Per Question, Report Email, and Slack Channel).
- Add Google Sheets credentials and replace YOUR_GOOGLE_SHEET_ID in all Google Sheets nodes with your spreadsheet ID.
- Add OpenAI API credentials (used for question generation, page classification, and the ChatGPT web-search calls).
- Add a Perplexity API credential for the Perplexity chat completions request.
- Add Gmail credentials for sending the report email, and set the Slack channel name (and Slack credentials) for the optional alert message.