agentleFS
Marky-TeamMarky-Team/marky-skills/skills/create-post-video/SKILL.md

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

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
  1. Distinctive:

    Do not try to render video any other way — no ffmpeg improvisation, no other frameworks.

    line 34
  2. Distinctive:

    Before authoring any frames, load the brand so the video looks like the business, not a template:

    line 39
  3. Very specific:

    Read the workspace's two brand documents — ~/.marky/brand-cache.md if fresh, else one get_workspace / GET /workspaces/{id} call (which …

    line 42
  4. Very specific:

    Keep platform constraints in mind: 9:16 for Reels/TikTok/Stories, 1:1 or 16:9 for feeds.

    line 51
  5. Distinctive:

    Follow the HyperFrames workflow for the video type the user wants (motion graphic, stat count-up, product promo, explainer, captioned clip).

    line 64
  6. Very specific:

    Keep the returned original_url.

    line 97
  7. Very specific:

    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 …

    line 102
  8. Distinctive:

    Create the post with the caption and the uploaded media.

    line 104
  9. Very specific:

    After the scheduled time, confirm publish_results shows success per platform.

    line 115
  10. Distinctive:

    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.

    line 131

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 hyperframes skill is available in your session, use it: read /hyperframes first (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:

  1. Read the workspace's two brand documents — ~/.marky/brand-cache.md if fresh, else one get_workspace / GET /workspaces/{id} call (which refreshes the cache).
  2. Apply them to the HyperFrames composition:
    • design_style colours (its hex codes; the one it says leads) → the video's color system (backgrounds, accents, text).
    • design_style fonts → typography.
    • design_style's Logo: 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.
    • strategy voice → the on-screen copy's voice; its calls to action → the closing CTA.
  3. 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:

  1. Bundled SFX library (free, offline, use this first). HyperFrames' media-use skill 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 with node <media-use>/scripts/resolve.mjs --type sfx --intent "whoosh", or copy the file straight into your project's assets/sfx/ and cue it from the workflow's audio metadata. Keep SFX volume at 0.2–0.3 so narration stays on top.
  2. 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's fetch-sfx / BGM steps then work out of the box.
  3. 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

  1. 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 marky-api skill).
  2. Create the post with the caption and the uploaded media.
  3. 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 pick with each variant's local file path or URL as media_url; run in background, parse BOARD_URL:, AskUserQuestion with the URL, read feedback.json). Append the result to ~/.marky/feedback-log.jsonl with context: "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.
  4. On approval, schedule via the schedule-posts skill. Video is supported everywhere — target every connected platform whose integration status is valid.
  5. After the scheduled time, confirm publish_results shows success per 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 of plan-social-content for 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.