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

@ -24,13 +24,11 @@ export const metadata: Metadata = {
url: SITE_URL,
title: "LogicSRC — Open Coordination Standards for Humans & AI Agents",
description: DESCRIPTION,
images: ["/icon.svg"],
},
twitter: {
card: "summary",
card: "summary_large_image",
title: "LogicSRC — Open Coordination Standards",
description: DESCRIPTION,
images: ["/icon.svg"],
},
};

View file

@ -0,0 +1,32 @@
import { DOC_SLUGS, docTitle, readDoc } from "@/lib/docs";
const SITE_URL = (process.env.PUBLIC_URL ?? "https://logicsrc.com").replace(/\/$/, "");
// GET /llms-full.txt — full markdown of every curated doc concatenated into a
// single response, so large-context models can ingest the whole reference at
// once (https://llmstxt.org).
export function GET(): Response {
const parts: string[] = [
"# LogicSRC — Full Documentation",
"",
"> Open schemas, primitives, and conventions for coordination between humans, AI agents, plugins, payment systems, and hosted products. A Profullstack, Inc. open-specification project.",
"",
`Source: ${SITE_URL}`,
"",
];
for (const slug of DOC_SLUGS) {
const md = readDoc(slug);
if (!md) continue;
parts.push(`\n---\n\n## ${docTitle(md, slug)} (${SITE_URL}/docs/${slug})\n`);
parts.push(md.trim());
parts.push("");
}
return new Response(parts.join("\n"), {
headers: {
"content-type": "text/plain; charset=utf-8",
"cache-control": "public, max-age=3600",
},
});
}

View file

@ -0,0 +1,54 @@
import { ImageResponse } from "next/og";
export const alt = "LogicSRC — Open Coordination Standards for Humans & AI Agents";
export const size = { width: 1200, height: 630 };
export const contentType = "image/png";
// Branded 1200×630 social card generated at build/request time.
export default function OpengraphImage() {
return new ImageResponse(
(
<div
style={{
width: "100%",
height: "100%",
display: "flex",
flexDirection: "column",
justifyContent: "center",
backgroundColor: "#101418",
color: "#f6f7f4",
padding: "80px",
fontFamily: "sans-serif",
}}
>
<div style={{ display: "flex", alignItems: "center", gap: "24px" }}>
<div
style={{
display: "flex",
alignItems: "center",
justifyContent: "center",
width: "96px",
height: "96px",
border: "3px solid #5ac8a6",
borderRadius: "16px",
color: "#5ac8a6",
fontSize: "44px",
fontWeight: 800,
}}
>
LS
</div>
<div style={{ fontSize: "72px", fontWeight: 800 }}>LogicSRC</div>
</div>
<div style={{ marginTop: "40px", fontSize: "38px", color: "#b5beb2", lineHeight: 1.3 }}>
Open schemas, primitives, and conventions for coordination between
humans, AI agents, plugins, and hosted products.
</div>
<div style={{ marginTop: "auto", fontSize: "28px", color: "#5ac8a6" }}>
logicsrc.com
</div>
</div>
),
size,
);
}

View file

@ -0,0 +1,81 @@
import type { ReactNode } from "react";
import type { Metadata } from "next";
import { SiteShell } from "@/components/site-shell";
export const metadata: Metadata = {
title: "Pricing · LogicSRC",
description:
"LogicSRC the open specification, schemas, SDKs, and CLI are free and open source. Implementation help is $250/week for accepted work, paid via CoinPay.",
alternates: { canonical: "/pricing" },
};
const FAQ: Array<{ q: string; a: string }> = [
{
q: "Is LogicSRC free?",
a: "Yes. The LogicSRC specification, JSON schemas, SDKs, CLI, TUI, and reference plugins are open source and free to use under the project license. There is no license fee to implement the standard.",
},
{
q: "How does pricing work?",
a: "The standard is free. If you want Profullstack to build a LogicSRC-based system for you, implementation work is billed at $250/week for accepted work, paid via a CoinPay recurring invoice.",
},
{
q: "Who is LogicSRC for?",
a: "Engineering and AI-platform teams building systems where humans and AI agents coordinate — boards, tasks, agent runs, identity, payments, and audit — without locking into a single vendor's proprietary platform.",
},
{
q: "How do I pay or get started?",
a: "Read the docs and adopt the schemas for free, or submit a project through the Hire Us form. Accepted projects are invoiced weekly via CoinPay.",
},
];
export default function PricingPage(): ReactNode {
const jsonLd = {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: FAQ.map((item) => ({
"@type": "Question",
name: item.q,
acceptedAnswer: { "@type": "Answer", text: item.a },
})),
};
return (
<SiteShell active="Pricing">
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<article className="band" style={{ maxWidth: "48rem" }}>
<div className="section-head">
<h2>Pricing</h2>
<p>
The LogicSRC specification and tooling are open source and free. You
only pay if you want us to build it for you.
</p>
</div>
<div className="blog-content" style={{ lineHeight: 1.7, marginTop: "1rem" }}>
<ul>
<li>
<strong>Standard &amp; tooling $0.</strong> Spec, schemas, SDKs,
CLI, TUI, and reference plugins are open source.
</li>
<li>
<strong>Implementation $250/week.</strong> Profullstack builds
LogicSRC-based systems for accepted projects, billed weekly via
CoinPay. See <a href="/hire-us">Hire Us</a>.
</li>
</ul>
<h3>Frequently asked questions</h3>
{FAQ.map((item) => (
<div key={item.q}>
<h4>{item.q}</h4>
<p>{item.a}</p>
</div>
))}
</div>
</article>
</SiteShell>
);
}

View file

@ -21,6 +21,7 @@ const STATIC_ROUTES: Array<{
{ path: "/agentbyte", changeFrequency: "weekly", priority: 0.8 },
{ path: "/credential-sharing", changeFrequency: "weekly", priority: 0.8 },
{ path: "/hire-us", changeFrequency: "weekly", priority: 0.8 },
{ path: "/pricing", changeFrequency: "monthly", priority: 0.7 },
{ path: "/blog", changeFrequency: "daily", priority: 0.7 },
{ path: "/about", changeFrequency: "monthly", priority: 0.6 },
{ path: "/terms", changeFrequency: "monthly", priority: 0.4 },

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>

View file

@ -128,8 +128,10 @@ export function renderPageMarkup(): string {
<a href="/docs">Docs</a>
<a href="/blog">Blog</a>
<a href="/openspec">OpenSpec</a>
<a href="/pricing">Pricing</a>
<a href="/hire-us">Hire Us</a>
<a href="/about">About</a>
<a href="https://github.com/profullstack/logicsrc" target="_blank" rel="noreferrer">GitHub </a>
<a href="/terms">Terms</a>
<a href="/privacy">Privacy</a>
<a href="#reference">Reference</a>