# videocompressor.online — SEO/GEO technical recheck after deploy

Task: t_77054eb8  
Tenant: site-videocompressor-20260603  
Date: 2026-06-03  
Owner: 墨引  
Production: https://videocompressor.online/  
Source commit checked: 613eacab43048e1e5ac3af0f714d97eccab32fe5  
Evidence JSON: /root/.hermes/kanban/boards/site-factory/workspaces/t_77054eb8/evidence-production-seo-audit.json  
Audit script: /root/.hermes/kanban/boards/site-factory/workspaces/t_77054eb8/audit_videocompressor_seo.py

## Verdict

SEO verdict: SEO_NO_GO.

上线可访问基础已恢复：固定域名 `videocompressor.online` 现在首页、P0 路由、`/sitemap.xml`、`/robots.txt` 都返回 200，不再是前端交付时的 522。

但不能过 SEO/GEO final gate。P0 阻塞集中在 4 类：

1. 首页缺 self-referencing canonical。
2. 6 个 P0 indexable 页面正文均低于 800 words。
3. 6 个 P0 页面全部缺 JSON-LD：WebApplication/FAQPage/BreadcrumbList/WebSite/CreativeWork。
4. 仓库没有 `seo:audit` script，`deploy` 也没有链到 `npm run build && npm run seo:audit && deploy`。

## Scope checked

Routes:

- `/`
- `/mp4-compressor`
- `/compress-video-for-discord`
- `/compress-video-for-whatsapp`
- `/compress-video-for-instagram`
- `/privacy-video-compressor`
- `/privacy`
- `/terms`
- `/sitemap.xml`
- `/robots.txt`

Source/build checks run in cloned repo:

```bash
npm ci
npm run lint
npm run typecheck
npm run build
npm run verify
```

Result:

- `npm ci`: passed; npm reported 2 moderate vulnerabilities.
- `npm run lint`: passed with 2 `@next/next/no-img-element` warnings.
- `npm run typecheck`: passed.
- `npm run build`: passed; 13 static pages generated.
- `npm run verify`: passed for route contract/static assets.
- `package.json`: no `seo:audit` script; only `verify` exists, and it is not strict enough for SEO content/schema gates.

## Production technical SEO results

| Check | Result |
|---|---|
| Fixed domain | PASS — `https://videocompressor.online/` returns 200 |
| P0 route status | PASS — all 6 P0 SEO pages return 200 |
| `robots.txt` | PASS — 200, allows `/`, references production sitemap |
| `sitemap.xml` | PASS — 200, 8 URLs, includes 6 P0 pages + privacy + terms |
| `noindex` | PASS — no noindex detected on P0 pages |
| Image alt | PASS — audited `<img>` tags have non-empty alt |
| OG/Twitter | PASS for P0 pages; privacy/terms have inherited `og:url` pointing to homepage |
| Forbidden claims | PASS — no detected `unlimited video compression`, `lossless video compressor`, `no quality loss`, `supports all formats`, official-platform compressor claims |
| Canonical | FAIL — homepage has no canonical; other routes canonicalize to trailing-slash production URLs |
| Content depth | FAIL — all P0 SEO pages are ~524–526 visible words, below 800-word gate |
| JSON-LD schema | FAIL — no `application/ld+json` detected on audited pages |
| SEO audit gate | FAIL — no `seo:audit` script or deploy-chain enforcement |

## P0 blockers

### P0-1 — Homepage canonical missing

Evidence:

- `/`: canonical is empty.
- Expected: `https://videocompressor.online/`.

Impact:

- Homepage is the head-term page for `video compressor`; missing canonical weakens indexability hygiene and violates the final SEO gate.

Required fix:

- Add self-referencing canonical for `/`.
- Keep route canonicals absolute and production-domain based.

### P0-2 — P0 pages are thin for SEO gate

Measured visible word counts:

| Route | Word count | Gate |
|---|---:|---:|
| `/` | 526 | >=800 |
| `/mp4-compressor` | 526 | >=800 |
| `/compress-video-for-discord` | 526 | >=800 |
| `/compress-video-for-whatsapp` | 524 | >=800 |
| `/compress-video-for-instagram` | 524 | >=800 |
| `/privacy-video-compressor` | 524 | >=800 |

Impact:

- Current pages are functional landing/tool shells, not enough for the frozen SEO-Copy contract.
- Platform pages are too similar in structure and length; risk thin/near-duplicate SEO pages if submitted as-is.

Required fix:

- Expand each P0 page with final copy blocks from `seo-matrix-v0.md`:
  - 40–70 word short-answer block.
  - Route-specific best settings table.
  - Browser support/caveats.
  - Target-missed recovery guidance.
  - Platform disclaimer where applicable.
  - FAQ answers visible on page.
- Keep each P0 page >=800 visible words and make the use-case pages genuinely distinct.

### P0-3 — JSON-LD schema missing on all P0 pages

Detected schema types: `[]` on every audited route.

Required schema by route:

| Route | Required schema |
|---|---|
| `/` | WebApplication, FAQPage, WebSite |
| `/mp4-compressor` | WebApplication, FAQPage, BreadcrumbList |
| `/compress-video-for-discord` | WebApplication, FAQPage, BreadcrumbList |
| `/compress-video-for-whatsapp` | WebApplication, FAQPage, BreadcrumbList |
| `/compress-video-for-instagram` | WebApplication, FAQPage, BreadcrumbList |
| `/privacy-video-compressor` | CreativeWork, FAQPage, BreadcrumbList |

Required fix:

- Add JSON-LD matching visible page content.
- Do not add unsupported schema claims: no unlimited compression, no lossless/no-quality-loss, no support-all-formats, no official platform affiliation.

### P0-4 — Missing strict `seo:audit` deployment gate

Evidence:

`package.json` scripts currently include:

```json
{
  "build": "next build",
  "lint": "eslint",
  "typecheck": "tsc --noEmit",
  "verify": "node scripts/verify-site.mjs"
}
```

No `seo:audit` script exists.

Impact:

- Current `verify` passes while content depth, homepage canonical, and schema are still failing.
- This violates the site SEO review gate: audit must block deployment if Title/Description/canonical/H structure/word count/density/noindex/sitemap/robots/alt/OG/schema fail.

Required fix:

- Add `seo:audit` script that checks all P0 indexable pages.
- Chain deploy as `npm run build && npm run seo:audit && deploy` or equivalent CI/Cloudflare Pages gate.

## P1 follow-ups

1. Meta descriptions are under the recommended 140-char threshold on all P0 pages:
   - `/`: 132
   - `/mp4-compressor`: 115
   - `/compress-video-for-discord`: 120
   - `/compress-video-for-whatsapp`: 113
   - `/compress-video-for-instagram`: 117
   - `/privacy-video-compressor`: 137
2. P0 title lengths exceed 60 chars on 5/6 non-home SEO pages:
   - `/mp4-compressor`: 73
   - `/compress-video-for-discord`: 66
   - `/compress-video-for-whatsapp`: 67
   - `/compress-video-for-instagram`: 75
   - `/privacy-video-compressor`: 89
3. Keyword/synonym density is below target on all P0 pages:
   - `/`: 1.33%
   - `/mp4-compressor`: 1.14%
   - `/compress-video-for-discord`: 1.33%
   - `/compress-video-for-whatsapp`: 0.38%
   - `/compress-video-for-instagram`: 0.38%
   - `/privacy-video-compressor`: 0.38%
4. `/privacy` and `/terms` inherit `og:url` as `https://videocompressor.online/`; should be route-specific or intentionally waived.
5. `npm ci` reported 2 moderate vulnerabilities. Not an SEO blocker, but should be reviewed before broad launch.
6. `ffmpeg.wasm` is loaded from `unpkg.com`; not a media upload issue, but first-party vendoring remains a performance/privacy-trust follow-up.

## Resolved / passed gates

- Fixed apex domain now returns 200 for all checked routes; previous 522 is resolved at the time of this recheck.
- Sitemap exists and includes all P0 indexable pages:
  - `https://videocompressor.online`
  - `https://videocompressor.online/mp4-compressor`
  - `https://videocompressor.online/compress-video-for-discord`
  - `https://videocompressor.online/compress-video-for-whatsapp`
  - `https://videocompressor.online/compress-video-for-instagram`
  - `https://videocompressor.online/privacy-video-compressor`
  - `https://videocompressor.online/privacy`
  - `https://videocompressor.online/terms`
- Robots does not block crawling:
  - `User-Agent: *`
  - `Allow: /`
  - `Sitemap: https://videocompressor.online/sitemap.xml`
- H structure passes minimum counts on P0 pages: one H1, H2 >=3, H3 >=2.
- No forbidden copy terms detected in production HTML.
- No missing image alt detected in production HTML.

## Required remediation order

Owner: 墨界 / frontend.

1. Add homepage canonical.
2. Add JSON-LD schema components and inject route-specific schema.
3. Expand 6 P0 pages to satisfy SEO-Copy Freeze content depth and uniqueness.
4. Tighten titles/meta descriptions to final SEO ranges.
5. Add strict `seo:audit` and wire it into deploy/CI.
6. Re-run production SEO audit after deploy.

## Metadata

```json
{
  "project_slug": "videocompressor",
  "domain": "videocompressor.online",
  "seo_verdict": "SEO_NO_GO",
  "primary_keyword": "video compressor",
  "p0_blockers": [
    "homepage missing self-referencing canonical",
    "all six P0 SEO pages below 800 visible words",
    "all six P0 pages missing required JSON-LD schema",
    "missing strict seo:audit script and deploy-chain enforcement"
  ],
  "p1_followups": [
    "P0 meta descriptions below recommended 140 chars",
    "5 P0 titles exceed 60 chars",
    "P0 keyword/synonym density below 2.5%-3.6% target",
    "privacy/terms og:url inherits homepage URL",
    "npm ci reports 2 moderate vulnerabilities",
    "consider vendoring ffmpeg.wasm core instead of unpkg runtime dependency"
  ],
  "next_inputs": [
    "frontend remediation for canonical/schema/content-depth/seo:audit",
    "post-remediation production SEO recheck",
    "QA larger real-world video/browser network verification remains separate from this SEO recheck"
  ],
  "artifact_paths": [
    "/root/.hermes/reports/site-videocompressor-20260603/seo-recheck.md",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_77054eb8/evidence-production-seo-audit.json",
    "/root/.hermes/kanban/boards/site-factory/workspaces/t_77054eb8/audit_videocompressor_seo.py"
  ],
  "next_assignee": "mojie"
}
```
