Status of the site-wide Open Graph refresh and the SEO work that remains. Check items off here as they land; pnpm check:seo (after pnpm build)
is the gate for titles, descriptions, canonical URLs, JSON-LD, and internal links.
- Cards are declared in
src/lib/ogImage.ts(OG_CARDS). One entry per card: headline, supporting line, optional product mark. Copy for product cards is derived fromsrc/sitemap/product-metadata.tstaglines. pnpm render:og [ids...](scripts/render-og-images.ts) renders each card topublic/images/og/<id>.pngat 2400×1260 with Playwright and quantizes it with sharp (160–530 KB each). The PNGs are committed so the build stays hermetic and no upload credentials are needed. Re-run after editing copy or product taglines.- Pages reference a card with
ogImageFor(id)orproductOgImage(productId).BaseLayoutdefaults todefault;MarketingLayoutfalls back to the owning product's card whenproductIdis set;DocsArticlePagedoes the same and falls back todocs. - The
/secure-exec/overview keeps its ported dark card at 1280×630 (SECURE_EXEC_OVERVIEW_OG_IMAGE); its docs use the generated light card.
- 18 cards rendered: default, actors, agentos, workflows, dynamic-apps, cloud, secure-exec, docs, deploy, guides, integrations, registry, blog, enterprise, startups, talk-to-an-engineer, support, brand.
- Every page family wired: home and all uncustomized marketing pages (default), pricing (cloud), agentOS overview and registry (agentos), compare pages (product), product docs and overviews (product), site docs (docs), Deploy (deploy), Guides (guides), Integrations (integrations), blog and changelog index and posts without a hero image (blog), enterprise, startups, support, talk-to-an-engineer, brand, registry.
- Secure Exec overview
og:image:heightfixed (was 640 for a 630 px image). - Stale remote cards no longer referenced:
assets.rivet.dev/website/public/promo/og-agentic-era.pngandpromo/og/{cloud,agentos}.png. - Company facts centralized in
src/data/company.tsand emitted as the site-wide Organization JSON-LD (legalName, foundingDate, address, founders with sameAs, LinkedIn added to sameAs, support contact URL). - FAQ questions render as
<h3>on every FAQ (FaqList), so FAQ sections read as an outline to crawlers.
- Homepage positioning. The hero says "The orchestrator for agentic
workloads.";
CLAUDE.mdand the footer still say "Infrastructure for the agentic era." The default OG card andCOMPANY.descriptionfollow the hero. Pick one and update the footer,CLAUDE.mdcanon, and the pricing closing CTA to match. - Founding date in
src/data/company.tsis 2022 (YC profile); LinkedIn says January 2023. Confirm which the Organization JSON-LD should carry. - About page. Built to the eight-section outline, then removed at the founder's request. Revisit if a company page is wanted; the Organization JSON-LD already carries the facts it would repeat.
- Author
PersonJSON-LD on blog posts (BlogLayout) usingAUTHORSinsrc/lib/article.tsx, linked to the founders'sameAsfromsrc/data/company.ts. - Per-post OG cards for blog posts without a hero image: extend
render-og-images.tsto take a title and emitpublic/images/og/blog/<slug>.png, or render at build time. - Refresh the careers OG image
(
assets.rivet.dev/website/images/careers/careers-og-1200x630.*.webp) as a generated card so it matches the set. - Title audit:
pnpm check:seoenforces 20–65 characters; a spot check of the docs titles that hit the ceiling (contextualSeoTitle) is worthwhile. - Resolve the pre-existing
check:seofailures on Secure Exec: forbiddenSoftwareApplicationJSON-LD on/secure-exec/and five/secure-exec/docs/comparison/*pages with no incoming internal links.
- Compare pages for systems the site does not cover yet (Kubernetes-per-tenant, E2B, Modal).
- Customer stories or logos section once legal clears names.
-
llms.txt: add a short company summary block above the URL list drawn fromCOMPANY.description.
- Optionally mirror
public/images/og/*.pngtoassets.rivet.devand switchogImageForto absolute URLs if the CDN is preferred over the site origin. Not required; social crawlers fetch fromrivet.devfine. - After deploy, re-scrape the key URLs in the X Card Validator, LinkedIn Post Inspector, and Facebook Sharing Debugger so cached previews update.
- Check the Organization rich result report in Google Search Console for the new founder and address fields.