3.0 KiB
3.0 KiB
C-05 · 工具页 SEO 预渲染
| 字段 | 值 |
|---|---|
| 项目 | 可乐工具 · chunyu_project_react(构建层)+ 部署配置 |
| 优先级 | P1 · M3 |
| 建议模型 | deepseek-v4.1-flash(主)/ kimi-k3(全页 meta 核查) |
| 依赖 | C-01(路由先稳定) |
| 预估 | 2.5 天 |
一、背景(为什么做)
工具站的核心获客渠道是搜索引擎("时间戳转换""JSON 格式化"都是大流量词),菜鸟工具/tool.lu 全部吃 SEO 流量。本项目 Vite SPA 纯客户端渲染,蜘蛛抓不到任何工具内容——SEO 基本为零(docs/产品问题分析与改造路线.md P0-4)。
二、目标(交付物)
- 构建期预渲染:全部工具详情页(20+ 工具页路由)在
npm run build时产出含完整正文的静态 HTML(推荐vite-plugin-prerender或独立 puppeteer 脚本,按项目现状选型;产出直接进dist/)。 - 每页独立 meta:
<title>、<meta name="description">、OG 标签(og:title/og:description/og:image),内容从工具的 name/description 字段生成;不重复不空。 - sitemap.xml + robots.txt:sitemap 覆盖全部工具 URL(含首页、工具列表、分类页),robots 放行蜘蛛、指向 sitemap。
- 部署接线:nginx 对预渲染产物优先返回静态 HTML;不破坏 SPA 接管(首屏 HTML 后 React 正常 hydrate 交互)。
- 工具页组件支持标题/描述注入(小型 hook 或 helmet 类方案,按项目现状)。
三、执行步骤
1. 盘点全部需预渲染的路由清单(工具页 + 分类页 + 首页)
2. 选型预渲染方案并接入构建流程(保持现有构建命令不变)
3. 每页 meta 注入
4. sitemap/robots 生成脚本(构建后自动产出)
5. 本地构建 → curl 验证产物 HTML 含正文
6. nginx 配置片段更新(预渲染优先),写明部署要点
四、验收标准
npm run build后dist/内每个工具页 HTML 含完整正文(curl静态文件可见关键内容,非空#root)- 每页
<title>唯一且语义化;description 非空 - sitemap.xml 覆盖全部工具 URL(数量与路由清单一致)
- robots.txt 正确放行 + 指向 sitemap
- 浏览器访问预渲染页:内容先现、React 正常接管交互(无闪烁错乱)
- 构建时间增加在可接受范围(记录数据)
五、验收命令(参考)
cd chunyu_project_react && npm run build
node scripts/check_seo.mjs # 本任务交付:扫描 dist 校验 title/description/sitemap 覆盖
curl -s http://localhost:8080/utility/json-formatter | grep -o "<title>.*</title>"
六、边界(不许做)
- 不引入 Next.js 全量迁移(成本不成比例;预渲染即可)
- 不改工具页业务逻辑
- 不预渲染登录态页面(profile/wallet 等一律排除,防信息泄露)
七、交接
写 PROGRESS_C-05.md(含构建产物校验输出、sitemap 覆盖数、构建耗时对照)。