# Robert Beckner — The Gay Wizard

A static birthday tribute built around one portrait of Merlin (aka Robert Beckner, aka The Gay Wizard), with attributed professional history. Every visual (hero kaleidoscope, mirrored `tile-*.webp` backdrops, icons, favicon, and `social.png`) is cropped or mirrored from `dist/merlin.webp`. No dependencies or backend required. Source and served assets are in `dist/`.

## Vercel hosting

The GitHub repository is intended to be private under `[private repository details removed]`. The Vercel project belongs to the personal `[private hosting workspace]` workspace. `vercel.json` serves the static `dist/` output; the build wrapper allows indexing for production and emits noindex for preview deployments. No dependencies are required.

All deployments are initially protected with Vercel Authentication. This prevents public access and crawling even when production HTML allows indexing. At public launch, connect gaywizard.dev and change protection to Standard Protection so the production domain is publicly accessible while previews stay protected. Then run `npm run check:live` and verify access in Search Console. Keep the GitHub repository private. The legacy `.openai/hosting.json` is not used by Vercel and is excluded from CLI uploads.

## Local preview

Run `npm run dev` and visit http://127.0.0.1:4173. Run `npm run check` for content and asset checks.

## SEO and public launch

The checked-in production output allows indexing. `npm run build` creates indexable output; `npm run build:preview` explicitly creates a noindex preview. Neither command deploys anything. The keywords tag includes the requested birthday branding, but Google does not use this tag for ranking.

The production domain is `https://gaywizard.dev`. Once DNS is connected and public launch is approved, run:

```sh
npm run build
npm run check:production
```

After deploying through your own host, run `npm run check:live`. This is a read-only network check of the production homepage, resources, robots.txt, sitemap, HTTP redirect, and unknown-path status. It exits unsuccessfully for unreachable endpoints or failed checks. It does not verify Google indexing; use Search Console's live URL Inspection for that.

Configure the host to serve `dist/404.html` with an actual HTTP 404 status for unknown paths. The file alone cannot set a response status. Permanently redirect HTTP to HTTPS and, if you configure www, redirect it to the apex. Do not configure an SPA catch-all returning the homepage with HTTP 200 for every path. Production homepage metadata is `index, follow`; the 404 page intentionally has `noindex, follow` because error pages should not rank.

The original birthday story is based on Max's account of coder friends creating a surprise meant to be found through search, not an invented career anecdote. A genuine inbound link must be placed on a separate, authorized website. That website has not yet been supplied, so no inbound link has been published.

The build sets the canonical URL, sharing URLs, sitemap, robots.txt, and indexing directive from one origin. For private previews, run `npm run build:preview`. Build is idempotent. Serve `dist/` with HTTPS. Review the finished content before public publication. Verify public access and indexability in Google Search Console, submit `/sitemap.xml`, and monitor impressions for Robert Beckner. Genuine inbound editorial links can help discovery; do not depend on Robert changing his accounts for a surprise. Ranking cannot be guaranteed.

## Editorial sources

The additional page at `/chronicles/the-case-of-the-missing-semicolon/` is original fictional birthday satire. Its first-person wizard narrator is not an attribution of statements to Robert. It is linked from the homepage and included in the sitemap, with its own canonical URL and fiction-labeled metadata. No real disputes, third-party identities, or source link are included in that story.

- https://rbeckner.com/about/ — self-published career history, agencies, Granis AI, Activate.
- https://www.linkedin.com/in/robert-beckner — user-supplied professional identity link.
- Birthday nickname and “gayer than gay” branding supplied by Max with Robert's approval as reported by Max.

Agency work is attributed to Robert's biography, not represented as independently verified employment. CIA is explicitly birthday lore, excluded from search snippets with `data-nosnippet`, and is not a structured credential. The site labels itself a birthday tribute.

See [SEO-REVIEW.md](SEO-REVIEW.md) for the audit, launch checks, and search monitoring plan. Hosting and DNS are managed by Max; no deployment is part of the build.

The only third-party page resource is Google Fonts; local system fonts provide fallbacks. The birthday spell respects reduced motion and announces its message accessibly. No tracking or data collection is added.
