---
name: tiktok-video-quality-editor
description: Repeatable TikTok/short-form video editing quality system for Sam's Dishrated and Creature Beach posts. Use when creating, reviewing, remediating, drafting, scheduling, or posting TikTok videos/reels from raw footage, Drive clips, Postiz drafts, FFmpeg exports, or automation outputs; especially when checking for static openings, repetitive concepts, weak captions, bad crops, generic overlays, source reuse, or whether an edit is good enough to post.
---

# TikTok Video Quality Editor

## Prime rule

Optimize for “would a stranger keep watching?” not “did the file export?” A technically valid MP4 is a failure if it feels repetitive, static, generic, badly cropped, or captioned like automation.

Do not post by default. Create/review the edit package first, then submit only when the request or standing workflow explicitly allows posting and the gates below pass.

## Required workflow

1. **Identify the account and lane**
   - Dishrated: food process, rating, reveal, score, app CTA.
   - Creature Beach: aquarium/weird creature, beach find ID, shell/product mystery, animal attitude, subscribe/follow CTA.

2. **Check source uniqueness before editing**
   - Read `tiktok-marketing/video-post-ledger.json` and recent evidence folders.
   - Reject exact source reuse unless Sam explicitly approved it.
   - Also reject same-feeling reuse: same source family + same formula + same viewer promise.
   - “New export,” “new caption,” or “different crop” is not new content.

3. **Pick the best moving hook first**
   - Start on motion/surprise/action. Never lead with a frozen photo, static establishing shot, slow pan with no subject, or black/blank frame.
   - Trim into the best moment immediately; context can come later.
   - If no strong first second exists, skip/escalate instead of forcing a post.

4. **Build one clear watch reason**
   - Use one hook concept per video: rating reveal, weird creature reveal, side-eye/attitude contest, beach mystery, “would you eat/buy this?”, before/after/process, or subscribe-for-next-find.
   - Do not stack generic labels. Avoid “nice clip + caption.”

5. **Caption and overlay like native TikTok**
   - On-screen hook: 3–8 words, human, punchy, safe-zone placed.
   - Caption: one natural sentence + optional question/CTA + 3–5 specific hashtags.
   - Avoid templated phrases, brand jargon, “discover the magic,” over-explaining, or repeated formula names.

6. **Export and inspect proof**
   - Use 9:16, preferably 1080×1920, H.264, 30fps, `+faststart`.
   - Run `scripts/tiktok_video_gate.py` on every final MP4.
   - Inspect contact sheet/proof frames visually before posting.
   - For real phone/Drive footage, `video_made_with_ai` must be false.
   - Request `autoAddMusic: yes` through Postiz when direct-posting, but do not claim exact TikTok sound proof unless verified.

7. **Post only after gates pass**
   - Use `tiktok-marketing/post-video.js --copy-reviewed` for real submissions.
   - Verify Postiz readback and public/release proof when available.
   - If proof is queued/missing, report that honestly; queued is not done.

## Hard fail gates

Do not post or schedule if any are true:

- First 2 seconds are still photos, frozen frames, black/blank frames, or boring static footage.
- Opening frame is blurry, badly cropped, too distant, or visually unclear.
- Same source package/family was recently used without explicit approval.
- Same viewer-facing formula was recently used enough that Sam would say “this is the same video again.”
- Overlay text is generic, unreadable, too high, too low, or default/AI-template looking.
- Caption sounds like automation or repeats recent captions.
- No visible subject/action/reveal by second 2.
- Creature Beach lacks a subscribe/follow/next-weird-find angle when appropriate.
- Dishrated lacks process, rating/reveal, score, or app/use-case angle when appropriate.
- Postiz/API says accepted but no downstream listing/public proof exists and the final report calls it done.

## Brand-specific standards

### Dishrated

Prefer:
- process/action first: bite, sizzle, pour, cut, crunch, plating, score reveal;
- “Would you eat this?” / “Rate this before we do” / “This score surprised me” hooks;
- final Dishrated score/end-card or clear rating moment;
- caption mentions trying/scoring food with Dishrated when natural.

Avoid:
- repeated beef bowl/steak/old meal reuse;
- only final plate beauty shots;
- no recipe/process;
- captions that just describe the food.

### Creature Beach

Prefer:
- aquarium/weird creature hooks, animal attitude, shell ID mystery, beach find ranking, product/drop voting;
- strong motion/surprise in first second;
- punchy generic animal wording instead of exact zoo/location naming;
- follow/subscribe CTA tied to the next weird creature/find.

Avoid:
- repeated zoo side-eye/council/security variants unless Sam asked for the series;
- static shell table clips without a game/story;
- generic pretty-shell posts;
- AI-generated-looking visuals or default template fonts.

## Required review note

Every final edit package should include a short `quality-gate.json` or note answering:

1. What is the first-second motion/surprise?
2. What makes this concept different from the last 5 posts for this account?
3. What is the one watch reason?
4. Is the crop readable on a phone?
5. Is overlay text inside TikTok safe zones and non-generic?
6. Does the caption sound human and different from recent captions?
7. Are source package and MP4 new, or is reuse explicitly approved?
8. What proof exists: contact sheet, ffprobe, Postiz readback, public URL/releaseId?

## Resources

- `scripts/tiktok_video_gate.py`: deterministic first-pass QA helper. It creates proof frames/contact sheet, runs ffprobe/freezedetect, and writes a JSON review stub. Passing this script is not enough; visual inspection is still required.
- `references/editing-patterns.md`: hook/caption/concept patterns and anti-repetition examples.
