17 SEO and AI-SEO Fixes, Shipped by Claude Code in One Session
Netsujo Inc. · Published April 17, 2026
Netsujo Inc. runs its own corporate site, netsujo.jp, on Next.js 16, Strapi v5, and Vercel across 115 pages. A routine Google Search Console (GSC) check turned up five problems at once: 53 pages stuck at "discovered, not indexed"; five structured-data warnings on a Product schema that did not fit a software product; 30 old URLs redirecting into 404s; unoptimized og:type and og:image on every blog post; and no clear picture of how the site was set up for AI crawlers such as GPTBot, ClaudeBot, and PerplexityBot. Rather than fixing each issue by hand, we used Claude Code, Anthropic's agentic coding tool, to run three parallel sub-agents (content SEO, technical SEO, and AI-SEO analysis), apply bulk code fixes, and wire up several external APIs — completing all 17 fixes in a single working session, against an estimated five business days for the same work done manually.
Key takeaways
- Three parallel sub-agents (content, technical, and AI-SEO analysis) completed 17 fixes across 115 pages in one session
- 53 pages moved from "discovered, not indexed" to a 147-URL bulk submission via the Indexing API; structured-data warnings went from 5 to 0; 30 broken redirects were fixed
- Repetitive work — a 540-instance color-code replacement, a 147-URL bulk submission — that would take about five business days manually was completed in a few hours
- AI crawler readiness (robots.txt, llms.txt, ai-plugin.json, an ai:description meta tag) is largely in place, but Wikidata registration still needs manual human work
- Positioning, design judgment, and the decision to publish stayed human calls; code fixes, API integration, and site-wide analysis were where the agent added the most value
The five problems GSC surfaced
- 53 pages sat at "discovered, not indexed" — crawled by Googlebot but not indexed, a mix of sitemap submission gaps, content depth, and thin internal linking
- Five structured-data warnings on a Product schema (invalid brand, missing merchant return policy, shipping details, review, and aggregate rating) — the root cause was applying a Product schema to a software product
- 30 old URLs were redirecting to a pattern that did not account for a "news-" prefix in the actual slugs, so they resolved to 404s
- og:type stayed "website" and og:image stayed a default image across every blog post, instead of "article" and the post's own image
- No systematic view of how the site was set up for AI search crawlers such as GPTBot, ClaudeBot, and PerplexityBot
Before and after
| Item | Before | After |
|---|---|---|
| Indexing | 53 pages not indexed | 147 URLs bulk-submitted (114 sitemap + 33 legacy URLs) via the Indexing API |
| Structured data | 5 warnings | 0 warnings — migrated Product to SoftwareApplication and removed retail-only fields |
| Redirects | 30 URLs hitting 404 | All 30 fixed (e.g. /nKkfwPVO/:slug now resolves to /blog/news-:slug, 308 to 200) |
| og:type | "website" (incorrect) | "article" (correct) — 42 dynamic + 20 static pages unified |
| og:image | default image | each article's own Cloudinary image, pulled automatically from Strapi's featuredImage |
| author | Organization | Person (the company's representative), strengthening individual expertise signals |
| H1s | left in English | localized (e.g. "Company" to a native-language heading) |
| CSP | 3 directives | 9 directives, including script-src, style-src, and img-src |
| /blog page size | 211KB (all posts loaded at once) | Load More pattern — 12 posts initially, then progressive loading |
| Internal links (services) | none | a "related content" section added to all 6 service pages |
| Internal links (blog) | 1-2 per post | 3 related-article links added to all 21 posts |
Effort versus manual work
The session covered 17 fixes across 100+ changed files and 2,000+ lines of code, run by 3 parallel agents. Doing the same work by hand would need roughly a day of SEO analysis, 2-3 days of code fixes, a day of API integration, and a day of testing — a minimum of five business days. Claude Code went from analysis to shipped code in a single session, with the largest gains coming from automating repetitive work: a 540-instance color-code replacement across 61 files, and the 147-URL bulk submission through the Indexing API.
Five reusable patterns
- Three-department parallel analysis — content SEO, technical SEO, and AI-SEO sub-agents crawled and analyzed the site independently, then merged results into one prioritized fix list in about five minutes
- Bulk code fixes (codemod) — a Python script replaced a color code across 61 files in one command, gated by a tsc --noEmit type check for safety
- External API integration — the Google Indexing API (114 sitemap URLs plus 33 legacy URLs), the Strapi CMS API (auditing every post's featured image, generating and attaching the 2 that were missing, then triggering ISR revalidation), the GSC URL Inspection API (diagnosing duplicate canonicals), and a Discord webhook (reporting every result) were all wired up in the same session
- Structured-data migration — moving from a Product to a SoftwareApplication schema, with the AI proposing the JSON-LD design and a human approving it, resolved all five GSC warnings at the root
- Root-cause tracing — a parallel health-check across all 115 sitemap URLs confirmed the site itself was fine, isolating the 404 issue to stale legacy URLs still indexed by Google; GSC's Search Analytics API then identified 79 orphaned URLs needing corrected redirect targets
Where AI-SEO stands
- robots.txt
- Done — 10 major AI search crawlers explicitly allowed (GPTBot, ClaudeBot, PerplexityBot, and others)
- llms.txt / llms-full.txt
- Done — structured text provided for AI consumption
- ai-plugin.json
- Done — a ChatGPT-plugin-compatible manifest
- ai:description meta tag
- Done — present on every page
- Text-to-HTML ratio
- 44-76%, well above the estimated 25-40% industry average
- E-E-A-T (/trust page)
- Done — affiliations and speaking history stated explicitly
- Wikidata
- Not yet registered — this still requires manual work and is an open AI-SEO gap
- author field
- Fixed — changed from Organization to a named Person
What stayed a human decision
- What Claude Code handled: bulk code fixes, external API automation, site-wide crawling and analysis, structured-data design, redirect fixes, type-check and build verification
- What stayed human: the positioning language used to describe the company, design choices (color, font, layout), the final go/no-go on publishing, Wikidata registration, waiting out GSC's reflection time, and interpreting any resulting ranking changes
Implementation took hours, but Google's indexing can take days to weeks to reflect. A Google Indexing API submission requests priority crawling — it does not guarantee indexing. Plan for at least two weeks of monitoring against GSC data before judging the effect of any of these fixes.
Web sales infrastructure for the search and generative AI era.
See Netsujo SIGNAL plans