iclaude.lol had zero SEO infrastructure — no meta descriptions, no sitemap, no structured data. Google saw nothing useful. One Claude Code session added full SEO to every page, documented the work, and produced a reusable prompt you can steal.
Claude audited the site, identified every gap, and shipped all six fixes in a single pass.
Unique <meta name="description"> on every page. Google stops guessing what the site is about.
og:title, og:description, og:image, og:url on every page. Rich previews on X, Slack, Discord, iMessage.
Dynamic sitemap querying the database — every user’s card page included, with priority and changefreq.
Allows crawlers on public pages, blocks /auth/ and /api/ routes, points to the sitemap.
Structured data on every page — WebSite, Person, CollectionPage schemas. Rich snippets in search results.
<link rel="canonical"> on every page. No duplicate content from trailing slashes or query params.
The same homepage, before and after one Claude Code session.
Read every route, every pageShell() call, every meta tag. Found: OG tags only on /page/:handle. Zero meta descriptions. No robots.txt or sitemap. No structured data anywhere.
Added optional description, url, and jsonLd params to pageShell(). Every page now gets meta description, canonical URL, OG tags, and Twitter card tags automatically.
Crafted a specific meta description for each route — homepage, directory, gallery, case studies, legal pages, and every individual card page (using the user’s coding status).
Two new routes. The sitemap dynamically queries D1 for all claimed user handles, generating a URL entry for every card page alongside the static pages.
WebSite schema on the homepage, Person schema on card pages (with name, image, jobTitle from coding status), CollectionPage on the directory.
Run wrangler deploy, then curl every page checking for the new tags. Validate sitemap XML. Test OG previews. Ship.
Paste this into Claude Code on any server-rendered site. It audits, plans, and implements full SEO in one session.
Audit this site for SEO and fix everything you find. Specifically: 1. Read every route that serves HTML. Check each for: - <meta name="description"> (unique per page) - <link rel="canonical"> - Open Graph tags (og:title, og:description, og:image, og:url, og:type) - Twitter card tags (twitter:card, twitter:title, twitter:description, twitter:image) - JSON-LD structured data (WebSite on homepage, Person on profiles, appropriate schema per page) 2. Check if /robots.txt exists. If not, add a route: - Allow crawlers on public pages - Disallow /auth/, /api/, and any private routes - Point to the sitemap 3. Check if /sitemap.xml exists. If not, add a dynamic route: - Include all static pages with appropriate priority and changefreq - Query the database for all public profile/content pages - Return valid XML with proper content-type header 4. For the page shell / layout function: - Add description and canonical URL as parameters - Inject default OG and Twitter tags that individual pages can override - Support JSON-LD injection 5. Update every route's pageShell/render call to pass: - A unique, descriptive meta description - The canonical URL for that page - JSON-LD where appropriate 6. Deploy and verify: - curl each page and grep for the new meta tags - Validate /robots.txt returns 200 - Validate /sitemap.xml returns valid XML - Check that card/profile pages have Person schema
Copy the prompt above. Open Claude Code in your project. Paste. Watch it work.
Go to iclaude.lol →