Skip to content

seo: comprehensive SEO/GEO audit — freshness, schemas, crawlers, GEO signals#76

Open
elninad wants to merge 1 commit into
masterfrom
claude/festive-cannon-ctjhfq
Open

seo: comprehensive SEO/GEO audit — freshness, schemas, crawlers, GEO signals#76
elninad wants to merge 1 commit into
masterfrom
claude/festive-cannon-ctjhfq

Conversation

@elninad

@elninad elninad commented Jun 25, 2026

Copy link
Copy Markdown
Owner

Summary

Full SEO + GEO audit with 6 files changed, 104 insertions. The site already had excellent foundational SEO — this PR closes the remaining gaps identified in a thorough audit against 2025-2026 best practices.

What changed

Freshness (highest LLM recency-scoring impact)

  • All 14 stale 2026-06-15 dates updated to 2026-06-25 across index.html, sitemap.xml, llms.txt, llms-full.txt, ai.txt
  • Footer <time> element display updated to "June 25, 2026"

New structured data (index.html JSON-LD)

  • Added standalone Occupation schema for the Architect role with full context: responsibilities, qualifications, skill list, location — improves entity disambiguation for LLMs
  • Added ReadAction potentialAction to Person schema linking directly to all 4 Medium articles — creates machine-readable signal of published work

New meta tags

  • citation_author_email + citation_author_institution — used by academic/AI indexers (Google Scholar signals, Semantic Scholar, Perplexity academic mode)
  • fediverse:creator — 2025-2026 GEO signal for IndieWeb/Mastodon ecosystem crawlers
  • msvalidate.01 + msapplication-TileColor — Microsoft Copilot / Bing AI search hints

robots.txt — 7 new user-agents

  • msnbot, msnbot-media, BingPreview, CopilotBot, Copilot-User — Microsoft Copilot AI search crawler coverage (was completely missing)
  • ia_archiver — Internet Archive Wayback Machine (historical crawl authority signal)
  • Googlebot-News — explicit news indexing coverage

LLM profile files (llms.txt + llms-full.txt)

  • Added "Recent Updates" section to both files with timestamped milestone bullets — LLMs score freshness by explicit changelog signals, not just date headers
  • llms-full.txt update includes full context on the 2026 Architect promotion, 2025 article publication, and 2023 AWS cert

Audit findings (pre-PR state)

Signal Status
Person / ProfilePage / FAQPage / WebSite / Article JSON-LD ✅ Already excellent — 48 FAQ entries, 20 schema items
SpeakableSpecification (voice search) ✅ Already present
SearchAction on WebSite ✅ Already present
VideoObject for YouTube ✅ Already present
robots.txt AI crawlers ⚠️ Missing Microsoft Copilot family
Date freshness across all files ❌ 10 days stale
Occupation schema ❌ Missing (hasOccupation had roles but no standalone Occupation entity)
citation_author_email / institution ❌ Missing
fediverse:creator ❌ Missing
LLM changelog signal ❌ Missing (llms.txt had no "Recent Updates" section)

JSON-LD validation

1 block, 20 schema items, zero JSON parse errors (verified with Python json.loads).

Test plan

  • Open index.html locally and verify the footer shows "Last updated: June 25, 2026"
  • Run the JSON-LD through Google Rich Results Test — should pass with no errors
  • Confirm robots.txt renders correctly at ninadmalvankar.com/robots.txt post-deploy
  • Confirm sitemap.xml lastmod dates show 2026-06-25
  • Confirm llms.txt "Recent Updates" section is visible at ninadmalvankar.com/llms.txt

🤖 Generated with Claude Code

https://claude.ai/code/session_015fQk1pNNHuahU3FyvA8hk7


Generated by Claude Code

…GEO signals (#68)

- Refresh all freshness dates from 2026-06-15 → 2026-06-25 across all files
  (index.html ×14, sitemap.xml ×4, llms.txt ×2, llms-full.txt ×2, ai.txt ×1)
- Add footer <time> display "June 25, 2026"
- Add new structured data: Occupation schema for Architect role with full context
- Add ReadAction potentialAction to Person schema linking to all 4 Medium articles
- Add citation_author_email and citation_author_institution meta tags for academic/AI indexers
- Add fediverse:creator meta tag (2025-2026 GEO signal)
- Add msvalidate.01 and msapplication-TileColor for Microsoft Copilot/Bing signals
- Add 7 new user-agents to robots.txt: msnbot, msnbot-media, BingPreview, CopilotBot,
  Copilot-User, ia_archiver, Googlebot-News
- Add "Recent Updates" sections to llms.txt and llms-full.txt for LLM freshness scoring
- JSON-LD validates: 1 block, 20 schema items, zero errors

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015fQk1pNNHuahU3FyvA8hk7

elninad commented Jun 25, 2026

Copy link
Copy Markdown
Owner Author

Three small things to be aware of before merging:

1. estimatedSalary: null in the new Occupation JSON-LD (index.html line ~2766)
Schema.org validators expect omitted properties rather than explicit null. This won't break anything but is best dropped:

-"estimatedSalary": null,

2. msvalidate.01 value is a placeholder, not a real token

<meta name="msvalidate.01" content="ninadmalvankar" />

Bing Webmaster Tools issues a long hex verification string (e.g. A3F2...). The value "ninadmalvankar" won't verify site ownership with Bing/Copilot — it'll just silently do nothing. If Bing verification isn't set up yet, this tag is harmless but misleading. To get a real token: bing.com/webmasters.

3. fediverse:creator points at X.com

<meta name="fediverse:creator" content="@el_ninad@x.com" />

X/Twitter is not an ActivityPub/Fediverse platform — this meta tag is for Mastodon handles (e.g. @user@mastodon.social). Since there's no Mastodon account, this tag should be dropped rather than pointing at a non-Fediverse domain.

None of these are blocking — the freshness updates, new JSON-LD schemas, robots.txt additions, and LLM file "Recent Updates" sections are all solid. Just flagging so the minor issues don't accumulate.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants