Skip to content

docs: 文档站改为自己的品牌、真域名与按页 meta - #5

Merged
jacob-bytes merged 1 commit into
mainfrom
chore/site-branding-and-meta
Sep 26, 2026
Merged

jacob-bytes merged 1 commit into
mainfrom
chore/site-branding-and-meta

Conversation

@jacob-bytes

Copy link
Copy Markdown
Collaborator

产品显示名 monitor → Spot Monitor(仓库名、安装命令、镜像名一律不动),并把站点地址从上游那个 pages.dev 改成实际部署的域。

站已经上线了

https://spot-probe-docs.hualala.workers.dev(Worker,不是 Pages)。src/site.ts 里的 SITE 原先写的是 https://monitor-document.pages.dev —— 那是上游的站,而且全局零引用(死常量)。现在它是 canonical / og:url 的唯一来源。

改了 8 个文件

文件 改动
src/site.ts SITE → 真域名
src/meta.ts(新增) 每个路由的标题/描述只写一份
index.html 新品牌文案 + 补上原先完全缺失的 meta
scripts/prerender.mjs 按路由填充 title/desc/canonical/og
src/components/Header.tsx 桌面 + 移动抽屉两处品牌字
public/favicon.svg 换成主题那枚蓝渐变标记
src/App.tsx · src/entry-server.tsx 改用 metaOf(),不再各写一份标题

为什么要抽 src/meta.ts

标题原先在两处各写了一遍:App.tsx:22(客户端跳转时改 document.title)和 entry-server.tsx(预渲染时写 <title>)。改一处就会出现「首屏标题和跳转后标题不一样」。现在两端都读 metaOf(path),域名同理只有 src/site.ts 一份。

meta 从 0 个补到齐

index.html 原先 og: / twitter: / canonical / theme-color 命中数是 0 —— 分享出去没有任何卡片。现在补齐,且每个页面拿到自己的规范 URL(不是所有页都指首页)。theme-color 用的是 index.css 里 --background 实际值的换算结果(oklch(1 0 0) → #ffffff、oklch(0.145 0 0) → #0a0a0a),不是随手填的。

404.html 特意去掉 canonical:那一行指向任何真实 URL 都是错的。

一个自己踩到并修掉的坑

prerender.mjs 里我先填占位符、再去删含占位符的行 —— 结果占位符已经没了,404.html 里留下了一条 canonical(指向首页)。逐页核对产物时抓到,改成先删行再填,并在注释里写明顺序。

另外占位符替换用的是函数形式 replaceAll("%TITLE%", () => esc(...)):字符串替换里 $&、$1 是特殊字符,标题里出现 $ 就会坏。

验证

npm run build → prerendered 20 routes · npm run lint → 0 warning 0 error

逐页核对产物:

index.html            canonical=…/            title=Spot Monitor — 服务器探针文档
install/hub.html      canonical=…/install/hub title=安装 hub — Spot Monitor 文档
404.html              无 canonical / og:url     title=页面不存在 — Spot Monitor 文档
dist/ 里未替换的占位符:0

dist/index.html 里剩下的 monitor 只有仓库路径(github.com/spot-probe/monitor),显示名 0 残留。favicon 的图形与 monitor-theme-default 那枚完全一致(仅注释不同)。

没做的事(有意)

  • 正文 159 处 monitor 一律没动 —— 逐条看过,是用户名 monitor-agent、/opt/monitor/agent.env、Cookie monitor_session、cloudflared tunnel create monitor、spot-probe/monitor 这类技术标识符,改了就是错的
  • 文档站配色仍是全灰(index.css 里零彩度、无 hex),与主题的蓝色品牌不一致;这属于视觉决策,没有你的确认我没动
  • 没有 og:image,所以 twitter:card 用 summary 而不是 summary_large_image

产品显示名 monitor → Spot Monitor(仓库名、安装命令、镜像名一律不动),
并把站点地址从上游那个 pages.dev 改成实际部署的域。

- src/site.ts:SITE 原先是 `https://monitor-document.pages.dev` —— 那是**上游的站**,
  而且全局零引用(死常量)。改成 https://spot-probe-docs.hualala.workers.dev
- src/meta.ts(新增):每个路由的标题/描述只写一份。原先 App.tsx 与
  entry-server.tsx 各写了一遍,改一处就会出现「首屏标题与跳转后标题不一致」
- index.html:title/description 换成新品牌;补上原先完全缺失的
  canonical / og:url / og:title / og:description / og:site_name / og:type /
  twitter:card / theme-color(浅 #ffffff、深 #0a0a0a,取自 index.css 的 --background)
- scripts/prerender.mjs:按路由填充 title/desc/canonical/og,20 个页面各自
  拿到自己的规范 URL;404.html 去掉 canonical(那一行指向任何真实 URL 都是错的)。
  占位符用函数形式替换 —— 标题里的 `$` 在字符串替换里是特殊字符
- src/components/Header.tsx:桌面与移动抽屉两处品牌字 → Spot Monitor
- public/favicon.svg:换成 monitor-theme-default 那枚蓝渐变标记,两个站同一个品牌
  (原先还是上游的灰色款,图形与主题相同、只有颜色不同)

验证:`npm run build` → prerendered 20 routes;`npm run lint` 0 warning 0 error;
逐页核对产物 —— index.html/install/hub.html 各自的 canonical 与 og:url 正确、
404.html 无 canonical、dist/ 里无未替换占位符。
@jacob-bytes
jacob-bytes merged commit b21b24d into main Sep 26, 2026
1 of 2 checks passed
@jacob-bytes
jacob-bytes deleted the chore/site-branding-and-meta branch September 26, 2026 13:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant