Home/Catalog/Growth
Growth — does it grow?
Brief 70

SEO & Discoverability

Titles, metadata, structured data, crawlability, and social unfurls — every place a search engine or a shared link fails to find, index, or render your pages.

SEO.md4 phases8 lenses~2.9k chars

Free & open · no signup · read-only — it ends by asking · nothing leaves your machine

What it does

You are working inside this repo. Mission: find every place a search engine or a shared link fails to find, index, understand, or render your public pages — the gap between the content you ship and the traffic it could earn.

Read-only pass. Fetch a few rendered pages if you can. Your only write is the report file.

What it looks for

8 lenses it looks through

Phase 2 sweeps the codebase through every one of these, citing file and line for each finding.

1

Titles & descriptions

unique, present, and meaningful per page, or one global <title> and no meta description

2

Crawlability

robots.txt, sitemap freshness and coverage, an accidental noindex, orphaned pages, redirect chains

3

Indexable content

does the primary content render without client JS, or does the crawler see an empty shell

4

Canonical & duplicates

canonical tags, trailing-slash and case variants, query-param dupes, http/https and www drift

5

Structured data

schema.org/JSON-LD for the content type; valid, or absent where it would earn rich results

6

Social unfurls

Open Graph and Twitter cards: present, correct dimensions, non-404 images, per-page not site-wide

7

Semantics & headings

one h1, logical outline, descriptive link text, image alt; not <div> soup

8

Performance signals

Core Web Vitals proxies (payload, layout shift, blocking resources) that ranking rewards

The deliverable

What lands in your repo

One structured report at the repo root — or in reports/, if you keep one — the same shape every time, ready for a teammate — or the optional Studio — to act on.

SEO.md
1
Verdict
indexable and shareable today? the single biggest leak
2
Three page checks
page → what the crawler sees → what the unfurl renders → gap
3
Findings
each: Name · Lens · Where · Impact · Fix sketch · Effort
4
Quick wins
the highest-reach fixes shippable this week
One file. Evidence-backed. It ends by asking before touching anything.
How it works

What it makes the agent do

Every Goal Prompt follows the same four steps, so results are consistent and repeatable — no matter which one you run.

1
Phase 1

Map the public surface

Which routes are public and meant to rank? Static, server-rendered, or client-only (and does content exist without JS)…

2
Phase 2

Audit through 8 lenses

Cite the file or route for every finding.

3
Phase 3

Curate

Separate reach-blockers (not indexable, noindex shipped) from polish (a missing OG image).

4
Phase 4

Report

Create SEO.md at repo root.

Get started

Three ways to run this Goal Prompt

01 · COPY

Paste it in

Copy it and paste it into your agent inside the repo you want checked.

02 · INSTALL

As a slash command

Install the goal plugin once — two commands — then just type /goal:seo-discoverability.

1/plugin marketplace add GhostlyGawd/goal-prompts
2/plugin install goal@goal-prompts

Or install only this Goal Prompt as /goal-seo-discoverability:

curl -fsSL https://goal-prompts.vercel.app/install | BRIEF=70 sh
03 · AGENT

From an agent (MCP)

Let an agent fetch it mid-conversation, or pull the raw Goal Prompt by URL.

https://goal-prompts.vercel.app/raw/70.md
Transparency

The exact prompt

Nothing hidden — this is the whole Goal Prompt, verbatim. Read it in a minute, edit it, or copy it as-is.

Read the full brief (2,897 characters)
# Goal: SEO & Discoverability

You are working inside this repo. Mission: find every place a search engine or a shared link fails to find, index, understand, or render your public pages — the gap between the content you ship and the traffic it could earn.

Read-only pass. Fetch a few rendered pages if you can. Your only write is the report file.

## Phase 1 — Map the public surface
- Which routes are public and meant to rank? Static, server-rendered, or client-only (and does content exist without JS)?
- Find the machinery: title/meta handling, sitemap, robots, canonical strategy, structured data, redirects.
- Note the framework's SEO affordances and whether they are actually used.

## Phase 2 — Audit through 8 lenses
Cite the file or route for every finding.
1. **Titles & descriptions** — unique, present, and meaningful per page, or one global `<title>` and no meta description
2. **Crawlability** — robots.txt, sitemap freshness and coverage, an accidental noindex, orphaned pages, redirect chains
3. **Indexable content** — does the primary content render without client JS, or does the crawler see an empty shell
4. **Canonical & duplicates** — canonical tags, trailing-slash and case variants, query-param dupes, http/https and www drift
5. **Structured data** — schema.org/JSON-LD for the content type; valid, or absent where it would earn rich results
6. **Social unfurls** — Open Graph and Twitter cards: present, correct dimensions, non-404 images, per-page not site-wide
7. **Semantics & headings** — one `h1`, logical outline, descriptive link text, image alt; not `<div>` soup
8. **Performance signals** — Core Web Vitals proxies (payload, layout shift, blocking resources) that ranking rewards

## Phase 3 — Curate
- Separate reach-blockers (not indexable, noindex shipped) from polish (a missing OG image).
- Spot-check three real pages: what a crawler and a shared-link preview actually get.
- Rank by traffic at stake, not by rule count.

## Phase 4 — Report
Create `SEO.md` at repo root:
1. **Verdict** — indexable and shareable today? the single biggest leak
2. **Three page checks** — page → what the crawler sees → what the unfurl renders → gap
3. **Findings** — each: Name · Lens · Where · Impact · Fix sketch · Effort
4. **Quick wins** — the highest-reach fixes shippable this week

Start the report with today's date. If `SEO.md` already exists from a previous run, read it first and lead with what changed since.

## Rules
- Verify against rendered output, not intentions in the source
- Every claim names a page or a file
- No public web pages in this repo? Say so in a one-paragraph null report and stop — a null result is a valid finding.
- If a `reports/` directory exists at the repo root, write the report there instead of the root.
- Before asking, present the top findings as a ranked list in plain words
- Report only — end by asking which fixes to make

House rules for this Goal Prompt

  • Verify against rendered output, not intentions in the source
  • Every claim names a page or a file
  • No public web pages in this repo? Say so in a one-paragraph null report and stop — a null result is a valid finding.
  • If a reports/ directory exists at the repo root, write the report there instead of the root.
  • Before asking, present the top findings as a ranked list in plain words
  • Report only — end by asking which fixes to make
Keep exploring

More Growth briefs

Runs inside these playbooks — curated sequences you can launch with one paste: