What's covered
The idea: Claude as your CMS
You cloned a website. You have working HTML, CSS, and the right visual structure — but it's all hardcoded. Every headline, image, paragraph, and link is baked into the template. Changing anything means hunting through files.
The traditional fix is a CMS: Contentful, Sanity, Webflow, WordPress. You set up schemas, configure a dashboard, pay a subscription, and learn another tool.
There's a better way if you're the only one managing the site: use Claude Code as your CMS.
The approach is simple. All editable content lives in /content/*.json files. Components read from those files. When you want to change something, you describe it to Claude, and Claude edits the right file. No dashboard. No subscriptions. Full version history in Git. And Claude can also add new pages, restructure sections, or wire up entirely new features — all from plain English prompts.
Best for: Solo founders, developers, and creators who are managing their own site and want to move fast. If other non-technical people need to edit the site without your involvement, a real CMS is the better call.
Get 3 Claude Code skills emailed 3x a week
Step 1: Audit your clone
Before touching anything, have Claude map out exactly what you have. This gives you a shared understanding of the structure and surfaces any issues early.
Open Claude Code in your project directory
cd your-cloned-site
claudeAsk Claude to audit the project
Use this prompt:
Audit this project and give me:
1. The current tech stack (is it static HTML, a framework, something else?)
2. A list of every section on the homepage with a one-line description
3. All the content that's hardcoded and should be editable (headlines, body copy, images, links, prices, etc.)
4. Any issues you see that would complicate a migration to Next.js
Don't change anything yet — just map it out.Claude will read the file structure and return a clear breakdown. Save or screenshot this — it's your migration plan.
Step 2: Migrate to Next.js + JSON content
This is the one-time setup that makes everything else easy. Claude converts the static clone into a Next.js app where every piece of editable content is extracted into JSON files.
Migrate the project
Use this prompt:
Convert this project to Next.js 15 with the App Router. Here's what I want:
1. All editable content extracted into /content/*.json files — one file per section (hero.json, features.json, nav.json, footer.json, etc.)
2. Each section becomes a React component in /components/ that reads from its JSON file
3. The homepage at /app/page.tsx just assembles the components
4. Keep the exact same visual design — same fonts, colors, spacing, everything
5. Tailwind CSS v4 for styling
6. Use TypeScript
Important for the global CSS: wrap any existing reset or global styles in @layer base {} so Tailwind utility classes always win in the cascade. If the original site only has a basic * { margin: 0; padding: 0 } reset, you can delete it entirely — Tailwind v4 Preflight already handles this. Only keep custom global styles (font smoothing, selection colors, scroll behavior, etc.) and place them inside @layer base.
Start with the foundation (package.json, config files, global styles), then build section by section. Show me each JSON file as you create it so I can verify the content is right.This is a big operation. For complex sites it might take 20-40 minutes and several back-and-forth messages. Let Claude work through it section by section rather than trying to do everything at once. If something looks wrong visually, say "the hero section spacing looks off compared to the original — fix it" and Claude will correct it before moving on.
Verify the structure looks right
Once Claude is done, confirm the output:
Show me the final /content/ directory structure and the contents of each JSON file. I want to verify all the editable content was captured correctly before I run the dev server.Then run it:
npm install && npm run devOpen localhost:3000. It should look identical to the original clone. If anything looks off, just describe it to Claude ("the nav links are the wrong color" / "the hero image isn't full width") and it fixes the specific component.
Gotcha: CSS resets breaking Tailwind
After the migration, things might look slightly off — containers not centering, padding disappearing, buttons a bit too small. Before you spend 30 minutes debugging, check your global CSS for a reset like this:
* { margin: 0; padding: 0; box-sizing: border-box; }In Tailwind v4, raw CSS written outside of a @layer has higher cascade priority than Tailwind utility classes. That innocent reset silently overrides mx-auto, px-6, mt-4, and basically any spacing utility. The fix is one line:
@layer base {
* { margin: 0; padding: 0; box-sizing: border-box; }
}Wrapping it in @layer base puts it below Tailwind utilities in the cascade, so utilities always win.
Tailwind v4 already includes its own reset (Preflight), so a basic * { margin: 0; padding: 0 } is usually redundant — you can delete it entirely. But if the original site has custom global styles beyond a basic reset (custom selection colors, font smoothing, scroll-behavior: smooth, etc.), keep those and move them inside @layer base too.
Step 3: Edit content with prompts
This is where the workflow pays off. Content changes are now just plain-English instructions.
Changing copy
Change the hero headline to "Ship faster with AI" and the subheadline to "Everything you need, nothing you don't."Update all the pricing in the pricing section — Free plan stays, Pro plan is now $29/mo, Enterprise is "Contact us".Rewrite the features section descriptions to sound less corporate. Keep the same structure but make the tone more casual and direct.Swapping images
Replace the hero background image with /public/images/new-hero.jpg. Keep the same overlay and text positioning.Structural changes
Add a fourth feature card to the features section: title "Integrations", description "Connects to the tools you already use", icon is a plug icon.Remove the testimonials section entirely and move the CTA section up to fill the gap.The key habit: Be specific about what you want changed, but don't worry about file paths or component names. Claude knows the structure it built and finds the right place to make the edit.
Step 4: Add new pages
Adding a page is the same as editing content — just describe what you want. Claude creates the route, the content JSON, the component, and wires up the nav link.
Simple page
Add a /pricing page. It should match the visual style of the homepage. Include:
- A hero section with headline "Simple, transparent pricing" and a short subline
- Three pricing tiers: Free ($0), Pro ($29/mo), Enterprise (contact us)
- Each tier has: name, price, 5 feature bullet points, and a CTA button
- Add "Pricing" to the main nav
Store all the pricing data in /content/pricing.json.Blog or content section
Add a blog to this site. I want:
- A /blog listing page that shows article cards (title, date, short description, read time)
- Individual article pages at /blog/[slug]
- Articles stored as Markdown files in /content/blog/
- The design should match the rest of the site
Start with 2 placeholder articles so I can see how it looks.Landing page variant
Create a variant of the homepage at /lp/summer-sale — same structure as the homepage but with a different hero headline, a countdown timer showing 3 days, and a red banner at the top that says "Limited time: 40% off Pro". Don't add this to the nav — it's a landing page only.Step 5: Deploy to Vercel
Once the site is ready, push it to GitHub and connect it to Vercel. After the first setup, every push auto-deploys — and Claude can trigger deploys directly.
Push to GitHub
Create a GitHub repo for this project called "my-site", push the current code to it, and tell me the repo URL.Connect to Vercel
Go to vercel.com, import the repo, and deploy. Takes about 60 seconds. After that:
My site is live at my-site.vercel.app. From now on, after any changes I approve, commit them with a short message and push to main — Vercel will auto-deploy.If you have the Vercel MCP connected to Claude Code, you can also ask Claude to check deployment status, view build logs, and confirm the deploy went through — all without leaving your terminal.
Your ongoing workflow
Once the site is set up, the day-to-day is simple:
- Open Claude Code in your project. It already knows the full structure — no need to re-explain anything.
- Describe what you want. "Change the headline", "add a page", "update the pricing", "add a new testimonial from [person]". Claude finds the right file, makes the edit, and shows you the diff.
- Approve and deploy. Say "looks good, push it" and Claude commits the change and pushes to main. Vercel deploys automatically.
Useful prompts to keep handy
Show me all the content files and give me a summary of what's editable in each one.What pages does this site currently have?I want to A/B test two different hero headlines. Set up a simple way to toggle between them without deploying twice.Add an announcement bar at the top of every page with the text "Now in beta — sign up free". Make it easy to remove later.What this replaces
| Task | Traditional CMS | Claude Code |
|---|---|---|
| Edit a headline | Login → find field → save → wait for preview | "Change the hero headline to X" |
| Add a new page | Configure content type → fill fields → publish | Describe the page, Claude builds it |
| Add a new section type | Dev work + schema update + re-deploy | Just describe it |
| Bulk copy changes | Click through each field individually | "Update all CTAs to say X" |
| Version history | CMS revision history (if supported) | Full Git history |
Next steps: If you haven't cloned a site yet, start with the Clone Any Website guide — then come back here to make it dynamic.