Catalog / patelharsh.dev
69

SEO audit for patelharsh.dev

Harsh Patel — AI-native platform engineering, deployed to your org

saasNext.js

Health 69/100 (fair) · 24 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)

Harsh Patel builds and operates AI-native platforms, production CI/CD systems, and cloud infrastructure.

Screenshot of patelharsh.dev
24
pages crawled
21
indexable pages
0
errors
31
warnings
103
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Canonical 74 0 21 0
Content 93 0 6 13
Duplicate 95 0 4 3
Agent Readiness 100 0 0 1
Links 100 0 0 5
Meta Description 100 0 0 9
Performance 100 0 0 21
Security 100 0 0 21
Structured Data 100 0 0 18
Titles 100 0 0 12
Findings

Warnings (4 rules)

warning Thin content (low word count)

Rule content.thin · Content · 6 occurrence(s)

warning Homepage duplicated across protocol/host variants (no redirect)

Rule duplicate.protocol_host · Duplicate · 1 occurrence(s)

  • https://patelharsh.dev/ — https://www.patelharsh.dev/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.

warning Duplicate <title> across pages

Rule duplicate.title · Duplicate · 3 occurrence(s)

Notices (12 rules)

notice No main landmark for AI agents

Rule agent.no_main_landmark · Agent Readiness · 1 occurrence(s)

notice Low text-to-HTML ratio

Rule content.low_ratio · Content · 6 occurrence(s)

notice Main text is hard to read (low Flesch Reading Ease)

Rule content.readability_poor · Content · 7 occurrence(s)

  • https://patelharsh.dev/ — this page reads as difficult (Flesch Reading Ease 48, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://patelharsh.dev/changelog — this page reads as difficult (Flesch Reading Ease 44, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://patelharsh.dev/docs — this page reads as difficult (Flesch Reading Ease 35, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://patelharsh.dev/fit — this page reads as difficult (Flesch Reading Ease 39, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://patelharsh.dev/status — this page reads as very difficult (Flesch Reading Ease 12, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://patelharsh.dev/writing/code-search-for-agents — this page reads as difficult (Flesch Reading Ease 48, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://patelharsh.dev/writing/i-productized-myself — this page reads as difficult (Flesch Reading Ease 48, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.

notice Duplicate meta description across pages

Rule duplicate.meta_desc · Duplicate · 3 occurrence(s)

notice Page has only one internal inlink (fragile crawl path)

Rule links.single_inlink · Links · 5 occurrence(s)

notice No Last-Modified header (no conditional GET for unchanged pages)

Rule perf.no_last_modified · Performance · 21 occurrence(s)

  • https://patelharsh.dev/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/changelog — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/chat — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/contact — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/agent-delegation — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/build-triage — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/code-search — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/open-brain — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/planner — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/release-engineering — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/research-capture — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/this-site — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/docs/token-dashboard — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/fit — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/mcp — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/status — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/writing — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/writing/code-search-for-agents — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/writing/i-productized-myself — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://patelharsh.dev/writing/teaching-an-agent-to-triage — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.

notice Article schema missing recommended properties (Top Stories / image carousel)

Rule schema.article_incomplete · Structured Data · 3 occurrence(s)

  • https://patelharsh.dev/writing/code-search-for-agents — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://patelharsh.dev/writing/i-productized-myself — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://patelharsh.dev/writing/teaching-an-agent-to-triage — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.

notice Deep page has no BreadcrumbList structured data

Rule schema.breadcrumb_missing · Structured Data · 7 occurrence(s)

notice Missing recommended security headers

Rule security.missing_headers · Security · 21 occurrence(s)

notice Title tag is identical to the H1 (missed keyword variation)

Rule title.same_as_h1 · Titles · 12 occurrence(s)

Pages (showing 24 of 24)
URLStatusIndexableWordsIn-links
https://patelharsh.dev/
Harsh Patel — AI-native platform engineering, deployed to your org
200 yes 567 21
https://patelharsh.dev/changelog
Changelog — Harsh Patel
200 yes 122 21
https://patelharsh.dev/chat
Chat — Harsh Patel
200 yes 112 21
https://patelharsh.dev/contact
Contact — Harsh Patel
200 yes 76 21
https://patelharsh.dev/docs
Harsh Patel — AI-native platform engineering, deployed to your org
200 yes 585 21
https://patelharsh.dev/fit
Fit Report — Harsh Patel
200 yes 104 21
https://patelharsh.dev/status
Status — Harsh Patel
200 yes 104 21
https://patelharsh.dev/writing
Harsh Patel — AI-native platform engineering, deployed to your org
200 yes 151 21
https://patelharsh.dev/docs/build-triage
Build Failure Triage — an Agent Skill over Jenkins
200 yes 1657 5
https://patelharsh.dev/docs/release-engineering
Release Engineering — The Pipeline as the Single Source of Truth
200 yes 1843 5
https://patelharsh.dev/mcp
MCP Server — Harsh Patel
200 yes 332 2
https://patelharsh.dev/writing/i-productized-myself
I Productized Myself: The Architecture of This Site
200 yes 2386 3
https://patelharsh.dev/writing/code-search-for-agents
Code Search for Agents: Zoekt on EKS
200 yes 2175 2
https://patelharsh.dev/writing/teaching-an-agent-to-triage
Teaching an Agent to Triage: Automating First-Level Build Failure Analysis
200 yes 2575 2
https://patelharsh.dev/docs/code-search
Code Search for Agents — Zoekt over EFS
200 yes 1205 2
https://patelharsh.dev/docs/open-brain
Open Brain — Personal Semantic Memory over MCP
200 yes 2090 2
https://patelharsh.dev/docs/agent-delegation
Agent Delegation — One Executor, Cheap Specialist Lanes
200 yes 2983 1
https://patelharsh.dev/docs/planner
Agentic Planner — Three Sub-Agents over Markdown
200 yes 2607 1
https://patelharsh.dev/docs/research-capture
Research Capture — An Agentic Archival Pipeline
200 yes 2232 1
https://patelharsh.dev/docs/this-site
The Architecture of This Site
200 yes 1685 1
https://patelharsh.dev/docs/token-dashboard
Token Dashboard — Local Telemetry for AI Spend
200 yes 2340 1
https://patelharsh.dev/llms.txt 200 no 0 21
https://patelharsh.dev/resume.json 200 no 0 21
https://patelharsh.dev/rss.xml 200 no 0 21

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →