# PRD v1: videocompressor.online

> 阶段：PRD v1 + IA/page matrix
> 日期：2026-06-03
> 负责人：墨策
> Tenant：site-videocompressor-20260603
> 上游研究：/root/.hermes/reports/site-videocompressor-20260603/research-v0.md
> 固定域名：videocompressor.online

---

## 0. 结论先行

- 要不要做：GO_WITH_CONSTRAINTS。
- MVP 一句话：一个 privacy-first、client-side-first 的 Free Online Video Compressor，首版聚焦 MP4/H.264 输出、目标大小压缩和平台预设，不做云端大文件转码。
- 主关键词：video compressor。
- 核心切口：不是泛泛“free/unlimited online compressor”，而是“在浏览器本地压缩视频，默认不上传，快速压到 Discord 10MB、WhatsApp 16MB、Email 25MB 或自定义大小”。
- 首版不做：不承诺 unlimited、lossless、no quality loss、all formats；不做普通 Cloudflare Workers 上的 server-side FFmpeg；不强制登录；不做批量/API/历史记录。
- 下一步：PRD 可进入定价/合规/SEO Copy Freeze/设计/前端拆解；DNS 生产激活仍依赖 registrar nameserver 切到 Cloudflare。

PRD verdict：GO_WITH_CONSTRAINTS。能做，但必须把产品边界写硬：本地优先、真实压缩、诚实性能提示、目标大小任务页，不用夸张承诺换短期转化。

---

## 1. 市场与关键词

### 1.1 关键词与趋势

| Keyword | US monthly volume | CPC | KD | 判断 |
|---|---:|---:|---:|---|
| video compressor | 90,500 | $0.47 | 72 | 主词，高量高难，首页主锚点 |
| compress video | 33,100 | $0.53 | 73 | 首页副词/H2 |
| video compressor online / online video compressor | 12,100 | $0.66 | 63 | 首页语义覆盖 |
| mp4 compressor | 12,100 | $0.18 | 41 | 最重要格式页 |
| free video compressor | 5,400 | $1.41 | 73 | 可覆盖但不能走 fake free |
| compress video for Discord | 1,300 | $0.77 | 31 | 最强长尾任务页 |
| compress video for WhatsApp | 210 | $0.50 | 39 | 低量但强任务 |
| compress video for Instagram | 210 | $1.20 | 39 | 低量，高 CPC，重格式指导 |

趋势判断：stable_old。不是新词红利，是长期存在的高频工具需求。机会来自 exact-match domain + 隐私本地压缩 + 目标大小任务页，而不是抢泛词第一天排名。

### 1.2 为什么值得做

- 需求足够大：head term `video compressor` US 90.5K/月，且相关任务词稳定。
- SERP 未完全封闭：Top 10 里有 FreeConvert/Clideo/VEED 等强站，也有 Rotato、compress.addy.ie、8mb.video 等小工具站。
- 用户任务明确：压小视频、压到平台大小限制、保持可分享格式、避免上传私密视频。
- exact-match domain 有优势：videocompressor.online 和主词完全匹配，适合工具型 SEO。
- 成本可控：client-side-first 避免 v0 承担视频上传、存储、转码、删除、隐私合规和算力成本。

### 1.3 约束

- Head terms KD 高，不能只靠首页和泛文案。
- 视频压缩体验受浏览器、CPU、内存、输入编码、视频时长影响。
- 移动端尤其 iOS/Safari 可能慢、不稳定或部分能力缺失。
- 如果后续做云端转码，普通 Cloudflare Workers 不是大文件 FFmpeg 的合适 runtime。

---

## 2. SERP 与竞品基线

搜索意图：工具型。用户希望立即上传/选择视频，调参数，看到输出大小，下载压缩后文件。

### 2.1 SERP Top 10 摘要

| Rank | Domain | 类型 | 用户可见能力 | 我们可打的点 |
|---:|---|---|---|---|
| 1 | FreeConvert | 大型工具套件 | 1GB free、上传源、H.264/H.265、CRF/bitrate/resize | 本地隐私、少配置、目标大小预设 |
| 2 | videocompress.ai | 独立工具 | 云上传、大文件、no watermark/no limit 类承诺 | 避免夸张承诺，靠真实 no-upload |
| 3 | Clideo | 视频工具套件 | 上传压缩、Premium、平台页 | 本地处理、平台 preset 更直达 |
| 4 | VEED | 视频编辑平台 | 1GB free、估算、编辑器 upsell | 无编辑器干扰，直接压缩 |
| 6 | Rotato Tools | 浏览器压缩 | no upload、FFmpeg browser、H.264 | exact domain + SEO 矩阵 + target MB |
| 9 | compress.addy.ie | 小工具 | browser-side compressor | 更强产品包装和平台任务页 |
| 10 | 8mb.video | Discord target-size | 压到 8MB、短期删除 | 更主流 preset：10/16/25/custom MB |

### 2.2 三层竞品分级

Tier 1 — 直接竞品：

| 竞品 | 核心功能 | 定价/限制 | 优点 | 缺点 | 我们可打的点 |
|---|---|---|---|---|---|
| FreeConvert | 云端视频压缩、codec/bitrate/resize | Free 1GB，升级更大 | 功能深、权重高 | 上传隐私成本、配置复杂 | no-upload、目标大小简化 |
| Clideo | 在线视频压缩 + 工具套件 | Free + Premium | IA 完整，有平台页 | 云上传、Premium 限制 | local privacy + platform preset |
| VEED | 压缩 + 编辑器漏斗 | Free 1GB + paid | 品牌强、体验完整 | 编辑器干扰，产品重 | 单点工具、更快完成 |
| Kommodo | WebCodecs 本地压缩 | Free 工具 | 与本项目角度高度相似 | SEO 矩阵弱、目标大小弱 | exact domain + Discord/WhatsApp/Email presets |
| Rotato Tools | browser FFmpeg/H.264 | Free 工具 | UX 好，no upload | 通用工具页，不是视频压缩主域 | 主词域名 + 长尾页面 |
| 8mb.video | target-size 压缩 | Free | Discord 场景强 | 狭窄，偏 8MB 老限制 | 主流平台 preset + privacy copy |

Tier 2 — 相邻方案：

| 方案 | 如何覆盖场景 | 局限 |
|---|---|---|
| CapCut / Adobe / Vimeo 类编辑器 | 编辑后导出时调分辨率/码率 | 产品重，用户只是想压小文件 |
| 桌面 FFmpeg / HandBrake | 专业压缩、参数可控 | 学习成本高，不适合临时任务 |
| 系统分享/手机相册压缩 | 部分平台自动压缩 | 不可控，无法目标大小 |
| 云盘/通讯工具自带压缩 | 自动降低体积 | 质量不可控，无法导出通用 MP4 |

Tier 3 — 现状替代：

- 反复导出低分辨率视频。
- 用手机/聊天软件转发一次再保存。
- 找随机免费压缩站上传。
- 放弃发送，改发网盘链接。

### 2.3 Competitive minimum

上线最低竞争力不是“页面存在”，而是用户能完成以下动作：

1. 选择一个 MP4 视频并在浏览器本地进入压缩流程。
2. 选择目标大小：Discord 10MB、WhatsApp 16MB、Email 25MB、自定义 MB。
3. 选择分辨率：保持原始、1080p、720p、480p。
4. 选择质量：High / Balanced / Smallest。
5. 开始压缩后看到进度、可取消、失败时有可执行建议。
6. 完成后看到原大小、输出大小、压缩比例、所用 preset，并下载结果。
7. 页面明确说明：默认本地处理、不上传视频、不采集文件名/媒体内容。
8. 不支持场景下给出 fallback copy：换桌面 Chrome/Edge、降低分辨率、缩短视频、改用较小目标。

---

## 3. 目标用户 ICP

### ICP A：社媒/内容创作者（主力）

- Who：短视频创作者、独立博主、课程作者、社媒运营。
- Pain：视频文件太大，上传/分享慢，平台提示超限制，临时需要压小。
- Current：VEED/Clideo/FreeConvert、手机自带压缩、CapCut 重新导出。
- Trigger：要发 Discord/WhatsApp/Email/Instagram，被大小限制卡住。
- Hangout：YouTube、TikTok、Instagram、Discord、Reddit creator communities。
- 付费意愿：中等。单次工具免费优先；批量、云端大文件、团队内容运营才有付费空间。

### ICP B：普通办公/学生用户

- Who：需要通过邮件、课堂、表单或聊天软件提交视频的人。
- Pain：不懂码率/分辨率，只知道“要小于 25MB/16MB”。
- Current：随机搜索 online video compressor。
- Trigger：邮件退回、表单限制、WhatsApp 发送失败。
- Hangout：Google Search、学校/公司帮助文档、邮件客户端。
- 付费意愿：低。适合作为 SEO 免费流量。

### ICP C：开发者/隐私敏感用户

- Who：开发者、设计师、产品经理、处理 demo/bug recording 的团队成员。
- Pain：屏幕录制可能包含代码、客户信息或内部界面，不想上传到陌生网站。
- Current：HandBrake/FFmpeg、QuickTime 导出、Addy/Rotato 工具。
- Trigger：要发送 bug recording、产品 demo、PR 附件。
- Hangout：GitHub、Discord、Slack、Hacker News、Reddit。
- 付费意愿：中等偏低；愿意为本地隐私、批量、CLI/API 或团队规范付费。

选定主力用户：ICP A + C。A 带来最大搜索与平台任务页，C 强化 no-upload 差异化和口碑传播。

---

## 4. 产品定位

### 4.1 定位语句

FOR creators, makers, and teams
WHO need to reduce video file size before sharing or uploading
videocompressor.online IS A privacy-first online video compressor
THAT compresses MP4 videos in the browser with target-size presets
UNLIKE upload-based video tools and bloated editors
videocompressor.online keeps the default workflow local, simple, and honest about quality/performance tradeoffs.

### 4.2 消息层级

| 层级 | 内容 |
|---|---|
| Headline | Compress Video in Your Browser |
| Subhead | Reduce MP4 file size with target presets for Discord, WhatsApp, Email, Instagram, or any custom MB — no upload by default. |
| Benefit 1 | Private by default: videos are processed locally in supported browsers. |
| Benefit 2 | Hit real limits faster: 10MB, 16MB, 25MB and custom target-size presets. |
| Benefit 3 | Simple quality control: choose resolution and quality without learning bitrate. |
| Proof | Built for MP4/H.264 sharing tasks; browser support and limits shown upfront. |

### 4.3 禁止说法

- unlimited video compression
- lossless video compressor
- no quality loss
- supports all formats
- compress any video size
- 5GB local compression
- fastest compressor online
- official Discord/WhatsApp/Instagram compressor

### 4.4 差异化优先级

1. no-upload default privacy。
2. target-size presets，而不是只给 bitrate/quality slider。
3. MP4/H.264 sharing compatibility。
4. 失败/fallback 诚实提示，降低用户挫败。
5. exact-match domain + 任务页 SEO。

---

## 5. 产品范围

### 5.1 MVP scope / P0

| 模块 | P0 需求 | 验收标准 |
|---|---|---|
| 文件选择 | 支持用户从本地选择视频；P0 推荐 MP4/H.264 输入 | 选择后显示文件大小、类型、时长/分辨率（能解析则显示） |
| 本地处理声明 | Hero/tool 区明确 no upload default | 页面 copy 与隐私页一致；不得采集 filename/media content |
| 压缩引擎 | WebCodecs-first；可评估 ffmpeg.wasm fallback | Chromium 桌面可完成 P0 MP4 压缩；fallback 失败时提示明确 |
| 输出格式 | P0 输出 MP4/H.264 + AAC 优先 | 下载文件可在主流播放器播放 |
| 目标大小 | Discord 10MB、WhatsApp 16MB、Email 25MB、自定义 MB | preset 一键填充目标；自定义 MB 有合理边界校验 |
| Instagram preset | 以格式/分辨率/质量建议为主，不承诺精确 MB | 提供 1080p/720p、H.264/AAC、quality guidance |
| 分辨率 | keep original / 1080p / 720p / 480p | 输出分辨率符合选择或清晰提示无法保持 |
| 质量 | High / Balanced / Smallest | 不同选项能影响码率/输出大小 |
| 估算 | 压缩前显示目标大小、可能质量损失、预计耗时提示 | 不做虚假精准；用 conservative copy |
| 进度 | processing progress、cancel、error state | 长任务不中断 UI；用户可取消 |
| 结果 | 显示 before/after size、ratio、download | 下载成功；结果不上传服务器 |
| 失败恢复 | 根据原因给建议 | 示例：换 Chrome/Edge、降到 720p、提高目标 MB、缩短视频 |
| SEO pages | 首页 + MP4 + Discord + WhatsApp + Instagram + no-upload/privacy page | 每页有独特任务、内嵌工具入口或 preset deep-link |
| Analytics | 只采集非敏感事件 | 不采集 filename、media content、local path |

### 5.2 P1 / v1.1

- `/compress-video-to-10mb`、`/compress-video-to-25mb`、`/video-compressor-for-email`。
- MOV/WebM input support，前提是真实验证。
- 更精确的 two-pass target-size approach 或迭代压缩。
- Batch compression（本地队列）。
- Advanced settings：bitrate、fps、codec experimental。
- Server-side large-file / paid queue，必须另开隐私与成本设计。

### 5.3 Later

- 登录、历史记录、云端导入/导出。
- API / team workspace。
- Stripe 付费计划。
- R2 temporary storage + Queue + external transcoding runtime。
- H.265/AV1 advanced compression。

### 5.4 NOT-DO

- 不做 v0 云端上传压缩作为默认流程。
- 不在普通 Cloudflare Workers 上承诺大文件 FFmpeg。
- 不承诺 unlimited/free/no limit。
- 不承诺 lossless/no quality loss。
- 不承诺 all formats / all codecs。
- 不强制登录后才能压缩。
- 不做“最佳视频压缩器”空泛 listicle 作为首批核心页。
- 不把 placeholder 工具页放进 sitemap。
- 不采集文件名、本地路径、视频内容、缩略图或媒体元数据原文。

---

## 6. 浏览器本地压缩技术边界

### 6.1 推荐实现策略

- Runtime architecture：Cloudflare Pages static app + browser local compression。
- Compression path：WebCodecs-first。
- Fallback：可引入 ffmpeg.wasm，但必须由研发评估 bundle size、内存、初始化速度和移动端可用性；若代价过高，fallback 可以退化为明确 copy，而不是假装支持。
- Output：MP4/H.264 + AAC first。
- Server：v0 不需要后端转码 API；仅保留 analytics、静态页面、隐私/ToS。

### 6.2 WebCodecs 可行性

- 优点：Chromium 支持较好，可能利用硬件编码，适合 desktop Chrome/Edge。
- 限制：浏览器支持不一致；Safari/iOS 支持和性能风险高；封装 MP4 muxing 仍需要实现或依赖库。
- PRD 口径：Best on desktop Chrome or Edge. Other browsers may be slower or unsupported.

### 6.3 ffmpeg.wasm 可行性

- 优点：覆盖面可能更广，功能接近 FFmpeg，适合 fallback/advanced path。
- 限制：包体大、加载慢、内存重、移动端容易失败；处理长视频体验差。
- PRD 口径：If your browser cannot process the video locally, try a smaller file, lower resolution, or desktop Chrome/Edge.

### 6.4 移动端限制

- 手机 CPU/内存受限，压缩速度可能很慢。
- iOS/Safari 对 WebCodecs/wasm/内存限制更敏感。
- 大文件、长视频、高分辨率视频可能失败。
- Mobile UI 必须先提示推荐文件大小和“desktop may work better”。

### 6.5 File cap copy

默认展示建议：

- Recommended for smooth local processing: videos under 500MB on desktop Chrome/Edge.
- Larger files may work depending on your device, browser, codec, duration, and available memory.
- For best results, try 720p or a higher target size before retrying.

注意：500MB 是推荐上限 copy，不是“硬承诺”。上线前研发/QA 必须用真实测试结果更新该数字；若测试只覆盖 100MB，应改为 100MB，不得保留 500MB 营销话术。

### 6.6 Fallback copy

- Your browser could not complete local compression.
- Try desktop Chrome or Edge.
- Choose 720p or 480p.
- Increase the target size.
- Use a shorter video clip.
- Close other tabs and retry.
- Some formats/codecs are not supported in the first version.

---

## 7. 页面信息架构

### 7.1 首页 `/`

目标词：video compressor；secondary：compress video, online video compressor, free video compressor。

Section 顺序：

1. Hero + inline tool
   - H1：Compress Video in Your Browser
   - Subhead：Reduce MP4 file size with target presets for Discord, WhatsApp, Email, Instagram, or any custom MB — no upload by default.
   - Tool：file picker、preset buttons、resolution、quality、custom MB、start compression。
2. Trust/privacy strip
   - Local processing in supported browsers
   - No upload by default
   - No filename or media-content tracking
3. Presets
   - Discord 10MB
   - WhatsApp 16MB
   - Email 25MB
   - Instagram quality/resolution
   - Custom MB
4. How it works
   - Choose video
   - Pick target size/resolution
   - Compress locally and download
5. Feature details
   - Target-size compression
   - MP4/H.264 sharing compatibility
   - Progress/cancel/retry guidance
6. Browser support & limits
   - Best on Chrome/Edge desktop
   - Safari/iPhone caveat
   - Large files depend on device
7. Use cases
   - Discord upload
   - WhatsApp sharing
   - Email attachment
   - Instagram upload prep
   - Private screen recordings
8. FAQ
9. Footer CTA + privacy links

### 7.2 Tool UI states

| State | UI requirement |
|---|---|
| Empty | File drop/select + preset preview + privacy message |
| File selected | Show size/type/duration/resolution if available |
| Unsupported file | Explain P0 supports MP4/H.264 first; suggest alternate export |
| Ready | Target size + resolution + quality + start button |
| Processing | Progress, elapsed time, cancel, “keep tab open” copy |
| Success | Before/after size, compression ratio, download, retry another |
| Target missed | Show actual size and suggestions; do not hide miss |
| Failed | Reason bucket + actionable fallback copy |
| Mobile warning | “Local compression may be slower on phones” |

### 7.3 Route contract

| Route | Canonical | Index policy | Purpose | Required unique value |
|---|---|---|---|---|
| `/` | yes | index | Head tool page | Full tool + all presets |
| `/mp4-compressor` | yes | index | MP4 format page | MP4/H.264/AAC explanation + tool preset |
| `/compress-video-for-discord` | yes | index | Discord task page | 10MB preset + Discord-oriented copy |
| `/compress-video-for-whatsapp` | yes | index | WhatsApp task page | 16MB preset + sharing caveats |
| `/compress-video-for-instagram` | yes | index | Instagram task page | resolution/quality guidance, no fake exact MB |
| `/privacy-video-compressor` | yes | index | No-upload explainer | Browser local processing explanation |
| `/privacy` | yes | index | Legal/privacy | no filename/content telemetry policy |
| `/terms` | yes | index | Terms | limitation and acceptable use |

Aliases/redirects:

- `/no-upload-video-compressor` → 308 to `/privacy-video-compressor` unless SEO decides to keep separate page with unique content.
- `/online-video-compressor` → optional 308 to `/` if no unique page is built.
- `/free-video-compressor` → optional 308 to `/` if no unique page is built.
- `/compress-video-online` → optional 308 to `/`.

---

## 8. SEO 页面矩阵

### 8.1 P0 indexable pages

| Page | Target keyword | Search intent | Page type | Priority | Tool behavior | Index policy |
|---|---|---|---|---|---|---|
| `/` | video compressor | compress video now | Homepage/tool | P0 | default tool, all presets | index |
| `/mp4-compressor` | mp4 compressor | reduce MP4 file size | Format tool page | P0 | MP4-first copy, H.264 preset | index |
| `/compress-video-for-discord` | compress video for Discord | fit upload/chat limit | Platform task page | P0 | preselect 10MB target | index |
| `/compress-video-for-whatsapp` | compress video for WhatsApp | fit WhatsApp sharing | Platform task page | P0 | preselect 16MB target | index |
| `/compress-video-for-instagram` | compress video for Instagram | prepare upload quality/size | Platform task page | P0 | preselect 1080p balanced | index |
| `/privacy-video-compressor` | no upload video compressor | find private/local compressor | Differentiation page | P0 | privacy explanation + tool CTA | index |

### 8.2 P1 pages

| Page | Target keyword | Condition to index |
|---|---|---|
| `/compress-video-to-10mb` | compress video to 10mb | Tool supports target-size preset reliably |
| `/compress-video-to-25mb` | compress video to 25mb | Tool supports target-size preset reliably |
| `/compress-video-to-50mb` | compress video to 50mb | Real preset + guidance, not thin copy |
| `/video-compressor-for-email` | video compressor for email | Email 25MB flow works |
| `/reduce-video-file-size` | reduce video file size | Unique educational/tool page |
| `/mov-compressor` | mov compressor | MOV input verified |
| `/webm-compressor` | webm compressor | WebM input verified |
| `/video-resizer` | video resizer | Separate resize function exists |

### 8.3 Noindex / avoid

- “compress video for every platform” pages with no real preset。
- codec pages before support is real：AV1/H.265/HEVC。
- “best video compressor” listicles before product has working comparisons。
- Any placeholder, partial, prototype or unsupported-format page。

### 8.4 SEO copy freeze requirements for next gate

SEO/文案必须为每个 P0 indexable page 输出：primary keyword、semantic keywords、search intent、target word count、H1/H2/H3、final copy blocks、FAQ/schema copy、density waiver（如有）。设计前必须冻结，不能上线后硬塞文本。

---

## 9. 核心用户任务与验收标准

### 9.1 Core tasks

| ID | User task | Acceptance criteria |
|---|---|---|
| T1 | Compress an MP4 video under a custom target size | User selects local MP4, enters target MB, compresses, downloads playable MP4; result shows before/after size |
| T2 | Compress video for Discord 10MB | `/compress-video-for-discord` opens with 10MB preset; output aims below 10MB or explains target miss with next action |
| T3 | Compress video for WhatsApp 16MB | WhatsApp page opens with 16MB preset; copy avoids unsupported official claims beyond sourced size guidance |
| T4 | Prepare video for Instagram | User can choose Instagram quality/resolution guidance; page does not invent a strict universal MB limit |
| T5 | Compress a private screen recording without upload | Page and privacy copy make clear default local processing; network inspection should show no media upload |
| T6 | Recover from unsupported/failed compression | Failure state gives actionable browser/resolution/target-size suggestions |
| T7 | Use on mobile | Mobile layout usable; warning shown; no false promise of desktop-equivalent speed |

### 9.2 PM acceptance criteria

PM_GO requires all P0 items below:

- Tool is usable from hero without scrolling on desktop and near top on mobile。
- At least one representative MP4/H.264 desktop Chrome compression flow works end-to-end。
- Discord 10MB、WhatsApp 16MB、Email 25MB、自定义 MB controls are visible and wired。
- Output result includes before size、after size、ratio、download。
- Privacy copy is consistent across homepage、privacy page、tool empty state。
- Unsupported/failed states are not generic “something went wrong”。
- No forbidden copy appears：unlimited/lossless/no quality loss/all formats。
- P0 pages each have unique task value and tool/preset entry。
- Placeholder/partial pages are noindex and excluded from sitemap。

### 9.3 QA acceptance notes

QA 必须做真实浏览器任务，不只检查 DOM：

- Desktop Chrome/Edge: complete one MP4 compression。
- Mobile viewport 390/430px: file picker/preset UI/error copy usable。
- Network check: media file should not upload in default local mode。
- Failure path: unsupported file or too-large file should show actionable copy。
- Sitemap/robots: only real P0 pages indexable。

---

## 10. 技术建议

### 10.1 runtime_architecture

- v0：Cloudflare Pages static export / static app。
- Compression：browser local processing。
- Backend：none for video processing in v0。
- Analytics：Plausible or equivalent privacy-safe analytics。
- Legal pages：static privacy/terms。
- Cloudflare zone：created, status pending；nameserver activation required。

### 10.2 Compression implementation contract

研发需在技术方案里明确：

- WebCodecs support matrix。
- MP4 muxing library choice。
- ffmpeg.wasm 是否引入；若引入，bundle/loading/memory 策略。
- Tested input matrix：codec、duration、size、resolution、browser、device。
- Recommended max file size copy based on tested evidence。
- Target-size algorithm：single-pass estimate or iterative retry；若不能保证目标大小，UI 必须诚实显示 target missed。
- Cancellation and memory cleanup。

### 10.3 Analytics events

不得包含 filename、local path、thumbnail、media content、raw metadata。

Allowed events:

- `file_selected`：bucketed size range、mime/category、browser、device class。
- `preset_selected`：discord_10mb / whatsapp_16mb / email_25mb / instagram / custom。
- `compression_started`：resolution、quality、target bucket。
- `compression_completed`：input_size_bucket、output_size_bucket、duration_bucket、success_target_met boolean。
- `compression_failed_reason`：unsupported_browser / unsupported_codec / memory / timeout / mux_error / user_cancelled / unknown。
- `download_clicked`。

### 10.4 DNS / Cloudflare

- Zone id：c5fd47553bd8cfc704ec2055aa06f78b。
- Zone status：pending。
- Required nameservers：coraline.ns.cloudflare.com, nico.ns.cloudflare.com。
- Original nameservers：ns1.dyna-ns.net, ns2.dyna-ns.net。
- PRD/设计/开发可继续；production activation gate 仍需 DNS 切换。

---

## 11. 定价与商业化草案

v0 建议免费无登录，优先抢 SEO 和任务完成率。不要首版强付费墙。

### 11.1 Free v0

- Free：本地浏览器压缩、单文件、P0 presets。
- 限制来自设备/浏览器，不写 unlimited。
- 不强制注册。
- 可接受轻量非侵入广告，但不放在工具操作主路径中。

### 11.2 Future Pro

| Plan | 价格建议 | 权益 | 上限 |
|---|---:|---|---|
| Free | $0 | Browser local single-file compression, presets | Device/browser practical limits |
| Pro | $6-9/mo | Batch local queue, advanced settings, saved presets, optional cloud large-file queue | 明确月分钟/GB，不写 unlimited |
| Team/Business | Contact | Team workflow, API, compliance/deletion SLA, content ops use case | Contract limit |

成本口径：v0 client-side compression 的边际转码成本接近 0；若后续加入 server-side large-file compression，必须按分钟/GB 建成本模型，Pro 月费必须高于月转码成本，并启用 Stripe automatic_tax 等付费站硬闸门。

---

## 12. GTM

### 12.1 渠道选择

| 渠道 | 选/不选 | 理由 | 首月目标 |
|---|---|---|---|
| SEO | 选 | 主词和任务词需求明确 | P0 pages indexed，长尾进前 50 |
| 目录提交 | 选 | 工具站冷启动 | 30+ directories/listings |
| Reddit/HN | 选 | privacy/no-upload angle 有传播点 | 2-3 个高质量分享 |
| Product Hunt | 暂缓 | 工具简单，除非 UX 很强 | v1 后再评估 |
| X/Twitter | 选 | 孟健个人品牌可讲“本地压缩/隐私工具” | 1 条 launch + 2 条 build notes |
| Paid ads | 不选 | CPC 低但转化未知 | 30 天后看数据 |

### 12.2 首周动作

Day 0：上线首页 + P0 pages + sitemap + privacy/terms + analytics。  
Day 0-1：提交目录，发 X/Twitter。  
Day 1-2：Reddit/HN 软分享，重点讲 no-upload/browser local。  
Day 3-7：补 P1 target-size pages，基于 search console 调整标题与 FAQ。

### 12.3 30 天判断

| 信号 | Kill | Iterate | Scale |
|---|---|---|---|
| 日访客 | <10 | 10-100 | >100 |
| 工具使用率 | <10% | 10-40% | >40% |
| Compression success rate | <40% | 40-75% | >75% |
| Download rate | <10% | 10-25% | >25% |
| 长尾排名 | 无 | 进前 50 | 进前 20/10 |
| 用户反馈 | 只有失败/抱怨 | 有可修复问题 | 正面且请求 batch/large-file |

---

## 13. 风险评估

| 风险 | 描述 | 概率 | 影响 | 缓解 |
|---|---|---:|---:|---|
| 技术风险 | WebCodecs/wasm 支持不一致，移动端慢 | 高 | 高 | Chrome/Edge first；fallback copy；测试后更新 file cap |
| SERP 风险 | Head terms 被大站占据 | 高 | 中 | 用 exact domain + MP4/Discord/no-upload 长尾切入 |
| 体验风险 | 压不到目标大小或质量太差 | 中 | 高 | 显示 target missed；给 resolution/quality guidance |
| 合规/隐私风险 | 若上传视频会带来存储/删除/内容责任 | 中 | 高 | v0 no-upload default；不采集 filename/media content |
| 成本风险 | server-side 转码成本不可控 | 中 | 高 | v0 不做 server-side；后续按分钟/GB 定价 |
| Copy 风险 | 夸张 claim 导致信任/投诉问题 | 中 | 中 | 禁止 unlimited/lossless/no quality loss/all formats |
| DNS 风险 | Cloudflare zone pending | 中 | 中 | PRD 继续；上线前要求 NS 切换完成 |

---

## 14. 下游输入

### 14.1 给墨账 / Pricing

- v0 以免费无登录为主。
- 未来 Pro 只针对 batch / advanced / server-side large-file queue。
- 若接 Stripe：必须三档公开套餐或写明例外；Checkout 需 automatic_tax、billing_address_collection、tax_id_collection。
- 不得把 Pro 写成 unlimited；必须有分钟/GB/月上限。

### 14.2 给墨盾 / Compliance

重点检查：

- no-upload default 声明和真实实现一致。
- analytics 不采集 filename、path、media content、thumbnail、原始元数据。
- Privacy/Terms 写清浏览器本地处理边界、失败/兼容性、用户自有内容责任。
- 不使用 Discord/WhatsApp/Instagram official 暗示；平台名只作兼容/分享场景描述。
- 若后续 server mode，必须新增文件 retention、deletion window、consent、abuse handling。

### 14.3 给墨引 + 墨笔 / SEO Copy Freeze

必须冻结 P0 六页：`/`、`/mp4-compressor`、`/compress-video-for-discord`、`/compress-video-for-whatsapp`、`/compress-video-for-instagram`、`/privacy-video-compressor`。

Copy 硬约束：

- Headline 优先：Compress Video in Your Browser。
- 不写 forbidden claims。
- 每页首屏必须有工具入口或 preset deep-link。
- 每页 FAQ 覆盖：是否上传、支持浏览器、为什么压缩会降质、为什么没压到目标、手机是否可用。

### 14.4 给墨影 / Design

设计必须输出：

- Homepage desktop/mobile。
- Tool states：empty、selected、processing、success、failed、unsupported/mobile warning。
- Platform page template：Discord/WhatsApp/Instagram。
- Privacy/no-upload page。
- Content-fit matrix：SEO copy 不可被视觉裁掉。

视觉方向：实用工具站，不做重 SaaS。核心是文件选择区、preset chips、progress/result card、privacy trust strip。

### 14.5 给墨界 / Frontend

首版技术栈建议：

- Next.js/Astro/static app 均可，但部署目标是 Cloudflare Pages static first。
- Browser compression library stack 由技术评估决定；必须先做 spike 验证再承诺支持矩阵。
- 工具实现优先于营销页数量。
- route contract 不得擅自改 `/privacy`、`/terms`、`/mp4-compressor` 等 canonical path；如改必须加 308 redirect。
- 默认不建 server upload API。

---

## 15. Metadata handoff

```json
{
  "prd_verdict": "GO_WITH_CONSTRAINTS",
  "site_type": "client-side-first privacy-first free online video compressor",
  "runtime_architecture": "Cloudflare Pages static app + browser local compression; no server-side FFmpeg in v0",
  "primary_keyword": "video compressor",
  "fixed_domain": "videocompressor.online",
  "page_matrix": [
    {"path":"/","primary_keyword":"video compressor","priority":"P0","index_policy":"index"},
    {"path":"/mp4-compressor","primary_keyword":"mp4 compressor","priority":"P0","index_policy":"index"},
    {"path":"/compress-video-for-discord","primary_keyword":"compress video for Discord","priority":"P0","index_policy":"index","preset":"10MB"},
    {"path":"/compress-video-for-whatsapp","primary_keyword":"compress video for WhatsApp","priority":"P0","index_policy":"index","preset":"16MB"},
    {"path":"/compress-video-for-instagram","primary_keyword":"compress video for Instagram","priority":"P0","index_policy":"index","preset":"1080p/balanced guidance"},
    {"path":"/privacy-video-compressor","primary_keyword":"no upload video compressor","priority":"P0","index_policy":"index"}
  ],
  "core_tasks": [
    "compress_mp4_to_custom_target_mb",
    "compress_video_for_discord_10mb",
    "compress_video_for_whatsapp_16mb",
    "prepare_video_for_instagram_quality_resolution",
    "compress_private_screen_recording_without_upload",
    "recover_from_unsupported_or_failed_compression"
  ],
  "technical_constraints": [
    "WebCodecs-first; strongest on desktop Chrome/Edge",
    "ffmpeg.wasm fallback requires bundle/performance/memory validation",
    "Safari/iOS/mobile may be slow or unsupported",
    "P0 output MP4/H.264 + AAC; do not promise all formats/codecs",
    "Recommended file cap copy must be updated from real QA evidence before launch",
    "Default local mode must not upload media or collect filename/media content",
    "Ordinary Cloudflare Workers are not suitable for v0 large-file FFmpeg transcoding"
  ],
  "next_inputs": [
    "Pricing contract for future Pro/batch/server-side queue boundaries",
    "Compliance copy for no-upload/privacy/terms/platform-name usage",
    "SEO Copy Freeze for six P0 pages",
    "Design package including all tool states and platform page template",
    "Frontend spike result for WebCodecs vs ffmpeg.wasm and tested browser/file caps",
    "DNS activation: set nameservers to coraline.ns.cloudflare.com and nico.ns.cloudflare.com"
  ],
  "artifact_paths": [
    "/root/.hermes/reports/site-videocompressor-20260603/prd-v1.md",
    "/root/.hermes/reports/site-videocompressor-20260603/research-v0.md",
    "/root/.hermes/reports/site-videocompressor-20260603/input-brief.md",
    "/root/.hermes/reports/site-videocompressor-20260603/cloudflare-zone.json"
  ]
}
```
