Skip to content

DigiAssets’ Checklist for Building SEO Websites with Claude Code

Add us as a preferred source on Google

DigiAssets' full working checklist for building SEO sites and support sites with Claude Code. For agencies, SEO practitioners and business owners with a site.

Omri Kfir, DigiAssets team Omri Kfir · Updated · 18 min read
DigiAssets’ Checklist for Building SEO Websites with Claude Code
 

How Claude Code Builds SEO Sites for Our Agency: For Testing, Leads and Link Strengthening

Why does our agency build support sites? (And they’re not the support sites you’re thinking of)

At DigiAssets we build support sites all the time. But not quite support sites in the classic sense.

We build these sites for a few purposes:

  • Lead generation: sites that rank for keywords and bring in inquiries
  • Strengthening our link network as Tier 2: links that strengthen the links pointing to client sites
  • A testing ground: and this is the part that interests me most

That’s where we test SEO tactics I’m obviously not willing to try on client sites. Unusual things, completely different content structures, experiments with schema, with internal links. If they work, we roll them out to clients gradually. And if not? Well, it’s a support site. No harm done.

The problem: building a serious SEO site takes weeks.

Building a site like this properly takes time. A lot of time.

I’m talking about structure, content pages, internal links. Take a lawyer directory, for example: we want practice areas, cities, lawyer profiles, Q&A, guides. The whole thing. A serious site with thousands of internal links, dozens of pages, and a structure Google can actually work with.

This used to be a weeks-long project in WordPress and Elementor.

Gradually we started experimenting with vibe coding tools: Cursor, Base44, Lovable and others. Then Claude Code came along.

What Claude Code actually built for us

DigiAssets’ Checklist for Building SEO Websites with Claude Code

What you see in the image is the end of a build for an Israeli lawyer directory site. Complete.

  • 3,346 working links
  • 0 broken links
  • Built on our tight SEO guidelines
  • Visually checked on every page: hierarchy, sitemap, hero, logo, search bar, categories, cities, articles, FAQ and more

All green. Everything works. Everything is ready to upload to the server.

It’s not the code, it’s the process

And I’ll tell you what the real deal is here: it’s not that Claude Code wrote code for us. Anyone can get AI to write code.

The point is that we built a complete process. We give it the structure, the guidelines, what we want from an SEO standpoint, and it builds. Actually builds. Not “generates a template and you spend two weeks fixing it.”

It builds a site with thousands of internal links, a proper breadcrumbs structure, a sidebar, content cards, index pages, and at the end it runs a self-check and fixes whatever needs fixing.

Splitting the work across agents in Claude Code

It splits all of its tasks across different agents we defined for it:

  • SEO QA agent: checks meta tags, schema, heading hierarchy, broken links
  • Technical build agent: builds the HTML structure, pages, navigation and internal links
  • Content writing agent: produces unique content that fits the site’s subject area
  • Design agent: handles CSS, responsiveness, RTL and UI
  • And many more

How long does it take to build an SEO site with Claude Code?

It used to be a 2-3 week project. Now it takes a few hours, and a real person barely needs to be involved.

And I’m not talking about a half-baked site. I’m talking about a site where:

  • 59 redirects were fixed for broken links
  • A favicon was generated automatically for 60 pages that were missing one
  • Directory paths were fixed for 1,500+ links

All automated. All after testing.

Why does this matter to anyone doing SEO?

I still hear about plenty of agencies and site owners who build sites by hand, hire a developer for every small change, and still waste whole days on things that can be done in hours.

And it’s not about laziness. It’s simply about pace.

SEO is a field that demands a lot of testing. Whoever can run 10 tests while the competitor runs 1 will win. That’s just how it is.

Our checklist for building SEO sites with Claude Code

This whole process we run with Claude Code, from the moment we open a spec document until the site goes live with 0 broken links and 3,000+ working internal links, we’ve packed into one organized checklist.

Step by step: what to prepare in advance, how to split the work across agents in Claude Code, what to check technically, and how to do QA before launch.

Every site we build goes through this checklist.

Agency owners, business owners with a website, SEO specialists: this is for you. Scroll down a bit and use our full checklist. Copy and paste it into your Claude with the site name, niche and the domain you plan to build on, let it run on its own for an hour or two, and the result will surprise you.

So here it is: the DigiAssets checklist for building SEO sites with Claude Code

A step-by-step guide to building an SEO-optimized static site with Claude Code, from spec to final output review


User instructions: what to prepare before you start

Before you upload this checklist to Claude Code, prepare the following details and paste them in together with the document:

Required details

Site name in Hebrew: [e.g. פנלדין — פורטל עורכי דין (PneLeDin, a lawyer directory)]
Site name in English: [e.g. PneLeDin]
Domain: [e.g. pneledin.co.il]
Niche / field: [e.g. lawyers, buying an apartment, car insurance]
Site language: [Hebrew / English / bilingual]

Recommended details (the more you fill in, the more accurate the output)

Primary color: [e.g. #2563EB]
Secondary color: [e.g. #F59E0B]
Background color: [e.g. #FFFFFF]
Text color: [e.g. #1F2937]
Font: [e.g. Heebo / Assistant / Rubik]

Competitor site for reference: [URL]
Target audience: [e.g. people looking for a divorce lawyer]
Main categories: [e.g. family law, employment law, real estate law]
Cities (if relevant): [e.g. Tel Aviv, Jerusalem, Haifa, Beersheba]

How to use it: Copy this entire document plus the details you filled in above, and paste it into Claude Code. Claude Code will work through the steps one after another.


Instructions for Claude Code: start here

You are going to build an SEO-optimized static site from scratch. Work through the following steps in order. Don’t skip steps. Don’t build everything in a single command. At the end of each step, report to the user what was completed and ask whether to continue to the next step.


Step 1: Set up the project infrastructure

1.1 Create the folder structure

project-root/
├── index.html
├── css/
│   └── style.css
├── js/
│   └── main.js
├── pages/
│   ├── categories/
│   ├── articles/
│   ├── guides/
│   ├── locations/
│   └── legal/
├── assets/
│   ├── images/
│   └── icons/
├── sitemap.xml
├── robots.txt
├── manifest.json
└── favicon.ico

1.2 Define CSS variables

Define the variables at the top of the CSS file based on the details the user provided:

  • Colors: --primary, --secondary, --bg, --text, --text-light, --border, --card-bg
  • Fonts: --font-main with a sans-serif fallback
  • Weights: --fw-regular: 400, --fw-medium: 500, --fw-bold: 700, --fw-extra: 800
  • Spacing: --spacing-xs through --spacing-3xl
  • Radii: --radius-sm, --radius-md, --radius-lg, --radius-full
  • Shadows: --shadow-sm, --shadow-md, --shadow-lg
  • Transitions: --transition-fast: 0.2s ease, --transition-normal: 0.3s ease

1.3 CSS Reset + Typography

  • Apply a CSS reset (box-sizing, margin, padding)
  • Set up base typography: H1-H6 sizes, paragraphs, links
  • Define buttons: .btn-primary, .btn-secondary, .btn-outline
  • Define a responsive grid system: .grid-2, .grid-3, .grid-4
  • Define a card component: .card with a hover effect

1.4 Required checks at the end of this step

  • [ ] All CSS variables are defined and working
  • [ ] The CSS reset is working
  • [ ] The font loads from Google Fonts with font-display: swap and preconnect
  • [ ] The responsive grid works at 3 breakpoints: Desktop (~1024px), Tablet (~768px), Mobile (~480px)

Report to the user: “Step 1 complete: CSS infrastructure, fonts, grid system. Continue to step 2?”


Step 2: Header + footer + base template

2.1 Header

  • Build a fixed header (position: sticky) with:
    • Logo (the site name as text if there’s no logo), linked to the homepage
    • Main navigation menu with links to all hub pages
    • Hamburger menu for mobile with a smooth animation
    • Header changes style on scroll (class scrolled)
  • Add a hidden “skip to content” link (skip-link) that appears on focus

2.2 Footer

  • Build a footer with:
    • Logo + a short site description
    • Links to main pages (split into columns)
    • Contact details: phone, email, address
    • Social media buttons (inline SVG)
    • Credit line + terms of use + privacy policy

2.3 Base HTML template

Create an HTML template that every page will use, including:

<!DOCTYPE html>
<html lang="he" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>[Unique title] | [Site name]</title>
    <meta name="description" content="[Unique description, 120-160 characters]">
    <meta name="robots" content="index, follow">
    <link rel="canonical" href="[Full page URL]">

    <!-- Open Graph -->
    <meta property="og:title" content="[Title]">
    <meta property="og:description" content="[Description]">
    <meta property="og:image" content="[Image URL]">
    <meta property="og:url" content="[URL]">
    <meta property="og:locale" content="he_IL">

    <!-- Twitter -->
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="[Title]">
    <meta name="twitter:description" content="[Description]">

    <!-- Fonts -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=[FONT]:wght@400;500;700;800&display=swap" rel="stylesheet">

    <!-- Critical CSS inline -->
    <style>/* Critical CSS for Header + Hero */</style>

    <!-- Main CSS -->
    <link rel="stylesheet" href="/css/style.min.css">

    <!-- Favicon -->
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="manifest" href="/manifest.json">
</head>
<body>
    <a href="#main-content" class="skip-link">Skip to content</a>
    <header role="banner"><!-- Header --></header>
    <main id="main-content" role="main"><!-- Page content --></main>
    <footer role="contentinfo"><!-- Footer --></footer>

    <!-- JS -->
    <script src="/js/main.min.js" defer></script>
</body>
</html>

2.4 Basic JavaScript

Write the following functions in main.js:

  • Mobile Menu: open/close the hamburger menu
  • Scroll Header: add a scrolled class to the Header on scroll
  • FAQ Accordion: open/close questions and answers
  • Back-to-top: a back-to-top button that appears after scrolling
  • Counter Animation: number counters using IntersectionObserver
  • Fade-in Animation: elements animate in on scroll (IntersectionObserver)
  • Scroll listeners with passive: true

2.5 Required checks at the end of this stage

  • [ ] Header displays correctly on desktop and mobile
  • [ ] Hamburger menu opens and closes
  • [ ] Header changes style on scroll
  • [ ] Footer displays with all elements
  • [ ] Skip-link works
  • [ ] All JavaScript runs with no console errors
  • [ ] Semantic HTML: <header>, <nav>, <main>, <footer> with role and aria-label

Report to the user: “Stage 2 complete: Header, Footer, Template, basic JS. Continue to Stage 3?”


Stage 3: Homepage

3.1 Hero Section

  • H1 heading with the primary keyword
  • Description (paragraph) with a secondary keyword
  • Primary CTA button
  • Optional: search bar / form

3.2 Additional sections

  • Main categories: Cards Grid with SVG icons, a title, a short description, and a link to the category page
  • Number counters: 3-4 animated counters (IntersectionObserver)
  • Informational content: a section with relevant SEO copy
  • FAQ: 5-8 questions in an Accordion

3.3 Floating CTA

A fixed (floating) CTA button that stays visible while scrolling, without blocking content

3.4 Schema Markup (JSON-LD)

Add inside <script type="application/ld+json">:

[
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "[Site name]",
    "url": "[URL]",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "[URL]/search?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "[Site name]",
    "url": "[URL]",
    "logo": "[Logo URL]",
    "contactPoint": {
      "@type": "ContactPoint",
      "telephone": "[Phone]",
      "contactType": "customer service",
      "areaServed": "IL",
      "availableLanguage": "Hebrew"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "[Question]",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "[Answer]"
        }
      }
    ]
  }
]

3.5 Required checks at the end of this stage

  • [ ] Only one H1 on the page
  • [ ] Every category links to a page (even if the pages don’t exist yet, create a placeholder)
  • [ ] Counters work with animation
  • [ ] FAQ Accordion opens and closes
  • [ ] Floating CTA doesn’t block content
  • [ ] Valid Schema: check the JSON-LD structure
  • [ ] Meta tags: title, description, canonical, OG, Twitter

Report to the user: “Stage 3 complete: homepage with Hero, categories, counters, FAQ, Schema. Continue to Stage 4?”


Stage 4: Category pages (Hub Pages) + inner content pages

4.1 Hub page (main category page)

  • Page Header with H1 + description + Breadcrumbs
  • Card grid: each card links to an inner content page
  • Each card includes: icon/image, H2 heading, short description, link
  • Category-specific FAQ with schema

4.2 Inner content pages

Every inner page includes:

  • Page Header: unique H1 heading + Breadcrumbs
  • Content Layout: main content (70-75%) + Sidebar (25-30%)
  • Main content: in-depth copy with H2/H3, paragraphs, lists
  • Sidebar:
    • Quick navigation widget (links to pages in the same category)
    • CTA Box
    • Related links (cross-category)
  • Topic-specific FAQ with schema
  • Internal links: natural in-text links to other pages on the site

4.3 Cross-Linking

  • Every inner page links to 2-3 pages in other categories
  • Sidebar includes “Related topics” from different categories
  • Breadcrumbs: Home > Category > Current page

4.4 Schema Markup for every inner page

[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {"@type": "ListItem", "position": 1, "name": "Home", "item": "[URL]"},
      {"@type": "ListItem", "position": 2, "name": "[Category]", "item": "[Category URL]"},
      {"@type": "ListItem", "position": 3, "name": "[Current page]", "item": "[Current URL]"}
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [...]
  }
]

4.5 Required checks at the end of this stage

  • [ ] Every Hub Page links correctly to its inner pages
  • [ ] Every inner page: unique H1, unique meta title, unique meta description, canonical
  • [ ] Breadcrumbs work and link correctly
  • [ ] Sidebar displays correctly on desktop and drops below the content on mobile
  • [ ] Cross-linking: every page links to pages in other categories
  • [ ] Schema: BreadcrumbList + FAQPage on every page
  • [ ] No duplicate (copy-paste) content between pages

Report to the user: “Stage 4 complete: [X] category pages + [Y] inner pages. Continue to Stage 5?”


Stage 5: Location / GEO pages (if relevant)

Note: Skip this stage if the user didn’t specify cities/locations in the spec.

5.1 Cities Hub page

  • Page Header with H1 + description
  • City card grid
  • Each card: city name, short description, link to the city page

5.2 City pages

Every city page includes:

  • A unique H1 with the city name + niche (for example: “Lawyers in Tel Aviv”)
  • Location-specific content: not copy-paste with only the city name swapped
  • Links to relevant content categories
  • Sidebar with other cities
  • City-specific FAQ
  • Schema: BreadcrumbList + LocalBusiness (if relevant)

5.3 Cross-linking cities ↔ categories

  • Every city page links to relevant content categories
  • Every category page links to relevant cities
  • Sidebar: “More cities” + “Related practice areas”

5.4 Required checks at the end of this stage

  • [ ] Every city page: unique H1, unique content, unique meta tags
  • [ ] Cities ↔ categories cross-linking works
  • [ ] Valid Schema on every city page
  • [ ] No duplicate content between city pages

Report to the user: “Stage 5 complete: [X] city pages. Continue to Stage 6?”


Stage 6: Articles and guides

6.1 Articles Hub page

  • Page Header + H1
  • Article card grid: image/icon, title, date, excerpt, link

6.2 Article template

  • Page Header + Breadcrumbs
  • Publish date + author name
  • Table of contents (TOC) with Anchor Links, if the article is long
  • Copy with H2/H3, paragraphs, lists
  • Author Box at the bottom
  • “Related articles”: 3 relevant articles
  • Schema: Article + BreadcrumbList

6.3 Guide template

  • Same as an article, but with:
    • TOC with Anchor Links (required)
    • Split into chapters (an H2 for each chapter)
    • Highlighted tips (tip boxes)
    • CTAs between chapters
    • Schema: Article (subtype: Guide) + BreadcrumbList

6.4 Required checks at the end of this stage

  • [ ] Every article: unique H1, unique meta tags, unique content
  • [ ] TOC with Anchor Links works (links jump to their sections)
  • [ ] Author Box displays
  • [ ] “Related articles” link correctly
  • [ ] Schema: Article + BreadcrumbList on every article

Report to the user: “Stage 6 complete: [X] articles + [Y] guides. Continue to Stage 7?”


Stage 7: Support pages (About, Contact, FAQ, legal)

7.1 About page

  • Story, values, features (Features Grid)
  • Contact CTA

7.2 Contact page

  • Contact form (name, phone, email, message)
  • Contact Grid: phone, email, address
  • Map (Google Maps iframe or a placeholder)

7.3 Main FAQ page

  • FAQ search (real-time filtering)
  • Filter by category
  • Accordion for each question
  • Schema: FAQPage

7.4 Legal pages

  • Terms of use
  • Privacy policy
  • meta robots: noindex, follow

7.5 Required checks at the end of this stage

  • [ ] Contact form works (client-side validation)
  • [ ] FAQ search filters in real time
  • [ ] Legal pages set to noindex
  • [ ] FAQPage Schema on the main FAQ page

Report to the user: “Stage 7 complete: support pages. Continue to Stage 8?”


Stage 8: Technical SEO + files

8.1 sitemap.xml

Create a sitemap.xml with all the pages on the site:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>[Homepage URL]</loc>
    <lastmod>[Today's date in YYYY-MM-DD format]</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <!-- Hub Pages: priority 0.8 -->
  <!-- Content Pages: priority 0.6 -->
  <!-- Articles: priority 0.6 -->
  <!-- Location Pages: priority 0.5 -->
  <!-- Support Pages: priority 0.3 -->
</urlset>

8.2 robots.txt

User-agent: *
Allow: /
Disallow: /assets/
Sitemap: [URL]/sitemap.xml

8.3 manifest.json

{
  "name": "[Site name]",
  "short_name": "[Short name]",
  "start_url": "/",
  "display": "standalone",
  "background_color": "[Background color]",
  "theme_color": "[Primary color]",
  "icons": [
    {"src": "/favicon.ico", "sizes": "32x32", "type": "image/x-icon"}
  ]
}

8.4 llms.txt (optional)

Create an llms.txt file in the root directory that describes the site structure for AI models.

8.5 Required checks at the end of this stage

  • [ ] sitemap.xml includes every page on the site (count and verify)
  • [ ] robots.txt is valid
  • [ ] manifest.json is valid

Report to the user: “Stage 8 complete: technical files. Continue to Stage 9, final quality check?”


Stage 9: Final Quality Assurance (QA)

This is the most important stage. Go through every check one by one and fix every issue you find.

9.1 Internal link check

Go through every page and check:

  • [ ] All links in the main navigation (Header) work and point to the right page
  • [ ] All Footer links work
  • [ ] Breadcrumbs link correctly on every inner page
  • [ ] Cards link to the right pages
  • [ ] Sidebar links work and point to relevant pages
  • [ ] The logo returns to the homepage from every page
  • [ ] No broken links (404): check every single link

How to check: run a script that goes through all HTML files, extracts every href, and confirms each target file exists. Report to the user how many links are valid and how many are broken.

9.2 Content check

  • [ ] Unique content on every page (no copy-paste between pages)
  • [ ] Unique H1 headings: only one per page
  • [ ] Correct heading hierarchy: H1 → H2 → H3 (don’t skip levels)
  • [ ] Consistent contact details across the whole site

9.3 Meta Tags check

Go through every page and check:

  • [ ] Unique <title> on every page (50-60 characters, keyword at the start)
  • [ ] Unique meta description on every page (120-160 characters)
  • [ ] Correct canonical on every page
  • [ ] og:title, og:description, og:url are set
  • [ ] meta robots: index, follow for public pages, noindex for legal pages

9.4 Schema check

  • [ ] Valid Schema JSON-LD (no syntax errors)
  • [ ] Homepage: WebSite + Organization + FAQPage
  • [ ] Inner pages: BreadcrumbList + FAQPage
  • [ ] Articles: Article + BreadcrumbList
  • [ ] Cities: BreadcrumbList (+ LocalBusiness if relevant)

9.5 Design and responsiveness check

  • [ ] Correct RTL: everything right-aligned, borders on the correct side
  • [ ] Consistent colors that match the brand palette
  • [ ] Sidebar drops below the main content on mobile
  • [ ] Grid goes from 3/4 columns to 2, then to 1 on mobile
  • [ ] Text sizes adjusted for mobile
  • [ ] Floating CTA doesn’t block content

9.6 Functionality check

  • [ ] Hamburger menu opens and closes properly
  • [ ] FAQ Accordion works
  • [ ] Back-to-top button appears and works
  • [ ] Counters work with animation
  • [ ] Fade-in animations work on scroll
  • [ ] Header changes style on scroll
  • [ ] FAQ search filters in real time (if present)

9.7 Performance check

  • [ ] CSS and JS are minified (.min.css / .min.js)
  • [ ] Critical CSS inline in a <style> tag at the top of every page
  • [ ] JavaScript with defer
  • [ ] Icons as inline SVG
  • [ ] Scroll listeners with passive: true
  • [ ] No JavaScript errors in the console

9.8 Technical files check

  • [ ] sitemap.xml: all pages exist and the URLs match
  • [ ] robots.txt: valid and points to the sitemap
  • [ ] manifest.json: valid
  • [ ] Favicon shows in the browser tab

9.9 Final report

When the check is done, show the user a summary report:

===== Final QA Report =====

📊 Total pages: [number]
🔗 Valid links: [number]
❌ Broken links: [number]
🔗 External links: [number] (structure checked, not)

📝 Meta Tags:
   - Unique Title: ✅/❌
   - Unique Description: ✅/❌
   - Canonical: ✅/❌
   - OG Tags: ✅/❌

📐 Schema:
   - WebSite: ✅/❌
   - Organization: ✅/❌
   - BreadcrumbList: ✅/❌
   - FAQPage: ✅/❌
   - Article: ✅/❌

🎨 Design:
   - RTL: ✅/❌
   - Responsiveness: ✅/❌
   - Floating CTA: ✅/❌

⚡ Performance:
   - CSS/JS minified: ✅/❌
   - Critical CSS inline: ✅/❌
   - Console errors: ✅/❌

📁 Technical files:
   - sitemap.xml: ✅/❌
   - robots.txt: ✅/❌
   - manifest.json: ✅/❌
   - favicon: ✅/❌

🚀 The site is ready to upload to the server!

Report to the user: “QA check complete. Here is the report: [report]. The site is ready to upload!”


Ironclad rules: always follow them

  1. One H1 per page: never two
  2. Unique content: no copy-paste between pages, not even on city pages
  3. Every link must work: check before moving on
  4. Schema on every page: at least BreadcrumbList on inner pages
  5. Unique meta tags: a different title + description on every page
  6. RTL: always dir="rtl" and lang="he" (unless the site is in English)
  7. Responsiveness: every page must work on Desktop, Tablet and Mobile
  8. Performance: CSS/JS minified, Critical CSS inline, defer on JS
  9. Don’t build everything at once: stage by stage, with a check after each stage
  10. Report to the user: at the end of each stage, give a summary and wait for approval

Built by DigiAssets · an SEO agency leading innovation

Share this article: WhatsApp LinkedIn Facebook X

Want us to do this for you?

DigiAssets helps businesses rank on Google and get cited by AI engines like ChatGPT and Gemini. No generic packages, and reporting that ties every action to a result.

Skip to content