# MindSpace SEO / GEO 回归守卫
日期: 2026-08-07
## 保护内容
1. **收录策略硬规则**:`h5_publish_records` 中 `access_mode=public` 且 `status=online` 且未过期的发布页允许 SEO/GEO 注入与 sitemap/llms 收录;**此外**,工作区 `public/*.html` 直链在无在线非 public 发布记录阻挡时,默认视为可收录(implicit public)。不再要求 `user_confirmed_at`。
2. **私有页强制 noindex**:在线 `password` / `private_link` / `login_required` / `owner_only` 发布、已过期、embed 模式等必须注入 `noindex, nofollow` 并设置 `X-Robots-Tag`。
3. **总开关默认开启**:`mindspace_config.seo_geo_config` 缺省为全开;库内已保存的旧值仍以数据库为准,需在 memind_adm MindSpace 配置页保存后才会改写生产。
4. **配置来源**:memind_adm MindSpace 配置页 → `PATCH /admin-api/mindspace/config` → Portal `loadMindSpaceConfigCached()`。
5. **百度推送**:仅在 admin 开启 `seo.baiduPush` 且页面可索引时触发;公开页发布与 Plaza 发帖共用该开关。
6. **作者侧 SEO/GEO 必填**:每个 `public/*.html` 必须包含 `title`、`description`、`mindspace-geo`(summary/keywords/faq)与语义化 `
` 分节;`npm run check:mindspace-cover --scope all` 默认校验 MindSpace + 平台静态页(含 `/learn`)。服务端对缺失 FAQ 会尝试从 `h2+p` 自动抽取 JSON-LD。
7. **存量回填**:`npm run backfill:mindspace-geo` 可批量补齐 `mindspace-geo` / `description` / 缺失 ``,并清理失效 cover 引用;Plaza SSR 页通过 `platform-seo-html.mjs` 注入 canonical / OG / JSON-LD。
## 必跑验证
```bash
npm run verify:seo-geo
npm run verify:seo-discovery
npm run verify:portal-access-policy
```
改以下路径前必须跑上述命令:
- `mindspace-index-policy.mjs`
- `mindspace-seo-tags.mjs` / `mindspace-geo-tags.mjs` / `mindspace-seo-geo-delivery.mjs`
- `mindspace-seo-discovery-service.mjs` / `mindspace-seo-notify.mjs`
- `mindspace-public-delivery.mjs`
- `server/portal-published-page-delivery.mjs`
- `server/portal-workspace-publication-delivery.mjs`
- `server/portal-seo-discovery-routes.mjs`
- `mindspace-config.mjs`
- `mindspace-publications.mjs`(确认公开 + 百度推送)
## 禁止回退
- 禁止让非 public 页面进入 `/sitemap.xml` 或 `/llms.txt`
- 禁止在 embed 模式注入 SEO/GEO
- 禁止绕过 `resolveIndexPolicy` 直接注入 canonical / JSON-LD
- 禁止删除私有页的 `noindex` 保护以“提升收录”