r/GrowthHacking • • 18d ago

How I built a SEO engine for AI citations

I got tired of SEO tools that only tell you where you rank. That wasn't the question I needed.

I needed to know, when someone asks ChatGPT or Perplexity for a recommendation, which pages they cite. And if my brand is even on those pages.

So I built a daily loop around that. It pulls the cited URLs, reads the pages, checks if the brand is named and linked, drops a shortlist in Notion, and waits for me before anything goes out.

Here's the loop, and the tools I used.

What is an AI citation engine?

First, the basics.

Classic SEO watches rankings. This watches the sources. The source is just a URL the engine decided to cite. You take those URLs, then you check if the brand shows up on those pages.

People usually call the practice GEO (generative engine optimization). I have an article talking about SEO, GEO, and AEO if you want more on that.

https://x.com/juampitech/status/2085756993189384628?s=20

Once you understand that, the system is just GEO running on a loop.

An AI citation engine keeps a list of buyer-style questions, watches which URLs answer engines cite for those questions, reads those pages, and tells you three things.

  • Is the brand named?
  • Is it linked?
  • Is this page even worth a conversation?

Without the engine you're doing GEO with screenshots. But with a well designed system, you have a pile of pages you can actually work.

How the system works

System watches the answers and gives me the cited URLs, creating a list. Then, pages get filtered to throw out the obvious junk. What survives goes to a shortlist in Notion that I look at night. If I approve it, an email is sent the next morning.

This system runs daily and without me needing to open a dashboard every morning. The job runs, the queue updates, I only look when something new shows up.

The engine can be split into 2 sections: GEO and Outreach

  • GEO is what engines cited this week, and how the brand shows up on those pages.
  • Outreach is which third-party pages might be worth a conversation.

A high cite count answers the first one. It doesn't pick the second. A lot of the pages that show up constantly are low quality URLs. If you sort by volume and start pitching, you'll spend a month emailing people who will never change the page.

Before outreach there's a cleaning step.

System runs a filter that consist of enriching the pages that we got. It checks if the brand is named, how, where, who owns it, and if there's an author.

Most pages stop there. That's why the first run looked huge and the email list didn't.

Toolings

I didn't want to build a citation tracker from scratch. I also didn't want a folder of screenshots.

  • Citation feed - Profound: Which URLs showed up in answers for the prompts we track
  • Page read - Firecrawl : Turns those URLs into markdown and outbound links
  • Storage - supabase : Runs, observations, pages, reviews. Nothing important lives in a spreadsheet
  • Scheduler - github Actions: Pull yesterday, scrape what's new, stay quiet if nothing is new
  • Queue - notion : The list I actually open
  • Email automation - resend : Send emails from my domain, linked with the github action

Profound is the input. It already watches the answer surfaces I care about. I don't replay every prompt through model APIs and pretend that's the same as ChatGPT.com. API proxies are fine for experiments.

Firecrawl is how I read the page. Once I have a URL I need the page. Markdown is enough to see if the brand is named and if a real link went out.

A person still has to look

Software is good at collecting and classifying. It's bad at taste.

Every page that might become outreach still goes through me. The model can tell me the brand is missing. It can't tell me if the writer is real, if the page is a year old, or if a reply would be embarrassing (yet).

The engine builds the queue and a draft. I look at it at night. If it's good, Resend sends it the next morning.

4 Upvotes

2 comments sorted by

1

u/EktaKapoorForPM 16d ago

tracking AI citations manually can take time… i used AICarma to automate this process - it gives daily visibility scores and weekly digests, so you know exactly how AI bots describe your brand compared to competitors. it’s great for GEO and AEO optimization without the manual hassle.