背景
当前所有文档分享出去用的是 public/og/ 下的静态图——300+ 篇文档在微信/Twitter/Slack 里的卡片长得一模一样,点击率白白损失。仓库已有 compute-svg-bbox.mjs 这类图形处理脚本先例,具备工程基础。
方案
用 next/og(ImageResponse)加 opengraph-image.tsx 到 app/[locale]/docs/[...slug]/:
- 内容:文档标题 + 所属目录面包屑 + 站点 logo/吉祥物 + locale 标记
- 必须随 SSG 预生成(
generateStaticParams 覆盖的路径在 build 时产图),不能落成每次分享现算的动态函数——Vercel Hobby CPU 红线(见 dev_docs/vercel-cpu-overage-2026-05.md 教训)
- 中文渲染需自带字体子集(
next/og 默认无 CJK 字形),用 subset 后的开源中文字体(如思源黑体子集),控制在 1-2MB 内
验收
- 微信/Telegram/Twitter 卡片调试工具显示每篇文档独立卡片
pnpm build 时间增幅可接受(<30%),OG 路由在 build 表中为静态
- 无 CJK 豆腐块
背景
当前所有文档分享出去用的是
public/og/下的静态图——300+ 篇文档在微信/Twitter/Slack 里的卡片长得一模一样,点击率白白损失。仓库已有compute-svg-bbox.mjs这类图形处理脚本先例,具备工程基础。方案
用
next/og(ImageResponse)加opengraph-image.tsx到app/[locale]/docs/[...slug]/:generateStaticParams覆盖的路径在 build 时产图),不能落成每次分享现算的动态函数——Vercel Hobby CPU 红线(见dev_docs/vercel-cpu-overage-2026-05.md教训)next/og默认无 CJK 字形),用 subset 后的开源中文字体(如思源黑体子集),控制在 1-2MB 内验收
pnpm build时间增幅可接受(<30%),OG 路由在 build 表中为静态