create-post-video
Skill5 starsChanged 4 months agoApache-2.0View on GitHub
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.
- Sends data out
In this repository15 other files it gives its agents.
- build-brand-kitSkill
- create-post-carouselSkill
- create-post-clipsSkill
- create-post-countdownSkill
- create-post-from-imageSkill
- create-post-graphicSkill
- create-post-variationsSkill
- get-startedSkill
- humanizeSkill
- manage-librarySkill
- marky-apiSkill
- plan-social-contentSkill
- review-performanceSkill
- schedule-postsSkill
- suggest-topicsSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 5 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 34
Do not try to render video any other way — no ffmpeg improvisation, no other frameworks.
- Distinctive: line 39
Before authoring any frames, load the brand so the video looks like the business, not a template:
- Very specific: line 42
Read the workspace's two brand documents — ~/.marky/brand-cache.md if fresh, else one get_workspace / GET /workspaces/{id} call (which …
- Very specific: line 51
Keep platform constraints in mind: 9:16 for Reels/TikTok/Stories, 1:1 or 16:9 for feeds.
- Distinctive: line 64
Follow the HyperFrames workflow for the video type the user wants (motion graphic, stat count-up, product promo, explainer, captioned clip).
- Very specific: line 97
Keep the returned original_url.
- Very specific: line 102
Write the caption in the brand voice (the voice, caption rules and closing line in the strategy doc — see "Write like the business" in the …
- Distinctive: line 104
Create the post with the caption and the uploaded media.
- Very specific: line 115
After the scheduled time, confirm publish_results shows success per platform.
- Distinctive: line 131
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.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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 workspace's two brand documents —
~/.marky/brand-cache.mdif fresh, else oneget_workspace/GET /workspaces/{id}call (which refreshes the cache). - Apply them to the HyperFrames composition:
design_stylecolours (its hex codes; the one it says leads) → the video's color system (backgrounds, accents, text).design_stylefonts → typography.design_style'sLogo: https://...line → end-card or corner mark, placed and backed the way the doc says. No logo URL there? Ask the user for the file.strategyvoice → the on-screen copy's voice; its calls to action → the closing CTA.
- 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 workspace 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 (the voice, caption rules and closing line in
the
strategydoc — 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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

