feat(website): generated Open Graph cards and Organization JSON-LD - #102
Conversation
Replace the stale remote promo OG images with a set of 18 cards rendered from `src/lib/ogImage.ts` by `pnpm render:og` (Playwright + sharp) into `public/images/og/`. Cards sit on the site's porcelain surface in Manrope with the Rivet wordmark or product mark; the default card carries the Thinker cutout used on the talk-to-an-engineer hero. Every page family resolves a card: BaseLayout defaults to `default`, MarketingLayout and DocsArticlePage fall back to the owning product's card, and pricing, deploy, guides, integrations, blog, changelog, enterprise, startups, support, talk-to-an-engineer, brand, and registry pick theirs explicitly. The Secure Exec overview keeps its ported dark card with the corrected 630 px height. Centralize company facts in `src/data/company.ts` and emit them as the site-wide Organization JSON-LD (legal name, address, founders with sameAs, support contact). FAQ questions now render as <h3>. SEO_PLAN.md records what shipped and what remains. Co-authored-by: Nicholas Kissel <nicholas@rivet.gg> Amp-Thread-ID: https://ampcode.com/threads/T-1196e8e4-59f8-4f3a-9824-62be43fdf8f7 Co-authored-by: Amp <amp@ampcode.com>
|
🚅 Deployed to the website-pr-102 environment in rivet-website
|
| export const OG_CARDS: OgCard[] = [ | ||
| { | ||
| id: "default", | ||
| headline: "The orchestrator for agentic workloads.", |
There was a problem hiding this comment.
🟠 Medium · Use the canonical company positioning in site-wide metadata
This default card is now the preview for every page without an explicit card, but its headline uses the generic “orchestrator for agentic workloads” positioning that CLAUDE.md explicitly prohibits for public-facing copy and replaces with “Rivet enables stateful workloads to run forever.” The same prohibited positioning is also newly published in COMPANY.description, so it is emitted in the Organization JSON-LD on every page. Use the canonical tagline/description in both metadata sources (or update the repository convention in the same approved copy change) before shipping these generated cards.
Summary
public/images/og/, rendered fromsrc/lib/ogImage.tsbypnpm render:og(Playwright + sharp). Cards use the site's porcelain surface, Manrope, and the Rivet wordmark or product mark; the default card carries the Thinker cutout from the talk-to-an-engineer hero.BaseLayoutdefaults todefault;MarketingLayoutandDocsArticlePagefall back to the owning product's card; pricing, deploy, guides, integrations, blog/changelog, enterprise, startups, support, talk-to-an-engineer, brand, and registry pick theirs explicitly. Secure Exec overview keeps its ported dark card with the corrected 630 px height.src/data/company.tsand emits them as site-wide Organization JSON-LD (legal name, address, founders withsameAs, support contact).<h3>inFaqList.SEO_PLAN.mdrecords what shipped and the open items (positioning canon, founding date, remaining metadata work).Verification
pnpm build: 386 pages, exit 0.pnpm check:seo: passes except the 6 pre-existing/secure-exec/findings (forbiddenSoftwareApplicationJSON-LD; 5 comparison pages with no inbound links), untouched here.Notes
An
/about/page was built and then removed at the founder's request before this PR; the Organization JSON-LD carries the facts it would have repeated.