Skip to content

GEO: make Trigenys Insights discoverable and citable by AI answer engines - #110

Merged
EagleFox31 merged 8 commits into
mainfrom
claude/clarification-needed-k2rby5
Oct 11, 2026
Merged

EagleFox31 merged 8 commits into
mainfrom
claude/clarification-needed-k2rby5

Conversation

@EagleFox31

@EagleFox31 EagleFox31 commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Summary

Implements the GEO epic #100: make the publication easy for AI answer engines (ChatGPT search, Perplexity, Gemini / AI Overviews, Claude, Copilot) to discover, understand, trust and cite — and measure the result.

⚠️ Deployment: run migrations first

This PR adds two Payload migrations. Migrations are not run by the build, so apply them with the direct connection before this code serves traffic (Preview DB included), otherwise post and user queries will fail on the missing tables:

pnpm db:migrate
  • 20261011_232139_add_post_answer_fields — posts_key_takeaways, posts_faq (+ version tables)
  • 20261011_232733_add_author_public_profile — users_locales, users_texts, users_profile_links

Both only create new tables (no change to existing columns); down drops them.

Changes

P1 — discovery and trust

P2 — citable content

P3 — measurement

Verification

  • pnpm test:unit: 113 tests pass (new: llms, answerContent, aiTraffic, extended structuredData, seoDiscovery); tsc --noEmit clean; eslint clean on changed files.
  • Both migrations generated against a database at the current main schema (diff contained only the new tables) and applied locally.
  • Exercised on a local dev server with a seeded FR/EN post and author: /llms.txt, /llms-full.txt, .md (200 + correct 404s), article JSON-LD (abstract, citation, FAQPage, no internal notes), author Person JSON-LD (no email in HTML), takeaways/FAQ/author layouts at 1280px and 390px without horizental overflow, and ai_crawler_hit logs for GPTBot.

Closes #101, closes #102, closes #103, closes #104, closes #105, closes #106, closes #107, closes #108, closes #109

@vercel

vercel Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
trigenys-insight Ready Ready Preview Oct 11, 2026 11:41pm UTC

@EagleFox31
EagleFox31 force-pushed the claude/clarification-needed-k2rby5 branch 2 times, most recently from c7ae5c9 to c8cc0f0 Compare October 11, 2026 23:19
@EagleFox31
EagleFox31 force-pushed the claude/clarification-needed-k2rby5 branch from 059d6c7 to 3e9ef30 Compare October 11, 2026 23:30
@EagleFox31 EagleFox31 changed the title Add LLMs.txt support for AI answer engines and crawlers GEO: make Trigenys Insights discoverable and citable by AI answer engines Oct 11, 2026
…ntity

Article JSON-LD now lists populated public research sources as schema.org
citations (bibliographic fields only). The publisher node becomes a
NewsMediaOrganization with description, Douala founding location, area
served, topics and an opt-in sameAs list.

Closes #102
Closes #103
Replace the static llms.txt with a cached route that keeps the editorial
guide and lists the latest routable FR/EN articles. Add llms-full.txt with
plain-text bodies, metadata and public sources of recent articles within a
character budget. Post hooks invalidate the cache tag.

Closes #101
Reuse the footer's verified profile URLs and skip share/redirect links.

Refs #103
Posts gain two optional localized arrays in a new "Réponses clés" tab:
keyTakeaways (up to 5) and faq (up to 8 question/answer pairs). Takeaways
replace the automatic quick-read highlights and become the Article
abstract; FAQ renders at the end of the article and emits FAQPage JSON-LD
only when visible. Includes the migration for the new array tables.

Closes #105
Closes #106
/{locale}/posts/{slug}.md returns metadata, takeaways, body, FAQ and public
sources as text/markdown with a canonical Link header to the HTML article,
which advertises it through rel=alternate. llms-full.txt shares the same
renderer and now includes authors, takeaways and FAQ.

Closes #107
Users gain an explicit public profile (localized job title, short bio,
expertise topics, https profile links), read server side with a narrow
select so private user data never reaches the page. The author page shows
the profile and emits ProfilePage + Person with jobTitle, description,
knowsAbout, sameAs and worksFor. The bio also becomes the meta description.
Includes the migration for the new user tables.

Closes #108
Classify landing referrers and utm_source from AI answer engines right
after PostHog init: register the ai_referrer session property and capture
one ai_referral_landing event. Log one structured ai_crawler_hit line per
known AI crawler request in the proxy and in the llms/Markdown handlers.
Document both signals in the editorial analytics guide.

Closes #109
@EagleFox31
EagleFox31 force-pushed the claude/clarification-needed-k2rby5 branch from 9f8709c to 3440aa4 Compare October 11, 2026 23:40
@EagleFox31
EagleFox31 merged commit 33b1757 into main Oct 11, 2026
3 checks passed
EagleFox31 added a commit that referenced this pull request Oct 12, 2026
Author profile pages added in #110 were linked from articles but absent
from every sitemap. Each locale now advertises the authors who sign at
least one renderable article, with the latest article date as lastmod.
Post changes invalidate the pages sitemap, and the daily crawl smoke now
checks the pages sitemap and one author profile per locale.

This branch was successfully deployed

1 active deployment
Preview — 3440aa4f Deployed Oct 11, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment