# 03 PRD v1 — Subnautica2Maps Clean Rerun

- task_id: `t_43537dda`
- owner: 墨策
- date: 2026-05-20
- project_slug: `subnautica2maps`
- selected_keyword: `subnautica 2 map`
- target_market: US/en
- tenant: `site-rerun-subnautica2maps-20260520-clean`
- clean_rerun: true
- previous_tenant: `site-daily-20260519`
- preserved_history: true
- deleted_local_paths_manifest: `/root/.hermes/reports/clean-rerun-subnautica2maps-20260520-delete-manifest.json`
- output_artifact: `reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/03-prd-v1.md`

## 0. 结论先行

PRD verdict: `GO_WITH_CONSTRAINTS`.

Subnautica2Maps 可以进入设计、数据、前端、后端、SEO、合规复验，但唯一产品合同锁定为：fan-made Subnautica 2 interactive map + resource locator + current-position route helper。

上线前不可降级为：普通攻略站、只有地图说明的 landing page、占位页集合、竞品地图镜像、官方风格 companion。

P0 必须交付：
1. 可用地图：pan/zoom、自制 map base、marker、搜索、分类筛选、结果数。
2. Marker detail：name/type/subtype、coordinates、depth、region/biome、notes、nearby、verified_game_version、source_type、confidence、updated_at。
3. Route helper：用户输入当前位置，选择 target marker，输出 distance、direction、depth delta、route note。
4. Local progress：found/collected 本地保存，刷新后仍保留，不要求登录。
5. Mobile-first：手机完成 search → filter → detail → route，不遮挡地图。
6. SEO/AEO：只索引真实有数据、有任务价值、有 source/update/confidence 的页面。
7. 合规：全站 fan-made/no-affiliation，Privacy/Terms/Contact-DMCA，禁止官方/竞品素材与数据复制。
8. Analytics：真实触发并验证 pageview、hero_cta_click、tool_start、tool_result、pricing_cta_click、map_search、marker_open、filter_apply、detail_open、position_set、route_calculate、progress_toggle、outbound_click。

P0 不做：登录、Stripe、订阅、强付费墙、community submission、cross-device sync、CMS、官方 logo/key art、竞品/官方数据抓取、未验证页面入 sitemap。

## 1. 输入与冲突处理

### 1.1 已读取父产物

- 01 Brief v0: `/root/.hermes/kanban/boards/site-factory/workspaces/t_7f12127a/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/01-brief-v0.md`
- 02A Pricing: `/root/.hermes/kanban/boards/site-factory/workspaces/t_5111f063/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/02a-pricing.md`
- 02B Compliance: `/root/.hermes/kanban/boards/site-factory/workspaces/t_f461f687/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/02b-compliance.md`
- 02C SEO/GEO/AEO: `/root/.hermes/kanban/boards/site-factory/workspaces/t_921972c3/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/02c-seo.md`
- 02D Copy: `/root/.hermes/kanban/boards/site-factory/workspaces/t_9cc5820f/reports/site-pipeline/site-rerun-subnautica2maps-20260520-clean/subnautica2maps/02d-copy.md`

未读取、未复用旧 PRD、旧设计、旧 seed data、旧 dist、旧 repo。

### 1.2 已 resolve 的关键冲突

| 冲突/不确定项 | 决策 | 下游口径 |
|---|---|---|
| `pricing_cta_click` 是任务硬要求，但 02A/02B 不建议 P0 定价页 | 保留事件名作为 optional support/waitlist CTA 的测量口径，不接 Stripe，不做 Pricing 主导航 | 若无 support CTA 可隐藏，但 analytics taxonomy 仍预留；不要写付费承诺 |
| `subnautica2maps` 品牌含完整商标 | PRD 不默认公开域名安全；标为高商标风险，需要合规复验 | 若正式域名仍用 branded term，必须强化 fan-made/no-affiliation，禁止官方视觉 |
| SEO 希望覆盖资源/biome/POI 页，但数据源未锁 | 页面矩阵分 P0/P1；只有有 confirmed marker + source/version/confidence 才 index | 数据不足则 noindex，不得做空 programmatic SEO |
| Copy 提到 route helper / confidence / local progress | 这些是 P0 功能承诺；若技术未实现，前端必须隐藏或降级相关文案 | 不允许上线“文案承诺大于功能”的页面 |
| YouTube 嵌入可带来攻略价值，但 `/map` 性能关键 | P0 `/map` 不放重视频；P1 guide/resource 可 lazy-load | 设计/前端不得在地图工具首屏塞视频 |

## 2. Site type / 产品定义

Primary site type:
- Game interactive map
- Resource locator
- Route helper

Secondary:
- Biome/resource/POI guide hub
- Source-backed marker database
- Update/changelog trust surface

One-liner:
Subnautica2Maps is a fan-made interactive Subnautica 2 map that helps players find resources, POIs, blueprints, and routes from their current position while showing coordinates, depth, update status, and confidence for every marker.

定位语句：
FOR Subnautica 2 Early Access players
WHO need to find resources, POIs, blueprints, and routes while playing
Subnautica2Maps IS a fan-made interactive map and route helper
THAT lets players search, filter, open marker details, set their current position, and track local progress
UNLIKE generic guide pages or map mirrors
Subnautica2Maps focuses on current-position route hints, source/version/confidence transparency, mobile-first lookup, and no-login core map usage.

## 3. ICP / JTBD

### 3.1 主力 ICP — Early Access 探索型玩家

- Who: PC / Xbox / Game Pass Subnautica 2 Early Access 玩家。
- Pain: 不知道资源、POI、blueprint、biome 在哪里；旧攻略容易过时；需要从当前位置规划路线。
- Current: MapGenie、GamesDB、Game8、IGN、Steam/Reddit/YouTube、手工截图和笔记。
- Trigger: 卡在 silver/copper/sulfur/lithium/gold、lifepod、Camp One、Old Habitat、blackbox、data box、blueprint。
- Hangout: Steam Community、Reddit r/subnautica、YouTube 攻略评论区、Discord/wiki。
- Willingness: 对订阅敏感；接受免费工具 + 低干扰 sponsor/support/affiliate；不接受核心地图付费墙。

### 3.2 次级 ICP — Completionist / 收集党

- 任务: 勾选已找到/已收集，按类型/区域/进度过滤，避免重复跑图。
- P0 对应: local progress，无登录。
- P1 对应: cross-device sync、advanced notes、export。

### 3.3 GTM 放大 ICP — 攻略创作者 / Wiki 编辑者

- 任务: 引用 marker、坐标、路线、版本更新时间和 confidence。
- P0 对应: source-backed resource/POI/biome pages。
- P1/P2 对应: shareable marker/route、embed/widget、creator export。

## 4. SERP / 竞品 interaction baseline

Search intent: transactional / tool-seeking / interactive map。

用户要打开地图、搜索、筛选、看坐标和深度、设置当前位置、获得 route hint、在手机上边玩边查；不是读一篇“Subnautica 2 map 是什么”。

| Competitor | 用户可见能力 | 缺口/可打点 | 我们必须达到 |
|---|---|---|---|
| IGN | 高权重 guide hub、interactive map、resources/supply crates/black boxes framing | 工具不是单点最佳；route/source/confidence 未必突出 | guide hub 内链、answer blocks、map/resource framing |
| Game8 | coordinates、depth、region/biome、Early Access notice、登录保存 | 登录压力、页面重、source/confidence 不一定清晰 | coordinate/depth/notes/version/local progress |
| MapGenie | pan/zoom、filters、search、progress、notes/bookmark、mobile、Pro upsell | ads/pro prompts、内容深度有限、source/confidence 弱 | 地图基础能力、分类、搜索、progress、mobile |
| GamesDB | categories、current-position route framing、resource/POI/blueprint coverage | SEO 文本弱、来源透明度不明 | route helper、marker categories、search/filter/detail |
| Steam/Reddit/YouTube | 需求和冷启动渠道 | 非稳定 owned SEO surface | 发布时用 utility angle，不 spam |

Competitive minimum:
1. Pan/zoom self-made map with visible markers。
2. Search + category filters + result counts。
3. Marker detail with coordinates/depth/region/biome/version/source/confidence/updated_at。
4. Current position → target marker route helper。
5. Local found/collected progress。
6. Mobile map + bottom sheet/sidebar。
7. Fan-made/no-affiliation legal banner。
8. Real pages only in sitemap。

## 5. 功能范围

### 5.1 P0 核心地图功能

| 功能 | 要求 | 验收 |
|---|---|---|
| Self-made map base | schematic/vector/coordinate-grid；不得复制官方/竞品 tile | 设计/数据/合规确认 asset inventory |
| Pan/zoom | 地图可平移缩放；移动端可用 | 桌面和移动端真实操作通过 |
| Marker layer | resource/poi/blueprint/data_box/wildlife/plant/biome/location | marker 可点击，类型清晰 |
| Search | 支持 silver/copper/sulfur/lithium/gold/lifepod/Camp One/Old Habitat/blackbox/data box/fragment/blueprint/biome | 返回结果数并高亮 markers |
| Filters | Resources / Blueprints / Data Boxes / Wildlife / Plants / Biomes / Locations | 多选或单选状态清晰，显示 result count |
| Marker detail | name/type/subtype/coordinates/depth/region/biome/description/nearby/version/source/confidence/updated_at | 任一 confirmed marker 字段完整 |
| Current position | 输入 X/Y/Z 或游戏 coordinate format | invalid state 有提示 |
| Route helper | target marker + current position → distance/direction/depth delta/text route note | route_calculate 成功事件 + UI 结果 |
| Local progress | found/collected toggle，localStorage 保存 | 刷新后状态保留，无登录 |
| Mobile UX | bottom sheet/sidebar，search/filter/detail/route 可完成 | 手机 375px 宽 QA 通过 |

### 5.2 Marker schema

```yaml
marker_id: string
name: string
type: resource | poi | blueprint | data_box | biome | wildlife | plant | location
subtype: string
coordinates_x: number
coordinates_y: number
coordinates_z: number
depth: string | number
region: string
biome: string
description: human-written
route_note_from_lifepod: string
route_note_from_current_position_template: string
prerequisite_gear: string[]
nearby_resources: string[]
nearby_poi: string[]
verified_game_version: string
source_type: manual_gameplay | official_update_note | licensed_community_submission | public_observation
source_url: string | null
confidence: confirmed | needs_verification | deprecated
updated_at: ISO date
reviewer: internal handle or source owner
```

Launch gate: marker 缺 source_type + confidence + updated_at，不得进入 confirmed 列表；可作为 low-confidence clue，但不能支持 indexable detail claims。

### 5.3 P0 SEO / content features

- 首页 `/`：内嵌 map/search preview，fan-made notice，route helper promise，popular searches，data trust block，FAQ。
- `/map`：完整工具页，带轻量 FAQ 和 source/confidence legend。
- P0 resource pages：`/resources/silver`、`/resources/copper`、`/resources/sulfur`，只有 confirmed markers 后 index。
- P0 guide pages：`/guides/does-subnautica-2-have-a-map`、`/guides/how-to-find-coordinates`。
- Legal pages：`/privacy`、`/terms`、`/legal` or `/contact`，`/cookie-policy` if non-essential tracking，`/refund-policy` only if payment route exists or legal template needs no-paid notice。

### 5.4 P1/P2 only

P1:
- `/resources/gold`、`/resources/lithium`、`/resources/lead`、`/resources/quartz`。
- `/locations/camp-one`、`/locations/old-habitat`、`/locations/black-boxes`、`/locations/supply-crates`。
- `/biomes/coral-gardens`、`/biomes/karakorum`。
- `/updates` changelog。
- Report outdated marker via email/form。
- Optional lazy YouTube embeds on guide/resource pages。

P2:
- Community submissions with license/moderation/noindex queue。
- Cross-device sync。
- Advanced notes/export。
- Creator embed/widget。
- Paid Supporter/Creator tier after usage proof + compliance review。

### 5.5 NOT-DO

- No official-looking game companion。
- No official logo/key art/favicon/OG art as identity。
- No copied MapGenie/GamesDB/Game8/IGN/Fandom/official tiles, markers, screenshots, icons, descriptions。
- No scraper for competitor or official data。
- No “official / approved / partner / certified”。
- No “complete / all locations / 100% accurate / real-time official data” unless data coverage audit supports it。
- No login/payment/subscription/Stripe in P0。
- No community submissions in P0。
- No cross-device sync in P0。
- No full admin CMS in P0。
- No heavy video embeds on `/map`。
- No placeholder/thin/unverified pages in sitemap。
- No raw current coordinates sent to analytics by default。

## 6. 首页 IA + 最终文案

### 6.1 Homepage section order

1. Hero with embedded map/search entry。
2. Popular searches / quick chips。
3. Map preview / route helper demo state。
4. How It Works — 3 steps。
5. Use Cases — Early Access explorers / completionists / guide creators。
6. Feature grid。
7. Data trust + Early Access update transparency。
8. Optional support note, not pricing-led。
9. FAQ。
10. Footer CTA + legal disclaimer。

### 6.2 Final homepage copy

H1: Find Subnautica 2 Resources Faster

Subhead: Search a fan-made interactive map for resources, POIs, blueprints, biomes, and route hints from your current position.

Primary CTA: Open the Map

Secondary CTA: Find a Resource

CTA microcopy: No signup required for core map features.

Fan-made notice: Fan-made player utility. Not affiliated with Unknown Worlds, Krafton, or the Subnautica franchise.

Benefits:
1. Search by player task — Type silver, lifepod, data box, biome, or blueprint and jump straight to matching markers.
2. Route from where you are — Set your current coordinates and see direction, distance, depth change, and a short route note.
3. Track without an account — Mark locations as found or collected in your browser while you keep playing.

How It Works:
1. Search a target — Type a resource, POI, biome, blueprint, or data box and see matching markers.
2. Open marker details — Check coordinates, depth, biome, nearby items, version status, confidence, and notes.
3. Route from your position — Enter your current coordinates to get distance, direction, depth delta, and a short route hint.

Feature titles:
- Interactive Map
- Resource Finder
- POI and Blueprint Search
- Current Position Route Helper
- Marker Confidence Labels
- Local Progress Tracking
- Early Access Transparency

FAQ must include:
1. Is Subnautica2Maps connected to the game developers?
2. What can I find on the map?
3. Can I use it while playing on a phone?
4. How does the route helper work?
5. Does the map require an account?
6. How accurate are the markers?
7. Will Early Access updates change the map?
8. Can I submit corrections?
9. Will there be ads or paid features?

Footer disclaimer:
Subnautica2Maps is a fan-made player tool and is not affiliated with, endorsed by, sponsored by, or approved by Unknown Worlds Entertainment, KRAFTON, or the Subnautica franchise. SUBNAUTICA and UNKNOWNWORLDS are trademarks or registered trademarks of Unknown Worlds Entertainment, Inc. All trademarks belong to their respective owners.

SEO title: Subnautica 2 Map — Resources, POIs & Route Hints

SEO description: Search a fan-made Subnautica 2 map for resources, POIs, blueprints, biomes, coordinates, depth, local progress, and route hints.

## 7. SEO page matrix / index policy

### 7.1 P0 indexable candidates

| URL | Target keyword | Required value | Schema | Index condition |
|---|---|---|---|---|
| `/` | subnautica 2 map | hero map preview/search/route CTA/fan-made/source block | WebSite, WebApplication, FAQPage | map preview/tool exists |
| `/map` | subnautica 2 interactive map | full usable map/search/filter/detail/route/progress | WebApplication, FAQPage, BreadcrumbList | tool fully usable |
| `/resources/silver` | subnautica 2 silver location | short answer, marker list, coordinates/depth, route tips | BreadcrumbList, FAQPage, ItemList | confirmed markers + 300+ unique support words |
| `/resources/copper` | subnautica 2 copper location | same | same | same |
| `/resources/sulfur` | subnautica 2 sulfur location | same | same | same |
| `/guides/does-subnautica-2-have-a-map` | does subnautica 2 have a map | answer-first + CTA to map | Article/CreativeWork, FAQPage | complete answer and internal links |
| `/guides/how-to-find-coordinates` | subnautica 2 coordinates | coordinate explanation + route helper CTA | HowTo, FAQPage | complete step-by-step |

### 7.2 P1 indexable after data proof

- `/resources/gold`
- `/resources/lithium`
- `/resources/lead`
- `/resources/quartz`
- `/locations/camp-one`
- `/locations/old-habitat`
- `/locations/black-boxes`
- `/locations/supply-crates`
- `/biomes/coral-gardens`
- `/biomes/karakorum`
- `/updates`

### 7.3 Noindex by default

- `/map?resource=...`
- `/map?filter=...`
- `/search?...`
- user progress/local state pages
- unverified community marker previews
- empty marker detail pages
- placeholder/coming soon pages
- individual marker pages with description < 300 chars and no standalone task
- route result URLs unless share route feature becomes a real product
- tag/filter/category pages with no unique content

### 7.4 Sitemap policy

Include only:
- `/`
- `/map`
- confirmed resource pages
- confirmed biome pages
- high-value POI/location pages
- complete guide pages
- real `/updates` page

Exclude:
- query URLs
- noindex pages
- thin pages
- unverified marker pages
- search results
- local/user state pages

Canonical:
- `/map?resource=silver` canonical → `/resources/silver` only when the resource page exists and is stronger; otherwise `/map`。
- `/map?filter=resources` canonical → `/map`。
- duplicated POI aliases canonical → primary slug。

## 8. Map / resource / blueprint interactions

### 8.1 Required interaction states for design/frontend

- Empty map / loading data。
- Search active with result count。
- Filter selected。
- Marker detail open。
- Position set。
- Route result。
- Route invalid/no-position state。
- Local progress checked。
- No results。
- Low-confidence marker。
- Mobile bottom sheet collapsed/expanded。

### 8.2 Map toolbar copy

Search placeholder: Search resources, POIs, biomes, blueprints...

Filter labels:
- Resources
- Blueprints
- Data Boxes
- Wildlife
- Plants
- Biomes
- Locations

Route panel:
- Title: Route from your current position
- Description: Enter your current coordinates to estimate direction, distance, and depth change to the selected marker.
- Fields: Current X / Current Y / Current Z or Depth / Target marker
- Button: Calculate Route Hint
- Result labels: Direction / Distance / Depth change / Route note / Confidence

Marker labels:
- Coordinates
- Depth
- Region
- Biome
- Nearby resources
- Nearby POIs
- Required gear
- Verified version
- Source type
- Confidence
- Updated

Error / state copy:
- No matching markers yet. Try a broader term, clear filters, or check back after the marker database is updated.
- This marker needs verification. Use the coordinates as a clue, not a final answer.
- Set your current position first to calculate a route hint.
- Local progress could not be saved in this browser.

## 9. Pricing / commercialization / conversion

P0 pricing decision: Free-first, no Stripe, no login, no subscription wall.

Core map/search/filter/detail/route/local progress stay free with fair-use abuse limits.

| Phase | Offer | Price | Build in P0 | Notes |
|---|---:|---:|---|---|
| P0 | Free map + fair-use limits | $0 | Yes | primary product |
| P0 | Optional support interest CTA | $0 user price | Optional only | measure interest; no checkout |
| P1 | Annual Supporter | $9.99/year | No | convenience only: ad-free, sync, notes, export |
| P1 | Lifetime early supporter | $19 one-time | No | early-only; not ARR core |
| P2 | Creator/export/sync tier | $3.99/mo or $29/year | No | only after creator demand |

Suggested fair-use abuse limits:
- map_search: 200 searches / browser / day; IP 1,000 / day。
- filter_apply: 500 / browser / day。
- marker_open: 500 / browser / day。
- route_calculate: 100 / browser / day; IP 500 / day。
- progress_toggle: 2,000 / browser / day。

Cost target:
- P0 launch: $0-$5/month cash cost。
- Before 1,000 UV/day: keep below $10/month。
- No AI API, no Stripe, no D1 user-state dependency in P0。

Conversion definition:
- Primary: map_search, marker_open, route_calculate, progress_toggle, return visitor after version update。
- Secondary: outbound_click, support_click, email_update_signup, pricing_cta_click。

Stripe gate for future P1:
- 30 days ≥ 300 UV/day。
- `pricing_cta_click / map_engaged_session` ≥ 1%。
- ≥30 supporter waitlist emails or ≥10 explicit paid-intent signals。
- Compliance approves trademark/supporter/refund/subscription language。

## 10. Legal / policy boundary

Decision: CONDITIONAL GO.

Can do:
- Fan-made Subnautica 2 map。
- Player-made route helper。
- Self-made schematic/vector/coordinate-grid map。
- Human-written notes based on first-hand gameplay/public official update notes/licensed community input。
- Plausible + Cloudflare lightweight analytics。

Must do before launch:
- Footer fan-made/no-affiliation/trademark statement on every page。
- Hero/map disclaimer: “Fan-made map. Not official. Data may change during Early Access — check marker version and confidence before relying on it in-game.”
- `/privacy`。
- `/terms`。
- `/legal` or `/contact` with DMCA/copyright path。
- `/cookie-policy` if GA/Clarity/ads/remarketing/non-essential scripts are used。
- Exact formal domain email: hello@domain and support@domain; dmca@domain/privacy@domain recommended。
- Marker provenance fields on all marker-backed pages。

Blocked:
- Official Subnautica 2 map。
- Approved/endorsed/partner/certified claims。
- Official logo/key art/favicon/OG art as identity。
- Copied competitor/official map tiles/marker data/screenshots/icons/text。
- No evidence claims: complete/all locations/100% accurate/real-time official data。
- Raw current coordinates in analytics by default。

Privacy guardrails:
- Route calculation should run browser-side by default。
- Do not send exact current coordinates to analytics。
- Use distance_bucket rather than raw coordinates。
- localStorage progress disclosed in Privacy。
- If non-essential trackers are used, consent banner blocks load before consent。

## 11. Asset / content inventory

P0 required assets/data:
- Self-made schematic/vector/coordinate-grid map base。
- Self-made SVG marker icons or compatible open-source icons。
- Seed marker list for P0 resources: silver, copper, sulfur。
- Seed marker list for P0 POIs used in examples: lifepod, Camp One, Old Habitat, blackbox/data box if available。
- Resource descriptions。
- Route notes。
- Version changelog or verified_game_version labels。
- Source/confidence notes。
- Legal/disclaimer/contact/DMCA copy。
- Self-made OG image using coordinate-grid/HUD style; no official art。

Data worker must produce:
- Source inventory proving no copied official/competitor data。
- Marker JSON matching schema。
- Coverage report: which pages can be indexable now vs noindex。
- Update workflow for Early Access changes。

## 12. Analytics / event taxonomy

Implementation rule: “script loaded” is not evidence. Downstream must trigger and preserve real ingestion evidence for every P0 event.

| Event | Trigger | Required properties | Privacy guardrail |
|---|---|---|---|
| pageview | page load | page_slug, referrer, device_type | no raw IP in artifact |
| hero_cta_click | CTA click | page_slug, cta_id, placement | no PII |
| tool_start | first map/search/route interaction | tool_type, source_page | no raw coordinates |
| tool_result | search/route usable output | tool_type, success, result_count | aggregate result_count |
| pricing_cta_click | support/pricing interest CTA | page_slug, placement, cta_variant | no checkout in P0 |
| map_search | search submit | keyword_bucket or keyword, result_count | avoid unexpected PII; disclose analytics |
| marker_open | marker panel open | marker_id, marker_type, source_context | marker_id only |
| filter_apply | filter selected | filter_type, filter_value, result_count | no PII |
| detail_open | detail page/panel | detail_type, slug | no PII |
| position_set | coordinate accepted | coordinate_format, success | do not send raw coordinate |
| route_calculate | route result | marker_id, distance_bucket, success | bucket distance only |
| progress_toggle | found/collected state | marker_id, state | no user identity |
| outbound_click | external click | destination, context | sponsor/affiliate disclosure if used |

QA evidence required:
- Debug logs or analytics dashboard screenshot/path。
- At least one successful trigger per required event。
- Failure states for route/search logged or visibly tested。

## 13. Cloudflare / domain / Webmaster plan

### 13.1 Domain and email policy

Formal domain must have:
- hello@domain
- support@domain
- dmca@domain or copyright@domain recommended
- privacy@domain recommended

If public domain contains full `subnautica`, risk is high. Prefer safer name/domain if still possible; if not, enforce stronger no-affiliation everywhere.

### 13.2 Cloudflare P0 settings

Before public launch verify and capture evidence:
- SSL mode: Full Strict。
- Always Use HTTPS: enabled。
- Bot Fight Mode or equivalent abuse protection: enabled。
- Crawler Hints: on。
- Browser Cache TTL configured。
- Static asset caching configured。
- `/api` rate limit if any API endpoint exists。
- Security headers: `X-Content-Type-Options: nosniff`, `Referrer-Policy`, reasonable `Content-Security-Policy`, `Permissions-Policy`。
- robots/sitemap reachable。
- Pages/Workers deployment source commit matches pushed source commit。

### 13.3 Webmaster submission plan

After QA + PM + SEO + Compliance GO:
1. Verify production domain in Google Search Console。
2. Submit `/sitemap.xml` to GSC。
3. Inspect `/`, `/map`, `/resources/silver`, `/guides/how-to-find-coordinates`。
4. Verify noindex pages are excluded from sitemap。
5. Verify production domain in Bing Webmaster Tools。
6. Submit sitemap to Bing。
7. After first crawl, check Coverage/Indexing errors and remove any placeholder/thin pages。
8. Keep `/updates` or changelog current after Early Access game updates。

Do not submit sitemap before confirmed data pages and noindex rules pass SEO audit.

## 14. Technical stack recommendation

- Frontend: Next.js static export or Astro, deployed on Cloudflare Pages。
- Map: client-side SVG/Canvas/HTML overlay with static JSON marker data; avoid heavyweight map vendor dependency unless needed。
- Search/filter: client-side first for P0。
- Route helper: browser-side coordinate calculation。
- Storage: localStorage for progress; static JSON or R2 for marker data; D1 only if needed for managed marker reads later。
- Backend: optional Cloudflare Worker for event proxy/rate limit/data version endpoint。
- Analytics: Plausible preferred; custom event proxy acceptable if privacy-bounded。
- Payments/auth: none in P0。
- SEO gate: build-time audit script for title/meta/H1/canonical/noindex/sitemap/robots/alt/OG/schema/internal links。

Any code/deploy task must commit + push + deploy the same commit and metadata must include commit_sha, pushed_branch, deploy_url, deployment_source_commit, git_status_after。

## 15. GTM / launch / review

Launch narrative:
A fan-made Subnautica 2 map built for finding resources from where you are now.

Primary channels:
1. SEO: `/`, `/map`, validated resources, coordinate guide, does-map guide。
2. Steam Community: share as fan-made route helper; no spammy SEO framing。
3. Reddit r/subnautica: utility demo and feedback request。
4. YouTube creators: offer source-backed marker/route links for guides。
5. Update log: every Early Access update becomes content + trust signal。

First week:
- Day 0: launch core map + validated sitemap only。
- Day 0-1: post one Steam/Reddit utility share with fan-made disclaimer。
- Day 1-3: reach 5-10 Subnautica guide creators with map/route value, not paid pitch。
- Day 3-7: fix zero-result searches, low-confidence markers, mobile UX issues。
- Day 7: review analytics and decide whether to expand P1 pages。

30-day Kill / Iterate / Scale:

| Signal | Kill/Pause | Iterate | Scale |
|---|---|---|---|
| Legal/data risk | takedown or no safe data source | minor asset/copy fixes | compliant data workflow stable |
| Daily visitors | <10 UV/day | 10-100 UV/day | >100 UV/day |
| map_search/pageview | <10% | 10-40% | >40% |
| marker_open/map_search | <30% | 30-60% | >60% |
| route_calculate/marker_open | <5% | 5-20% | >20% |
| return visitors after update | none | detectable | meaningful repeat usage |
| feedback | negative/no use | specific corrections | positive shares/backlinks |

## 16. Acceptance gates

### 16.1 Design Acceptance

Design must include:
- Homepage + `/map` + resource page + guide page + legal/footer states。
- Mobile-first map/bottom sheet/sidebar。
- Search results, filter selected, marker detail, position set, route result, local progress, no results, low confidence。
- Self-made HUD/scanner/coordinate-grid visual direction。
- Visible but non-disruptive fan-made disclaimer。
- No official-looking branding, logo, key art, favicon, OG image。

### 16.2 Data Acceptance

Data must include:
- Marker schema compliance。
- Seed markers for indexable resource pages。
- Source/confidence/version/update fields。
- Asset inventory and proof no copied official/competitor data。
- Indexable/noindex recommendation per page。

### 16.3 Frontend/Backend Acceptance

Must pass:
- User opens `/`, clicks Open the Map, reaches usable `/map`。
- Search silver/copper/sulfur returns markers and result count。
- Filter categories update visible markers。
- Marker detail shows required fields。
- Current position input validates coordinates。
- Route helper returns distance/direction/depth delta/route note。
- Local progress persists after refresh。
- Mobile flow works。
- Analytics events are ingested, not merely instrumented。
- SEO audit script passes。

### 16.4 SEO/GEO Acceptance

Must pass:
- Unique title/meta/H1/canonical per indexable page。
- No noindex page in sitemap。
- No sitemap placeholder/thin/query/user-state/unverified pages。
- WebApplication/FAQ/Breadcrumb/ItemList/HowTo schema valid where applicable。
- Accessible marker list fallback for canvas/SVG map。
- Internal links hub ↔ detail pages。

### 16.5 Compliance Acceptance

Must pass:
- Fan-made/no-affiliation statements present。
- Legal pages reachable。
- Domain email confirmed。
- No official/competitor assets/data。
- No banned copy。
- Privacy discloses Cloudflare, analytics, localStorage, route coordinate handling。
- Cookie banner if non-essential scripts。
- Raw coordinates not sent to analytics by default。

## 17. Role handoff contracts

### 17.1 墨笔 / Copy

must_read:
- `03-prd-v1.md`
- `02d-copy.md`
- `02b-compliance.md`
- `02c-seo.md`

must_produce:
- Final English copy for `/`, `/map`, P0 resources, P0 guides, legal/disclaimer blocks。
- Meta titles/descriptions and FAQ blocks。
- Empty/low-confidence/error state copy。

must_not:
- Do not say official/approved/partner/complete/all/100% accurate。
- Do not write paywall/pricing-led copy。
- Do not promise route/confidence/progress unless implemented。

### 17.2 墨影 / Design

must_read:
- `03-prd-v1.md` sections 6, 8, 10, 16。
- `02d-copy.md` sections 2-4, 10, 13。
- `02b-compliance.md` sections 5-7。

must_produce:
- High-fidelity Stitch HTML/CSS for homepage, `/map`, resource page, guide page, legal/footer。
- Required states: search results, filters, marker detail, position set, route result, local progress, no results, low confidence, mobile bottom sheet。
- Self-made HUD/scanner/coordinate-grid asset direction。

must_not:
- Do not use official logo/key art/screenshots as branding。
- Do not obscure map/search/detail/route with support/ads。
- Do not design SaaS dashboard as primary shape。

### 17.3 墨枢 / Data

must_read:
- `03-prd-v1.md` sections 5.2, 7, 11, 16.2。
- `02b-compliance.md` section 6。
- `02c-seo.md` sections 4-7。

must_produce:
- Marker JSON with required schema。
- Asset/data provenance report。
- Indexable/noindex coverage report。
- Update/changelog workflow。

must_not:
- Do not scrape/copy competitor or official marker data。
- Do not mark unverified data as confirmed。
- Do not feed thin pages into sitemap。

### 17.4 墨界 / Frontend

must_read:
- `03-prd-v1.md` full file。
- Design HTML/CSS from 墨影 as visual truth。
- Data JSON and provenance from 墨枢。

must_produce:
- Production-ready Cloudflare Pages app。
- Map/search/filter/detail/route/progress implementation。
- Legal pages and footer links。
- Analytics event ingestion proof。
- SEO audit script + passing report。
- commit/push/deploy metadata from same commit。

must_not:
- Do not hardcode fake data as confirmed。
- Do not leave placeholder/coming soon pages indexable。
- Do not claim analytics done without ingestion evidence。
- Do not deploy uncommitted/unpushed source。

### 17.5 墨盾 / Compliance Recheck

must_read:
- `03-prd-v1.md`
- live URL / screenshots / asset inventory / legal pages / analytics config。

must_produce:
- GO/NO-GO compliance verdict。
- Trademark/domain risk stance。
- Asset/data policy verification。
- Privacy/Terms/Cookie/DMCA review。

must_not:
- Do not approve launch if official-looking branding, copied assets/data, missing legal pages, or raw-coordinate analytics exist。

### 17.6 墨引 / SEO-GEO

must_read:
- `03-prd-v1.md` sections 7, 12, 13, 15, 16.4。
- Actual build output。

must_produce:
- Technical SEO audit report。
- Sitemap/noindex/canonical validation。
- Schema validation。
- Webmaster submission readiness verdict。

must_not:
- Do not submit sitemap before QA/Compliance/Product GO。
- Do not let placeholder/thin/unverified/query pages index。

### 17.7 墨测 / QA

must_read:
- `03-prd-v1.md` sections 5, 8, 12, 16。
- PM Product Acceptance report after implementation。

must_produce:
- Real user task QA: search, filter, marker detail, route, local progress, mobile, legal links, analytics evidence。

must_not:
- Do not pass by page existence only。
- Do not accept script presence as analytics proof。

### 17.8 墨运 / Launch

must_read:
- PRD, QA GO, SEO GO, Compliance GO, PM GO, Cloudflare/domain evidence。

must_produce:
- Launch report with production URL, sitemap submission, GSC/Bing status, first-week GTM actions。

must_not:
- Do not launch without domain email, CF settings, legal pages, analytics evidence, and same-commit deploy metadata。

## 18. Residual risks / blocking risks

Residual risks:
1. Live monthly search volume/CPC/KD still unverified because upstream DataForSEO returned 401。
2. `subnautica2maps` contains a full trademark term; domain/name risk remains high until final domain is confirmed and compliance approves。
3. Marker data source and maintenance owner are not locked。
4. Route helper feasibility depends on coordinate model and self-made map base implementation。
5. Early Access updates can invalidate marker data quickly。
6. Mobile performance risk with map + marker count。
7. If sitemap includes thin/placeholder pages, index quality will degrade。
8. If downstream adds login/payment/UGC/GA/Clarity/ads/exact-coordinate analytics, compliance must be re-run。

Blocking risks for launch:
- No functional map/search/filter/detail/route/progress。
- No source/version/confidence marker data。
- Official-looking branding or copied assets/data。
- Missing Privacy/Terms/Contact-DMCA。
- No hello@domain/support@domain。
- Analytics not verifiably ingested。
- Sitemap includes noindex/thin/query/local/unverified pages。
- Code/deploy source not committed, pushed, and deployed from same commit。

## 19. Acceptance checklist for this PRD task

- [x] Read 01 Brief v0 and 02A/02B/02C/02D parent artifacts。
- [x] Did not read old PRD/design/seed/dist/repo。
- [x] Output saved under required clean rerun output path。
- [x] Locked site_type。
- [x] Integrated SERP/competitor interaction baseline。
- [x] Integrated core_user_tasks。
- [x] Integrated competitive_minimum。
- [x] Integrated homepage IA and final copy。
- [x] Integrated SEO page matrix and index/noindex+sitemap policy。
- [x] Integrated map/resource/blueprint core interactions。
- [x] Integrated pricing/free quota/cost/conversion strategy。
- [x] Integrated legal/policy/IP/asset boundary。
- [x] Integrated asset/content inventory。
- [x] Integrated domain email/contact policy。
- [x] Integrated analytics/event taxonomy and proof requirement。
- [x] Integrated Webmaster submission plan。
- [x] Integrated Cloudflare settings plan including Crawler Hints。
- [x] Integrated GTM and Kill/Iterate/Scale。
- [x] Added each role’s must_read/must_produce/must_not。
- [x] Added skill_contract_check。

## 20. skill_contract_check

| 合同项 | 必需输入 | 必需产出 | 硬约束 | 验收项 | Evidence |
|---|---|---|---|---|---|
| Kanban source of truth | task_id `t_43537dda`, parent tasks | `03-prd-v1.md` + kanban metadata | Telegram only for visibility; Kanban complete/block is authoritative | START sent, DONE before complete | kanban_show task; START message_id `5716` |
| Clean rerun | clean_rerun, new_tenant, deleted manifest, parent artifacts | New PRD v1 in clean output_base | No old PRD/design/seed/dist/repo | This file references only 01/02A/02B/02C/02D | Input paths in §1.1 |
| Bound skills | projects/site-building, product-definition-prd, kanban-worker, telegram-group-messaging | PRD v1 with contract table | Must include required inputs/outputs/constraints/acceptance/evidence | This section exists | skills loaded/preloaded |
| Site type | 01 Brief v0 | Primary/secondary/not site type | Must drive all downstream work | §2 | 01 Brief v0 §§1-2 |
| SERP/interaction baseline | 02C SEO + 01 Brief | competitor baseline and competitive minimum | Not a generic guide site | §4 | 02C §§2-5 |
| Core user tasks | 01 Brief + 02C | Acceptance-ready user tasks and UX states | Must be testable by QA | §§5, 8, 16 | 01 Brief §5; 02C §5 |
| Homepage IA/copy | 02D Copy | Final homepage sections and English copy | Do not overclaim unimplemented features | §6 | 02D §§2-4 |
| SEO matrix | 02C SEO | P0/P1/noindex/sitemap/canonical plan | Thin/placeholder/query/local/unverified pages noindex | §7 | 02C §§6-7 |
| Pricing | 02A Pricing | Free-first pricing + future gates | No P0 Stripe/auth/subscription wall | §9 | 02A §§0-8 |
| Legal/IP | 02B Compliance | Legal/policy/asset/domain guardrails | Fan-made/no-affiliation; no copied assets/data | §10 | 02B §§1-18 |
| Asset/data inventory | 01 Brief + 02B | Required marker schema and asset/data list | Self-made/licensed/manual only | §§5.2, 11 | 01 Brief §7; 02B §6 |
| Analytics | task body + 01/02A/02C/02B | Event taxonomy and proof requirements | Real ingestion proof; no raw coords by default | §12 | task body P0 analytics; 02C §12; 02B §14 |
| Domain/CF/Webmaster | task body + 02B | Email policy, CF settings, GSC/Bing plan | hello/support required; CF gates before launch | §13 | task body domain/CF P0; 02B §15 |
| GTM/review | 01/02A/02C | launch narrative, first-week plan, K/I/S | No spam, utility-led distribution | §15 | 01 Brief §10; 02A §8 |
| Downstream contracts | pipeline role needs | must_read/must_produce/must_not per role | PRD is downstream truth source | §17 | task body requirement |
| Verification | output artifact | file exists, checklist, metadata | Must verify file before complete | §19 + terminal verification | wc/search_files after write |

## 21. Handoff summary

PRD direction:
- Build a fan-made interactive Subnautica 2 map + route helper, not a generic guide site。
- P0 competitive minimum is map/search/filter/marker detail/current-position route/local progress/mobile/no-affiliation/source-confidence-version。
- P0 is free-first: no Stripe, no login, no subscription wall。
- Only real data pages enter sitemap; thin/query/local/unverified pages noindex。
- Compliance blocks official-looking branding, official/competitor assets/data, missing legal pages, and raw-coordinate analytics。

Next assignee input:
- 墨枢/Data: produce self-made/licensed/manual marker data + provenance + index coverage。
- 墨影/Design: create Stitch-ready high-fidelity HTML/CSS for homepage/map/resource/guide/legal states。
- 墨界/墨枢/Frontend/Backend: implement P0 map interactions, analytics proof, SEO audit gate, CF deployment sync。
- 墨盾: recheck final domain, legal pages, assets, analytics, trademark language。
- 墨引/SEO: validate noindex/sitemap/schema/canonical before GSC/Bing submission。
- 墨策 later PM Gate: verify implementation still matches this PRD before final QA。
