Files
vscode-workbench/PLANNING/tasks/E-05-公开内容页SEO.md
T

61 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# E-05 · 公开内容页 SEO(词/题/词书)
| 字段 | 值 |
|---|---|
| 项目 | EnglishDrill · `Desktop/english-drill` |
| 优先级 | P1 · M3 |
| 建议模型 | deepseek-v4.1-flash(主)/ kimi-k3(全页核查) |
| 依赖 | 无(建议 E-02 后,共享公开路由思路) |
| 预估 | 3.5 天 |
## 一、背景(为什么做)
整站登录后可见,搜索引擎**收录不到任何内容**。440 个单词 = 440 个长尾入口("abandon 什么意思"这类搜索词),是**唯一不花钱的持续获客渠道**(增长报告 P1-5)。
## 二、目标(交付物)
1. **公开路由**(无需登录、服务端渲染或预渲染,蜘蛛可见正文):
- `/word/:word` 单词详情:释义 / 音标 / 例句 / 相关词
- `/question/:id` 单题页:题干(+ 解析,如果现有数据有)——搜索词如"定语从句 that which 区别"
- `/book/:id` 词书页:词表概览
2. 每页独立 `<title>` / `description` / OG;**页内注册引导**("注册后加入学习计划")
3. `sitemap.xml`(440 词 + 题库 + 词书)+ robots.txt
4. 渲染选型:按项目现状选 **SSR(若后端模板可承接)或构建期预渲染**,产出必须可被 curl 直读;不破坏现有 SPA 登录内体验。
## 三、执行步骤
```text
1. 选型:评估后端 Django 模板直出(快)vs 前端预渲染(重);记录选型理由
2. 三条公开路由 + 数据查询(注意只暴露公开字段,不含用户数据)
3. meta/sitemap/robots
4. 注册引导组件(点击 → 跳注册并带来源参数)
5. 验收:curl 内容检查 + 覆盖率检查脚本
```
## 四、验收标准
- [ ] 未登录 `curl` 三个页面均可见正文(非空壳 HTML)
- [ ] 每页 title/description/OG 独立且非空
- [ ] sitemap 覆盖:440 词 + 题库 + 词书(数量核对)
- [ ] 页内注册引导跳转正常(带来源标识)
- [ ] 不泄露任何用户/答案数据(公开页字段白名单审查)
- [ ] 既有 E2E 全绿
## 五、验收命令(参考)
```bash
# 例:curl 直读
curl -s http://localhost:8756/word/abandon | grep -o "<title>.*</title>"
node scripts/check_seo_public.mjs # 覆盖检查(本任务交付)
```
## 六、边界(不许做)
- 公开页不显示用户作答数据、不做"谁在学"
- 不做全站 SSR 迁移(只做三个内容路由)
- 不动登录内页面
## 七、交接
写 `PROGRESS_E-05.md`(含 curl 输出、sitemap 数量、选型理由)。