Repository navigation
GEO: make Trigenys Insights discoverable and citable by AI answer engines - #110
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
EagleFox31
force-pushed
the
claude/clarification-needed-k2rby5
branch
2 times, most recently
from
October 11, 2026 23:19
c7ae5c9 to
c8cc0f0
Compare
EagleFox31
force-pushed
the
claude/clarification-needed-k2rby5
branch
from
October 11, 2026 23:30
059d6c7 to
3e9ef30
Compare
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
force-pushed
the
claude/clarification-needed-k2rby5
branch
from
October 11, 2026 23:40
9f8709c to
3440aa4
Compare
This was referenced Oct 11, 2026
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
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:
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_linksBoth only create new tables (no change to existing columns);
downdrops them.Changes
P1 — discovery and trust
/llms.txtgenerated from published FR/EN posts (editorial guide + latest articles); new/llms-full.txtwith bounded full text, metadata and sources. Staticpublic/llms.txtremoved; cache tag invalidated by post hooks.citationin Article JSON-LD #102 Article JSON-LD exposes public research sources ascitation(bibliographic fields only, never registry notes).NewsMediaOrganizationwith description, Douala founding location, area served, topics andsameAsfrom the verified footer profiles (share/redirect links excluded).robots.txtnames AI crawlers explicitly (OAI-SearchBot, GPTBot, ClaudeBot, PerplexityBot, Google-Extended, …),/adminstill disallowed.P2 — citable content
abstract.FAQPageJSON-LD only when visible./{locale}/posts/{slug}.mdMarkdown rendition (metadata, takeaways, body, FAQ, sources),Link: rel=canonicalto the HTML article, advertised via<link rel="alternate" type="text/markdown">.ProfilePage+Person(jobTitle,knowsAbout,sameAs,worksFor).P3 — measurement
ai_referrerPostHog session property +ai_referral_landingevent for visits from AI answer engines; structuredai_crawler_hitlog lines for AI crawler requests. Documented indocs/analytics/editorial-analytics.md.Verification
pnpm test:unit: 113 tests pass (new:llms,answerContent,aiTraffic, extendedstructuredData,seoDiscovery);tsc --noEmitclean; eslint clean on changed files.mainschema (diff contained only the new tables) and applied locally./llms.txt,/llms-full.txt,.md(200 + correct 404s), article JSON-LD (abstract,citation,FAQPage, no internal notes), authorPersonJSON-LD (no email in HTML), takeaways/FAQ/author layouts at 1280px and 390px without horizental overflow, andai_crawler_hitlogs for GPTBot.Closes #101, closes #102, closes #103, closes #104, closes #105, closes #106, closes #107, closes #108, closes #109