Playbook
seo & aeo from zero
how to build search presence and answer engine citations from scratch
every Google update since 2003 is trying to answer one question better: is this the best result for this search? pagerank, panda, helpful content. different mechanisms, same question. once you have that frame, the tactics stop feeling arbitrary.
the other thing: SEO is slow. work you do in June shows up in October. the cadence that works is monthly. look at what's moving, fix one thing, wait. daily checks are noise.
this essay is built from six months of building Bangers Only from scratch. all the Search Console data is real. take what applies.
how Google sees your site
before you rank, Google has to find you.
four things happen in sequence. break any one and you don't rank.
your sitemap.xml is a direct list of every URL you want crawled. without it, Google discovers pages by following links. much slower, and some pages never get found.
what Google is measuring
every ranking decision traces back to three questions.
fix these in order. on-page signals don't help if Google can't crawl the page. authority doesn't help if the page is thin.
on-page signals
what is the page about, and is it the best answer?
Title tag
the single biggest on-page signal. it's the blue text in search results. 50-60 characters max. format: [Keyword] — [Hook] | Brand. keyword comes first. that's what Google matches first.
| Example | |
|---|---|
| Good | Startup Tweet Examples — 40 viral tweets from founders | Bangers Only |
| Bad | Generate Tweets | Bangers Only |
Scroll horizontally to see every column.
Meta description
not a ranking factor directly. controls click-through rate. a higher CTR tells Google your result is more relevant, which improves ranking over time. if it's generic, people don't click even at position #5. write it like ad copy.
Content depth
Google measures whether the page fully answers the query. a page with 3 examples isn't a page. it's a stub. 20+ real, distinct examples is the threshold. pages below it show up as "crawled, not indexed" in Search Console and quietly drop.
Schema markup (JSON-LD)
machine-readable metadata embedded in your HTML. tells Google exactly what the page contains. three types that matter for most products:
| Type | What it does | Unlocks |
|---|---|---|
| SoftwareApplication | Marks the site as a web app with pricing | Star ratings + price in results |
| ItemList | Marks a structured collection of examples | Rich list format in results |
| FAQPage | Marks accordion FAQ content | FAQ dropdowns in results |
Scroll horizontally to see every column.
Google won't show rich results for new, low-authority sites. implement it now anyway. the payoff comes months later as authority grows.
one keyword = one page. always.
every target keyword needs exactly one page that owns it. two keywords on one page and Google doesn't know which query it answers. ranks you for neither.
On-page checklist
- -Title tag contains the exact keyword
- -H1 matches or closely mirrors the title
- -First 100 words use the keyword naturally
- -Content is substantial: at least 600 words, not just a tool embed
- -2-3 other pages on your site link to this page
where people fail
the mistakes that cost months.
most of these are invisible until you know what to look for. all are common. all are recoverable.
scale
one template × a dataset = many pages
programmatic SEO is one template multiplied by a dataset to produce many pages, each targeting a specific long-tail query.
nobody searches "tweet examples." too broad. "saas tweet examples" is winnable. thousands of these specific queries exist. each page is small traffic. the sum is large.
Zapier does this for millions of pages (/apps/X/integrations/Y). Zillow does it for every address. Tripadvisor for every hotel. same pattern everywhere.
the dataset is the moat. the template is just infrastructure.
Three rules that keep it clean
Google's Helpful Content system penalizes thin programmatic pages actively. stay on the right side of it:
- -20+ real, distinct pieces of content per page. Google measures depth and drops thin pages.
- -real differentiation. the startup page and the SaaS page must have genuinely different content. not the same text with one word swapped.
- -a real dataset. anyone can copy the template. nobody can copy years of curated content with quality signals baked in.
vague scraping criteria returns garbage. the first pass often gives you irrelevant content because the prompt was too broad. fix: name specific sources, define explicit exclusions, require content to be about the topic not just contain a keyword, and verify every URL before trusting it.
six months of Search Console
here's what it actually looks like.
this is Bangers Only's Search Console data, unfiltered.
The timeline
| Period | Clicks | Impr. | CTR | What happened |
|---|---|---|---|---|
| Mar 20-31 | 3 | 10 | 30% | Tiny sample, very early |
| April | 1 | 32 | 3% | More pages crawled |
| May | 9 | 119 | 7.5% | Position ~5-6, first signs of traction |
| June 1-19 | 0 | 123 | 0% | Redirects dropped position to 10.4 |
Scroll horizontally to see every column.
impressions grew every month. the June drop to 0 clicks is a redirect processing issue, not a content failure. 301 redirects take 4-8 weeks to fully transfer authority. temporary.
Queries
| Query | Impr. | Pos. | Clicks | Read |
|---|---|---|---|---|
| banger tweet | 21 | 8.8 | 0 | Best keyword. Almost page 1. Needs DR. |
| bangerx viral tweets tool | 13 | 4.6 | 0 | A directory mislabeled the product. Wrong audience. Noise. |
| what is a banger tweet | 6 | 12.2 | 0 | Page 2. Guide needs optimization. |
| banger tweets | 4 | 7.3 | 0 | Near page 1. Improves as DR grows. |
| bangersonly | 1 | 11 | 0 | Zero word-of-mouth search yet. |
Scroll horizontally to see every column.
"bangerx" at position 4-5 with 0 clicks: a directory mislabeled the product as a different tool. someone is searching for that tool, not this one. learn to separate signal from noise. "banger tweet" at position 8.8 is the real opportunity.
Pages
| Page | Clicks | Impr. | CTR | Pos. |
|---|---|---|---|---|
| Homepage | 12 | 168 | 7.1% | 6.8 |
| /how | 1 | 55 | 1.8% | 5.2 |
| /tweets/design | 1 | 1 | 100% | 3 |
| /tweets/startup | 0 | 18 | 0% | 20 |
| /tweets/side-hustle | 0 | 16 | 0% | 11 |
| /tweets/ai | 0 | 13 | 0% | 6.9 |
| /pricing | 0 | 11 | 0% | 4.9 |
Scroll horizontally to see every column.
homepage drives 12 of 13 total clicks. normal at low authority. it has the most internal links and the most trust. the /how page is the problem: position 5.2 with 1.8% CTR. at position 5, expect ~7%. the title isn't specific enough to earn the click. a pricing page at position 4.9 with 0 clicks is expected. nobody searches for pricing until they already know you exist.
Countries
| Country | Clicks | Impr. | CTR | Position |
|---|---|---|---|---|
| India | 11 | 31 | 35% | 4.6 |
| US | 0 | 139 | 0% | 7.6 |
| UK | 0 | 15 | 0% | — |
| Canada | 0 | 21 | 0% | — |
Scroll horizontally to see every column.
India at 35% CTR, US at 0%. same content. the gap is position: 4.6 vs 7.6. look at the CTR table. three positions lower, CTR drops from ~11% to ~2%. the US has 4.5x more impressions. biggest untapped market. same fix: DR.
which keywords
at low DR, only win where big sites don't bother.
the winning conditions: competition is low, you have topical relevance, and the query is specific enough that established sites aren't targeting it.
Already ranking — just needs DR
| Keyword | Current position | Target |
|---|---|---|
| banger tweet | 8.8 | Top 3 |
| banger tweets | 7.3 | Top 3 |
| what is a banger tweet | 12.2 | Top 5 |
| AI tweet examples | 6.9 | Top 5 |
Scroll horizontally to see every column.
these pages are already in the game. DR growth alone pushes them up without any page changes. this is why building authority is the first priority, not new content.
Winnable with a dedicated page
| Keyword | Why you can win | Page needed |
|---|---|---|
| shitpost generator | Only real product for it. Almost no competition. | /tools/shitpost-generator |
| tweet ideas for founders | Low competition, specific, high purchase intent. | /guides/tweet-ideas-for-founders |
| viral tweet hooks | Informational, low competition, searchable. | /guides/viral-tweet-hooks |
| how to write a viral tweet | Guide exists but needs proper optimization. | /guides/how-to-write-a-viral-tweet |
Scroll horizontally to see every column.
intent beats volume every time.
audience pages (/for/founders, /for/ghostwriters) convert better than topic pages (/examples/startup-tweets). "tweet generator for ghostwriters" is someone with a job who needs a tool right now. "startup tweet examples" is someone browsing. 50 visitors with specific intent outperform 500 without it.
answer engines
when Google isn't the destination
AI search doesn't return a list of links. it synthesizes an answer and cites 2-3 sources. as more searches route through AI, being cited matters as much as ranking.
they share almost all the same preparation: crawlable content, schema, canonical domain, clear product description. AEO rewards direct and factual prose over keyword-optimized prose.
How AI decides what to cite
- -crawlable content with clear structure: headers, bullets, direct answers. dense prose gets ignored. clear structure gets cited.
- -explicit product facts stated directly: who it's for, what it does, what it costs. buried in a paragraph gets missed.
- -schema markup: same structured data as Google. SoftwareApplication, FAQPage, and ItemList all signal to AI crawlers what your content is.
- -llms.txt: a machine-readable document at your root.
llms.txt
a machine-readable README for AI crawlers. when Perplexity or ChatGPT scans your site, a clear llms.txt means it can accurately describe you in answers. without it, the AI guesses from page content and often gets the description wrong.
what goes in it: what the product does, who it's for, what it costs, how to use it. four things. if a human can read your page and immediately understand all four, an AI can cite it accurately.
AEO setup checklist
| What | Why | Priority |
|---|---|---|
| llms.txt at /llms.txt | Machine-readable product description for AI crawlers | First |
| robots.txt allows GPTBot, ClaudeBot, Perplexity | These are the crawlers you want | Check now |
| SoftwareApplication schema with pricing | Signals product type and cost to AI | In layout.tsx |
| FAQPage schema on guides | Direct Q&A format AI loves to cite | On each guide |
| Clear product description above the fold | Specific and factual, not vague | Review your hero |
| Bing Webmaster Tools | Bing powers ChatGPT web search | 10 minutes |
Scroll horizontally to see every column.
what to do
in order.
DR comes before content ranking. directories come before Product Hunt. one page done well beats five pages done thin.
This week — one-time setup
- -Google Search Console: verify ownership, submit sitemap.xml. until this is done, Google discovers pages through links alone.
- -Bing Webmaster Tools: same process for Bing. powers ChatGPT web search. 10 minutes.
- -TAAFT, Futurepedia, SaaSHub: DR 60-70 each, dofollow, 30 minutes total. link to the specific page that matches the keyword.
- -plan Product Hunt launch: DR:90, single biggest free backlink. treat it like a launch: tagline ready, images ready, users prepped to upvote. launch at 12:01am PST.
Content calendar — next 8 weeks
| Week | Page | Target keyword |
|---|---|---|
| Week 1 | /tools/shitpost-generator | "shitpost generator" |
| Week 2 | Expand existing guide to 600+ words | "what is a banger tweet" |
| Week 3 | /guides/viral-tweet-hooks | "viral tweet hooks" |
| Week 5 | /guides/tweet-ideas-for-founders | "tweet ideas for founders" |
| Week 7 | /tools/tweet-ideas-generator | "tweet ideas generator" |
Scroll horizontally to see every column.
each page needs 600-800 words of real content. a tool embed with no surrounding words gives Google nothing to work with.
Weekly (15 minutes)
- -Search Console → Performance: which queries get impressions? which pages?
- -find queries at position 5-15. improving a page at #8 is 10x easier than building a new page. add examples, rewrite the title, and it often moves to top 5.
- -add to your content corpus. every piece feeds both the product and the SEO pages.
Monthly (1-2 hours)
- -re-run content export scripts. growing corpus auto-refreshes SEO pages.
- -find the 1 query with the most impressions but lowest CTR. rewrite that page's title and meta description.
- -find the 3 worst-performing pages. improve them or move that energy elsewhere.
- -check DR at ahrefs.com/website-authority-checker (free).
Quarterly
- -Indie Hackers post on a milestone or lesson. DR:75, dofollow, your actual audience.
- -build a data page: "state of [your niche]" from your corpus stats. data pages earn links because writers cite original data.
- -submit to 3-5 more directories.
- -prune or improve thin pages. 50 great pages outranks 200 mediocre ones.
expectations
the honest timeline
SEO doesn't accelerate because you check more often.
| Milestone | When |
|---|---|
| Redirects settle, positions stabilize | Month 2 |
| DR moves from 1 to 5-8 after directories + Product Hunt | Month 3 |
| New content pages indexed and ranking | Month 3-4 |
| Top keyword cluster in top 3 | Month 4-5 |
| 100+ impressions/day | Month 5-6 |
| First consistent organic signups | Month 6 |
Scroll horizontally to see every column.
the technical foundation is the easy part.
patience is the actual skill.
schema in place. AEO covered. the only gap is authority. it starts moving with 3 directory submissions and a Product Hunt launch. everything built now pays off in month 6.