Skip to content
Back to skills

Make A Social Reel

ASecurity

Turns footage into a finished 9:16 social reel — hook inside 2 seconds, poster-grade type, a decided music bed, one final render. Triggers on "make me a reel from this", "turn this into a short", "cut a clip for TikTok / Reels / Shorts", "make this vertical", "make a social clip from this video", "the opening is boring", "can you make this pop for Instagram".

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added October 23, 2026
ai-agentsgo

Works with

  • cli

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add cueframe-ai/cueframe-mcp --skill make-a-social-reel --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Make A Social Reel?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Make A Social Reel
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cueframe-ai-make-a-social-reel/badge)](https://www.skillsdirectory.com/skills/cueframe-ai-make-a-social-reel)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: make-a-social-reel
description: Turns footage into a finished 9:16 social reel — hook inside 2 seconds, poster-grade type, a decided music bed, one final render. Triggers on "make me a reel from this", "turn this into a short", "cut a clip for TikTok / Reels / Shorts", "make this vertical", "make a social clip from this video", "the opening is boring", "can you make this pop for Instagram".
---

# Make a social reel

Use the [project and capability policy](../composing-video/references/project-policy.md) for scope, current state and metered work.

You hand over footage (a file URL, a talk, a product moment); you get back a 9:16 reel of 8–30
seconds that opens on its strongest image, cuts on the music, carries brand-grade type, and ends
on a deliberate beat — with a download link, not a "done".

## Before you start

Don't stall the conversation on setup — get the footage, the hook, and the tone agreed first.
When the first real tool call is imminent and CueFrame isn't connected:
load **`cueframe-connect`** and follow it once.

Thirty seconds, then straight back to the reel — treat it as a detour, never a gate.

## Inputs

- **Footage** (required): a public https URL, or something already in `list_media`. If they have
  nothing, ask for the real thing before reaching for stock — real footage is the whole edge.
- **Brand kit**: use the project's kit if one exists; otherwise ask for a color + font or extract
  one. Default: proceed with a neutral palette and say so.
- **Tone / platform**: default punchy, 15–25s, sound-on-with-captions. Ask only if the answer
  would change the cut.

## Workflow

Use `cueframe-compose-loop`'s [preview workflow](../cueframe-compose-loop/references/preview-workflow.md)
for layout and motion evidence. A follow-up tweak preserves the approved brief; inspect the
affected window and regressions without automatically rerunning the full-film judge or export.

0. **Find the claim (before anything else).** Interrogate the brand/material
   for its tension — what it believes that its category doesn't — and write
   the claim in one sentence. Derive the shot list, the bed's mood/tempo, the
   pacing, and every card's copy FROM that sentence. Use the requested visual experience as intent when the piece makes no factual claim.

1. **Import and read the footage.** `import_media` (public https URL), poll `list_media` until
   ready, then `get_media_context` — faces, transcript, word timings. The context tells you
   where the hook lives; don't guess.
2. **Pick the hook before you touch the timeline.** The strongest image, motion, or claim in the
   footage — the outcome, not the feature name, is the hook. If the best moment is at 0:47, the
   reel opens at 0:47. A logo-first opening remains valid when explicitly requested.
3. **Seed the timeline.** `new_composition` at 9:16, then `apply_composition`: clips trimmed to
   the beats you chose, a new visual beat at least every ~4 seconds. Cut TO moments; never let a
   clip run out.
4. **Reframe for vertical.** `setCropIntents` with segments that tile every clip —
   `active-speaker` or `face` focus when a person carries it, `point` focus on the action
   otherwise. A wide shot letterboxed into 9:16 is a fail, not a fallback.
5. **Author the type as cards.** Brand text is `kind:"card"` HTML — your typography,
   palette-as-fields, considered alignment — animated in its CSS or with
   `clip.setKeyframes` in a FOLLOWING `apply_composition` call. Catalog text primitives are
   utility only.
6. **Honor requested silence or existing audio.** When a bed is appropriate, search a bed with `search_resources` honoring
   the brand kit's `musicMood`, place it as an `audioRole:"music"` clip, then `materializeGrid`
   `{ grid:"beat" }` and land your cut points and transition midpoints on the markers. If the
   piece is genuinely better silent, that is a decision — record it and its reason in the
   delivery note. A reel whose silence nobody chose is not done.
7. **Caption any speech.** After saving the edited clips, use
   `captions.fromComposition` with the speech track ID in a separate `apply_composition`
   call. It follows trims, excluded ranges and clip placement across the reel. Speech clips
   must have saved duration matching playable source duration divided by playbackRate.
   Re-run it after later edits. Discover its exact input with
   `describe_composition_ops({type:"captions.fromComposition"})`, then style via
   `setCaptionStyle` (plated, bottom, out of the mouth/eyes). Most social viewing is sound-off;
   don't karaoke a beat with no speech.
8. **Inspect and revise.** `preview_frame` at the important layout and transition landmarks;
   describe each still in words, then inspect the intervening motion and relevant audio. Use
   `score_composition` only when broader critique is useful and within budget, with your one-line
   vision as `editorialIntent`, and fix the worst criterion first. Fix located acceptance failures against the brief.
9. **Export for requested final delivery.** `create_render` → `wait_job (kind:"render")`. Iterate with previews,
   not renders.

## What good looks like

Use the relevant [craft review questions](../video-craft-standards/SKILL.md) and the [preview workflow](../cueframe-compose-loop/references/preview-workflow.md). Judge the brief's actual intent, visual relationships, timing and sound; format suggestions do not override the requested treatment. For this format's defaults read section 1 (Social reel) of the [format standards](../video-craft-standards/references/format-standards.md).

## Delivering

Never end with "done". The last message carries:

- The render's download URL and where it lives (the project, by composition id).
- Attribution for every stock asset used (provider, id, author) — the provenance you recorded at
  import.
- The intentional-silence note with its reason, if you chose silence over a bed.
- One line on what you'd tighten next, so the follow-up edit has a starting point.

Files in this skill

  • SKILL.md7.1 KB
  • agents/openai.yaml393 B
  • assets/icon.svg1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.