Create post video
Create an on-brand social video post: render a short video with HyperFrames (video from HTML) in your Marky brand colors, fonts, and logo, then upload it to Marky, caption it in your voice, and schedule it everywhere you're connected. Use when you want a video post — a promo, explainer, stat animation, countdown sting, or captioned clip — produced and queued from one conversation. Reads auth and endpoints from the marky-api skill. Also triggers on "make a video post", "turn this into a reel", "animate this stat". For a still graphic or carousel, see create-post-graphic.From its SKILL.md
npx -y skills add Marky-Team/marky-skills --skill create-post-videoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.1 KB, as published. Nobody here has run it
Create Post: Video
Video is the highest-reach format on every platform Marky publishes to, and it is the one format agents historically couldn't produce. This skill closes that gap: HyperFrames renders the video, Marky brands and ships it.
Read the marky-api skill first for auth, endpoints, and the brand cache. Base URL
https://api.mymarky.ai/api, header Authorization: Bearer mk_live_YOUR_KEY.
Check for HyperFrames
This skill depends on HyperFrames — an open-source system that renders video from HTML, built for agents.
-
If the
hyperframesskill is available in your session, use it: read/hyperframesfirst (it routes to the right workflow — motion graphic, explainer, product promo, captions) and follow its instructions to author and render. -
If it is not installed, tell the user how to add it, then continue once it is:
npx skills add heygen-com/hyperframes
Do not try to render video any other way — no ffmpeg improvisation, no other frameworks. HyperFrames is the supported path.
Stage 1 — Brand the composition
Before authoring any frames, load the brand so the video looks like the business, not a template:
- Read the brand profile — the injected
brand-cache.mdsnapshot if fresh, else oneget_business/GET /businesses/{id}call (which refreshes the cache). - Apply it to the HyperFrames composition:
palettes→ the video's color system (backgrounds, accents, text).header_font/body_font→ typography.logo_url→ end-card or corner mark (respectlogo_background_color).tone→ the on-screen copy's voice;ctas→ the closing call-to-action.
- Keep platform constraints in mind: 9:16 for Reels/TikTok/Stories, 1:1 or 16:9 for feeds; short (under ~30s) unless the user asks for longer.
Where the project lives. Unless the user names a location, create the HyperFrames
project at ~/.marky/videos/<business_id>/<project-slug>/ — NOT under the current
working directory. Video workspaces are big (tens of MB) and cwd could be inside
someone's repo; ~/.marky keeps them out of git, out of iCloud-synced folders, and
groups them per business so past projects become reusable templates (the brand-remixed
frame.md and storyboards accumulate there). After rendering, delete the project's
capture/ directory — it's regenerable scratch and usually the bulk of the size.
Stage 2 — Author and render
Follow the HyperFrames workflow for the video type the user wants (motion graphic, stat count-up, product promo, explainer, captioned clip). Show the user the plan — scenes, copy, duration — before rendering long pieces. Render to MP4.
Sound effects and music — free paths first
A video with no sound design feels unfinished. You do not need a paid account to fix that:
- Bundled SFX library (free, offline, use this first). HyperFrames'
media-useskill ships ~19 ready-to-use effects (whoosh, key-press, typing, click, chime, pop, riser, impact-bass, sparkle, glitch) at<skills-root>/media-use/audio/assets/sfx/. Resolve one by intent withnode <media-use>/scripts/resolve.mjs --type sfx --intent "whoosh", or copy the file straight into your project'sassets/sfx/and cue it from the workflow's audio metadata. Keep SFX volume at 0.2–0.3 so narration stays on top. - HeyGen catalog (free-usage allowance). With
npx hyperframes auth login(OAuth), SFX and background-music retrieval ride HeyGen's free allowance — signing in does not require a paid plan. The workflow'sfetch-sfx/ BGM steps then work out of the box. - CC0 web libraries (when the bundle lacks the sound). freesound.org (filter license
to CC0) and pixabay.com/sound-effects are safe for commercial posts with no
attribution. Download the file into
assets/sfx/and cue it like a bundled one.
Match effects to on-screen beats (a whoosh on the hook, key clicks under typing, a chime on the CTA) rather than scattering them; background music, if any, sits well under the voiceover (~0.2 volume).
Stage 3 — Upload to Marky
curl -X POST "https://api.mymarky.ai/api/businesses/BIZ_ID/media" \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-F "file=@/path/to/video.mp4"
Keep the returned original_url. Uploads cap at 50 MB — if the render is bigger, reduce
duration or resolution and re-render rather than compressing into artifacts.
Stage 4 — Caption, approve, schedule
- Write the caption in the brand voice (
tone,caption_writing_rules,caption_suffix— see "Write like the business" in the marky-api skill). - Create the post with the caption and the uploaded media.
- Show the user the video and caption, and get explicit approval. For multiple
cuts or variants, use the review board in pick mode
(
${CLAUDE_PLUGIN_ROOT}/scripts/review-board.py items.json --mode pickwith each variant's local file path or URL asmedia_url; run in background, parseBOARD_URL:, AskUserQuestion with the URL, readfeedback.json). Append the result to~/.marky/feedback-log.jsonlwithcontext: "video-variants"and read it before styling the next video — see "The feedback log" in the marky-api skill. Never schedule or publish a video without it. - On approval, schedule via the
schedule-postsskill. Video is supported everywhere — target every connected platform whose integrationstatusisvalid. - After the scheduled time, confirm
publish_resultsshowssuccessper platform.
Tag the post
Set metadata on the post when you create it — {"media_type": "animated-video" (or "talking-head" for captured footage), "created_by": "create-post-video", "hook": ..., "topic": ...} — per "Tag every post" in the
marky-api skill. This is what lets future performance reviews compare this post's
engagement against other media types.
Notes
- Rendering can take a few minutes for longer pieces — tell the user before starting.
- A video the user supplies (rather than one you render) skips straight to Stage 3. To
COLLECT user footage (a talking-head clip with a teleprompter, a screen demo), use the
capture studio —
${CLAUDE_PLUGIN_ROOT}/scripts/capture-studio.py(see Stage 4 ofplan-social-contentfor the flow) — then hand the file to HyperFrames for captions / packaging, or straight to Stage 3. - If HyperFrames fails to render, report the actual error and stop — don't silently fall back to an image post the user didn't ask for.