From video-essay
Stages 6–7 of the video-essay pipeline. Visual-only Bible-compliance gate per angle, then publish all 3 shorts natively to YouTube Shorts + Instagram Reels + TikTok with ~15 min staggering. Use when all 3 shorts have video.mp4 + covers rendered but upload_result.json is absent. Ends by starting a 24h timer.
How this skill is triggered — by the user, by Claude, or both
Slash command
/video-essay:ve-publish-shortsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Re-verifies the Bible-compliance gates that need the actually-rendered video (script judge already ran at Stage 5a.5). Presents 3 shorts to the user for approval. On approval, uploads all 3 to YouTube Shorts, Instagram Reels, and TikTok — staggered so each gets a clean cold-start. Ends by telling the user to wait 24 hours before invoking `ve-analyze`.
Re-verifies the Bible-compliance gates that need the actually-rendered video (script judge already ran at Stage 5a.5). Presents 3 shorts to the user for approval. On approval, uploads all 3 to YouTube Shorts, Instagram Reels, and TikTok — staggered so each gets a clean cold-start. Ends by telling the user to wait 24 hours before invoking ve-analyze.
Script-level coherence was already gated at Stage 5a.5 in ve-produce — don't re-run it. Stage 6 re-checks only gates that require the rendered output:
A single Agent invocation per angle is enough. Pass:
references/shorts_script_judge_rubric.mdshorts/<angle>/images/001.png (first frame), all three shorts/<angle>/covers/*.pngaudio_timings.json)packages.md (hook concept, length strategy, loop technique declaration)The judge runs Phase A (9 binary gates) then Phase B (0–10 retention prediction). Per-angle gate:
If any short fails, stop the pipeline. Show the user the failed short's scorecard and ask whether to re-cut or override.
Checkpoint: present all 3 finished shorts to the user (file paths to videos + scorecards + first-frame thumbnails). User approves the publish or pulls back to fix something.
ve-publish-shorts <slug> --all --privacy public
Uploads each angle's video.mp4 to all three platforms:
set_thumbnail for cover_shorts.png)POST /api/upload with platform[]=instagram)POST /api/upload with platform[]=tiktok)Posts are staggered ~15 minutes by default to give each angle a clean cold-start. Required env vars: UPLOADPOST_API_KEY + UPLOADPOST_USER — both verified by ve-doctor. The first invocation of YT machinery will auto-detect missing scopes (e.g., adding yt-analytics.readonly) and prompt re-auth in the browser.
Per-angle records land in $EPISODES_DIR/<slug>/upload_result.json:
{
"shorts": {
"A": {
"youtube": {"video_id": "...", "url": "...", ...},
"instagram": {"request_id": "...", "platform_post_id": "...", "url": "..."},
"tiktok": {"request_id": "...", "platform_post_id": "...", "url": "..."}
},
"B": {...},
"C": {...}
}
}
The request_id is the Upload-Post identifier — ve-analyze-shorts uses it to pull per-post analytics 24 hours later.
After Stage 7 completes, start a 24-hour timer. The user can do other work; the algorithm is doing the picking.
Tell the user: "All 3 shorts published. Wait 24h from the last upload, then invoke ve-analyze to see which won and whether to promote to long-form."
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub robertnowell/video-essay --plugin video-essay