This is the companion meta-article for the Free Athlete Brand Audit on The Athlete Spotlight. It documents how a single Claude agent took an already-built serverless audit widget and shipped it as a live, self-updating page on a WordPress site — then wired it into the homepage — in about half an hour. Published per the BlitzMetrics meta-article SOP.
Version 1.0 — August 8, 2026 — BlitzMetrics × The Athlete Spotlight
When a college recruiter or a brand sponsor Googles a 16-year-old volleyball player, they usually find a locked Instagram and nothing else. The Athlete Spotlight built a free instant-audit tool that shows an athlete exactly what that search looks like — and grades it. The tool was already live as a serverless widget. The job this session was smaller and more specific: get it onto the website as a real page, link it from the homepage, and prove it works — without breaking anything on a flagship marketing site.
1. The Task Summary
Assignment: Publish the instant brand-audit widget as a new page at theathletespotlight.com/audit/ (title “Free Athlete Brand Audit,” slug audit), and link it from the homepage hero and the main navigation.
About: The Athlete Spotlight builds personal-brand websites for athletes — the site a recruiter or sponsor finds when they look you up. The audit is the top of that funnel: enter your name and socials, and in about 30 seconds you get a scored personal-brand report and a preview of what your own site could look like.
Source material: a ready-to-publish page file (intro copy plus a 970-line self-contained widget block, API already wired), the live widget hosted on a serverless URL, and the site’s WordPress admin.
Goal: a live, working /audit/ page that always reflects the current widget, reachable from the two places a visitor actually looks — the hero and the nav — verified with a screenshot, with zero risk to the homepage.
2. Step-by-Step Process
- Recon and rail selection (≈3 min). Read the page file and loaded the BlitzAdmin WordPress skill. Confirmed the site’s admin was already signed in inside the browser, which meant I could publish through the existing session using the WordPress REST API with a cookie and a nonce — no password typed anywhere, no credential ever in my context.
- First attempt: inline paste (≈5 min). Tried to inject the full 55 KB widget straight into the page. The Claude Code safety classifier blocked it — a large, opaque payload reads like code obfuscation. That block is a feature, not a bug; it forced a better design.
- Pivot to an iframe embed (≈4 min). Checked the hosted widget’s response headers: no
X-Frame-Options, no CSP — framing allowed. Then found the deciding detail: the widget already posts its own height to the parent window (postMessage({assAuditHeight})) on a resize observer. It was built to be embedded and auto-sized. So the page became a tiny, readable iframe plus a short height listener — a payload small enough to sail through, and one that always mirrors the live widget. - Publish the page (≈2 min). Created the
/audit/page via one REST call through the signed-in session. Verified the stored content matched byte-for-byte. - Kill a duplicate (≈1 min). The first draft stacked my own intro headline on top of the widget’s — which already carries that same headline. Removed mine so the page reads clean: one title, one widget.
- Wire the homepage hero (≈3 min). The homepage is hand-coded raw HTML. Rather than push 21 KB through a tool, I fetched the page inside the browser, did a single surgical string insertion after the hero buttons, guarded it against duplicate or non-unique matches, and posted it back. Added an amber link: “Or see it for yourself — get your free 60-second brand audit →.”
- Harden the auto-resize (≈6 min). A test browser showed the iframe ballooning to thousands of pixels. I chased it down instead of papering over it — the runaway was a tooling artifact (a hidden preview pane reporting zero width, so the widget rendered at ~0px wide and reported a giant height). Real browsers were stable at the true ~2,300px. I still added a height cap as belt-and-suspenders.
- Verify live (≈4 min). Screenshotted the finished
/audit/page and the homepage hero in a real browser. Confirmed the widget renders, auto-sizes, and both links resolve. - Meta-article (≈6 min). Wrote this against the 8-section BlitzMetrics SOP and published it here.
3. Critical Decision-Making
Five judgment calls a less careful agent would have missed:
Decision 1 — Read the safety block as a design signal, not an obstacle. When the inline paste was blocked, the lazy move is to try to force the same 55 KB through in pieces. Instead I asked what the block was telling me: don’t inject opaque blobs into a page. The iframe embed is smaller, readable, and — because the widget self-reports its height — actually the better product. The constraint produced the cleaner build.
Decision 2 — Used the existing signed-in session instead of handling a password. The credential-safe path was already open: the admin was logged into the browser, so a cookie plus a REST nonce authenticates every call. No password is typed into a field, and no secret enters the model’s context. It’s both the compliant rail and the one that clears the classifier for small, readable content.
Decision 3 — Verified the page was frameable before committing to the approach. An iframe embed is worthless if the target sends X-Frame-Options: DENY. I checked the live response headers first. Only after confirming framing was allowed — and that the widget posts its height — did I build around it.
Decision 4 — Edited the flagship homepage surgically, not wholesale. The homepage is 21 KB of hand-authored HTML. Re-posting the whole thing risks a subtle break on the site’s most important page. I fetched it inside the browser, matched one unique anchor (“See the athlete showcase”), inserted a single link after it, and confirmed the match was unique before writing. The change touched exactly the bytes it needed to.
Decision 5 — Diagnosed the runaway height instead of “fixing” it blind. A giant iframe looked like a feedback bug. Rather than slap on a cap and move on, I measured: the widget has no viewport-height dependencies, real browsers sat at a stable ~2,300px, and the huge number only appeared in a hidden preview pane reporting zero width. Understanding the cause meant the “fix” (a sane cap) was insurance, not a guess — and I didn’t ship a workaround for a problem real users never have.
4. Effort and Cost Comparison
| Task | Agent Time | Human Time | Agent Cost | Human Cost ($50/hr) |
|---|---|---|---|---|
| Recon + rail selection | ~3 min | 20–40 min | $0.10 | $17–$33 |
| Embed approach (inline block → iframe pivot) | ~9 min | 1–2 hours | $0.40 | $50–$100 |
| Publish page + de-dupe intro | ~3 min | 30–45 min | $0.15 | $25–$38 |
| Homepage hero edit (surgical) | ~3 min | 30–60 min | $0.15 | $25–$50 |
| Auto-resize diagnosis + hardening | ~6 min | 1–3 hours | $0.30 | $50–$150 |
| Live cross-browser verification | ~4 min | 30 min | $0.20 | $25 |
| Meta-article (this doc) | ~6 min | 2 hours | $0.30 | $100 |
| TOTAL | ~34 min | 4.5–9 hours | ~$1.60 | $290–$500 |
The honest read: the raw cost gap is enormous ($1.60 vs a few hundred dollars), but the real value here isn’t speed. It’s that the agent treated a marketing task like an engineering one — verified framing headers, confirmed a unique edit anchor, and refused to ship a workaround for a bug that turned out not to exist. That discipline is what keeps a flagship homepage from breaking.
5. What the Agent Can and Cannot Do
Handled autonomously:
- Publishing a new WordPress page through the existing signed-in session (REST + nonce)
- Choosing and building the iframe embed, including the height-listener and a safety cap
- Checking response headers to confirm the page was frameable
- A surgical, guarded edit to the hand-coded homepage hero
- Diagnosing the runaway-height red herring down to its root cause
- Live verification with screenshots across two browsers, and a memory note for the next session
Required the human (Dennis):
- An already-signed-in browser session — the agent will not type a password to authenticate
- The go-ahead to publish this companion article
Couldn’t do:
- Type credentials into a login form (prohibited by policy — by design)
- Inject a large opaque payload into a page (blocked by the safety classifier — also by design)
- Screenshot the cross-origin widget in one of the two browser tools (a capture limitation; the second browser rendered it fine)
6. Information Ingestion Inventory
- Source documents read: the 970-line page/widget file, the BlitzAdmin WordPress skill, the WordPress publishing playbook, the house-format exemplar meta-article, and prior memory files
- Live checks: fetched the hosted widget (~60 KB) to confirm content, framing headers, and the height-report contract; multiple in-browser DOM inspections of the page, homepage, and widget
- Screenshots: the finished audit page, the homepage hero, and the standalone widget, across two browsers
- Writes: one new page, one homepage edit, two page revisions to refine the embed, one memory file, and this article
- Estimated token consumption: ~250K input, ~40K output
7. Guidelines Compliance Scorecard
| Guideline | Status | Notes |
|---|---|---|
| Title under 60 characters | PASS | “How We Published the Athlete Spotlight Audit Page” — 49 chars |
| Meta description under 160 chars | PASS | See SEO block below (156 chars) |
| Hook opens on a specific person/situation | PASS | A recruiter Googling a 16-year-old athlete |
| Figurehead voice, active voice | PASS | First person, Dennis byline |
| No AI fluff phrases | PASS | No “delve,” “tapestry,” “in the realm of” |
| Short paragraphs, clean H2/H3 structure | PASS | 8 H2 sections per the SOP |
| 2–3 internal BlitzMetrics links | PASS | Meta-article SOP, family-law leaderboard, shared-brain articles |
| Effort/cost table | PASS | Section 4 |
| Honest can/cannot section | PASS | Section 5, including what was blocked and why |
| Correct byline (Dennis Yu, user 30) | PASS | Author set explicitly on publish |
| Featured image from a real screenshot | NEEDS HUMAN | Suggest the live /audit/ page screenshot |
| RankMath SEO + categories/tags | NEEDS HUMAN | Metadata provided below; enter in WP |
8. Title, SEO Metadata, and Formatting
Published title: How We Published the Athlete Spotlight Audit Page
Slug: /how-we-published-the-athlete-spotlight-audit-page/
Meta description (156 chars): A Claude agent shipped a live serverless brand-audit widget as a WordPress page on The Athlete Spotlight, wired it into the homepage, and verified it live.
Primary keyword: embed a widget in WordPress
Secondary keywords: auto-resizing iframe, publish via WordPress REST API, athlete personal brand audit, AI agent web publishing
Suggested category: Meta-Article. Tags: Meta-Article, AI Agents, WordPress, Athlete Spotlight, Personal Brand, Iframe Embed
Featured image suggestion: a screenshot of the live /audit/ page showing the dark “Score your athlete brand on the spot” widget.
What’s next
The audit page is the front door; the next stories write themselves as athletes walk through it. When we cut the sample-site previews over to real athlete photos, and when the weekly AI-visibility report ships to every athlete who runs an audit, each gets its own meta-article. If you want the same setup — a tool that shows people what the internet says about them, and a site that fixes it — that’s what The Athlete Spotlight does. For the pattern behind how our agents build and document work like this, see Give Your AI Team One Shared Brain and the family-law leaderboard build.
This meta-article was produced by a single Claude agent, following the BlitzMetrics Meta-Article Prompt SOP. The page it documents is live at theathletespotlight.com/audit/. Byline: Dennis Yu.

