Skip to content

feat(seo): entity graph (SpokoDev↔Spoko Studio) + /process FAQ + llms.txt + AI-crawler allows#17

Merged
spokodev merged 1 commit into
mainfrom
feat/findability-entity-aeo
Jul 9, 2026
Merged

feat(seo): entity graph (SpokoDev↔Spoko Studio) + /process FAQ + llms.txt + AI-crawler allows#17
spokodev merged 1 commit into
mainfrom
feat/findability-entity-aeo

Conversation

@spokodev

@spokodev spokodev commented Jul 9, 2026

Copy link
Copy Markdown
Owner

Why

Findability pass so search and AI assistants resolve both the personal brand "SpokoDev" and the studio "Spoko Studio" back to this site — and so relevant service intent is answerable. The site's classic technical SEO was already strong; this adds the missing entity model + AEO surface. (Off-site actions — Search Console, Bing, LinkedIn, GBP — are tracked separately and owned by the user.)

Changes

Two-entity model (components/seo/json-ld.tsx)

  • Promote the founder from an inline Organization.founder to a first-class Person node: alternateName: ["SpokoDev","Spokodev"], worksFor/founderOf → Organization (which now references it by @id). Querying either name resolves to this site; SpokoDev = the person, Spoko Studio = the studio, linked — not conflated.

Authoritative SpokoDev page (/about)

  • New FounderProfileJsonLd → a self-contained ProfilePage → Person (+ Org stub) graph, the canonical pattern for a person's home page.

/process FAQ (schema + visible)

  • Wire the previously-dead FaqJsonLd and add a visible FAQ section (process.faq, EN+UK authored, 6 locales via DeepL). Questions target brand disambiguation ("What is Spoko Studio?", "Who is behind it?" → names Yaroslav/SpokoDev) and service/AEO intent (platforms, location, cost, timeline). Docstring corrected — FAQ rich results are gov/health-only now; value here is AEO + indexable Q&A.

AI discoverability

  • public/llms.txt — curated index (studio, SpokoDev, services, work, upstream, contact).
  • app/robots.ts — explicit allow for GPTBot / OAI-SearchBot / ChatGPT-User / ClaudeBot / PerplexityBot / Google-Extended / CCBot (deliberate welcome, guards against accidental future block).

Bug fix (found in QA)

  • Double arrow on the /process CTA and the contact success-screen CTA: the i18n label carried a literal while the button also renders an <ArrowRight> icon. Dropped the literal across all 8 locales. The Continue step button was never affected.

Verification

  • tsc --noEmit clean · eslint clean · next build green (168 pages) · translate:check 0 missing.
  • Rendered-HTML checks (local prod server): home graph has Person w/ alternateName SpokoDev + worksFor→Org; /about emits ProfilePage→Person; /process emits FAQPage (6 Questions) matching the visible section; /uk/process localized; robots.txt shows AI allows + sitemap; llms.txt served.
  • Visual: /process CTA now renders exactly 1 arrow.

🤖 Generated with Claude Code

…xt, AI-crawler allows

Findability pass. On-site levers so search + AI resolve both the personal
brand ("SpokoDev") and the studio ("Spoko Studio") to this site.

- json-ld: promote the founder to a first-class Person node with
  alternateName ["SpokoDev","Spokodev"] + worksFor/founderOf → Organization
  (Organization now references it by @id). Query either name → this site.
- /about: add FounderProfileJsonLd (ProfilePage → Person) — the
  authoritative SpokoDev page, self-contained graph.
- /process: wire the previously-dead FaqJsonLd + a visible FAQ section
  (new process.faq i18n, en+uk authored, 6 locales via DeepL) answering
  what/who/where/platforms/cost/timeline — brand disambiguation + AEO.
- public/llms.txt: curated AI index (studio, SpokoDev, services, work,
  upstream, contact).
- robots.ts: explicit allow for GPTBot/ClaudeBot/PerplexityBot/
  Google-Extended/etc — deliberate AI-crawler welcome.
- fix: double arrow on the /process CTA and the contact success-screen
  CTA — the i18n label carried a literal "→" while the button also renders
  an <ArrowRight> icon; drop the literal across all 8 locales.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@spokodev
spokodev merged commit 3ffc4b0 into main Jul 9, 2026
2 checks passed
@spokodev
spokodev deleted the feat/findability-entity-aeo branch July 9, 2026 13:33
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.

1 participant