DeepFilterNet takes the room noise out, then loudnorm brings the voice to −16 LUFS with a true peak of −1.5 dB. The video stream is copied, never re-encoded.
phantom edit inspect-video
====================================================
VIDEO QUALITY CONTROL INSPECTION REPORT
====================================================
Resolution: 1920x1080 (1080p Full HD)
Aspect Ratio: 16:9 [Ratio: 1.78]
Duration: 00:07:31.000
Frame Rate: 30.00 fps
----------------------------------------------------
• Black Detect: min_duration=0.1s
• Freeze Detect: min_duration=0.5s
----------------------------------------------------
SUCCESS: No video glitches or bad frames detected
A check before anyone sees it
ffmpeg’s blackdetect and freezedetect scan the final file and print the exact timestamp of anything wrong, ready to find in an editor.
phantom meta approve-title
My new app changes YouTube forever
Current title (not approved)
1. [14/16] I Built the App YouTube Should Have Shipped (44 chars)
2. [13/16] This App Replaced My Video Editor (33 chars)
3. [13/16] Why I Stopped Editing My Own Videos (35 chars)
4. [12/16] One Command Now Edits My Whole Video (36 chars)
5. [12/16] My Editing Workflow Is a Terminal Now (37 chars)
Titles, scored out of sixteen
Claude drafts the titles and scores each on eight counts, from clarity to honesty. The top one is a placeholder until a person approves it.
metadata.json
{
"title": "How Semantic Caching Works and How to Use It",
"titleReviewed": true,
"timestamps": [
{ "timestamp": "00:00", "topic": "The Repeat Question Problem" },
{ "timestamp": "00:40", "topic": "Who Should Use Semantic Caching" },
{ "timestamp": "01:35", "topic": "Semantic Caching Flow Example" }
],
"tweetTemplate": "... {url}",
"resources": [ ... ],
"recommendations": [ ... ]
}
Everything YouTube asks for
Description, chapters, tweet, next-video picks and resource links, all written from the trimmed captions so a cut take never reaches them.
phantom projects status --repackage
Six weeks of content in one sitting
Stage 10: [Needs Repackaging]➜ Next Step: Rework the title & thumbnail:
CTR 2.1% in its first 2 days
< channel's 28-day 3.4%
Files: [✓ final.mp4] | [✓ metadata.json]
A second look after 48 hours
Two days after publishing, the video’s click-through rate is read from YouTube Studio and set against the channel’s 28-day figure. A weak one is flagged for a new title and thumbnail.
step-card, rendered by phantom
B-roll, timed to the words
Each template is built once. Per video I write a small cue file and run one command, and every clip lands on the exact word that starts it. It costs no LLM tokens.
These five clips were rendered by Phantom for this page, in this page’s colours.
A numbered point, on cue
Step 2 of 7, red flag number 3, tip number 7. The label is a pattern and the title fits itself to the frame, from 112 pixels down to 56.
phantom broll clip step-card -o step-2.mp4 \
--cue "so number two" --until "every single pause" \
--var number=2 --var total=7 \
--var "title=Trim every silence"
One number, counted up
Write the value the way it should read. The digits roll up like an odometer, and the words around them sit small on the same baseline.