feat(web): og:image, /pricing + FAQ schema, llms-full.txt, GitHub nav

More AEO audit fixes (the content-independent quick wins):

- Generated 1200x630 OpenGraph/Twitter card (app/opengraph-image.tsx);
  drop the SVG fallback and use summary_large_image.
- /pricing page with question-style headings and FAQPage JSON-LD; clarifies
  the spec/tooling is free and implementation is $250/week.
- /llms-full.txt — full markdown of the curated docs concatenated for
  large-context RAG ingestion.
- GitHub link added to both navs (SPA rail + SiteShell) and Pricing nav item;
  /pricing added to the sitemap.

Verified in a running build: og image renders as PNG and is referenced in
head; /pricing serves FAQ + schema; /llms-full.txt concatenates docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Anthony Ettinger 2026-06-08 12:51:51 +00:00
parent fb20fd2e99
commit 74abf8985f
7 changed files with 176 additions and 4 deletions

View file

@ -2,7 +2,7 @@ import type { ReactNode } from "react";
// Mirrors the rail/nav from page-markup.ts so standalone routes (e.g. /blog)
// share the site chrome. Anchor links point at the homepage sections.
const NAV: Array<{ href: string; label: string }> = [
const NAV: Array<{ href: string; label: string; external?: boolean }> = [
{ href: "/#overview", label: "Overview" },
{ href: "/#schemas", label: "Schemas" },
{ href: "/agent-swarm", label: "Soon" },
@ -12,8 +12,10 @@ const NAV: Array<{ href: string; label: string }> = [
{ href: "/docs", label: "Docs" },
{ href: "/blog", label: "Blog" },
{ href: "/openspec", label: "OpenSpec" },
{ href: "/pricing", label: "Pricing" },
{ href: "/hire-us", label: "Hire Us" },
{ href: "/about", label: "About" },
{ href: "https://github.com/profullstack/logicsrc", label: "GitHub ↗", external: true },
{ href: "/terms", label: "Terms" },
{ href: "/privacy", label: "Privacy" },
{ href: "/#reference", label: "Reference" },
@ -43,6 +45,8 @@ export function SiteShell({
href={item.href}
className={item.label === active ? "active" : undefined}
aria-current={item.label === active ? "page" : undefined}
target={item.external ? "_blank" : undefined}
rel={item.external ? "noreferrer" : undefined}
>
{item.label}
</a>