Agent skill

Motion Ad

by nodetool-ai in nodetool-ai/nodetool

Make a short sound-off motion-graphics ad (a 15s Facebook, Instagram or TikTok ad, 4:5 or 9:16) from a product's real screenshots and photos, with every claim checked against the page it links to.

AGPL-3.0Auto-check passedMedia & Creative

Install Motion Ad

skills CLI
$ npx skills add nodetool-ai/nodetool --skill motion-ad -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install nodetool-ai/nodetool motion-ad --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/system-skills/motion-ad .claude/skills/motion-ad && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
motion-ad
GitHub stars
560
Token cost
~3.4k tokens
SKILL.md length
1,967 words
Files
1
Skills in repo
127
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Make a short sound-off motion-graphics ad (a 15s Facebook, Instagram or TikTok ad, 4:5 or 9:16) from a product's real screenshots and photos, with every claim checked against the page it links to.

  • Works in 6 steps: Research → Assets → The board → …
  • An animated promo
  • SKILL.md covers Rules that do not bend, Production policy, The loop and 1. Research, plus 7 more sections
  • Calls make

What it does

Motion Ad is an agent skill from nodetool-ai/nodetool. Make a short sound-off motion-graphics ad (a 15s Facebook, Instagram or TikTok ad, 4:5 or 9:16) from a product's real screenshots and photos, with every claim checked against the page it links to. Use for an animated promo, a kinetic-type ad, a 9:16 version of one, or a revision of one (swap the hero, change the CTA, re-render). For generated footage use product-commercial, for a person on camera ugc-video.

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Motion graphics and Influencer and creator marketing. It works with Instagram and TikTok. The repository describes itself as: Agent-first Creative Workspace. The licence is AGPL-3.0.

When your agent uses it

  • An animated promo
  • A kinetic-type ad
  • A 9:16 version of one
  • A revision of one (swap the hero

Example prompts

  • “/motion-ad”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Research
  2. Assets
  3. The board
  4. The timeline
  5. Review frames
  6. Render and report

What it can do on your machine

Read from SKILL.md and the folder at commit 58765d3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Motion Ad loads about 3.4k tokens when it runs. Until then it costs about 105 tokens; SKILL.md has 1,967 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~105
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from nodetool-ai/nodetool at commit 58765d3, republished under its AGPL-3.0 licence (© nodetool-ai). 1,967 words, ~3,405 tokens.

Download SKILL.mdSave it as .claude/skills/motion-ad/SKILL.md (or your agent's skills folder).
name
motion-ad
description
Make a short sound-off motion-graphics ad (a 15s Facebook, Instagram or TikTok ad, 4:5 or 9:16) from a product's real screenshots and photos, with every claim checked against the page it links to. Use for an animated promo, a kinetic-type ad, a 9:16 version of one, or a revision of one (swap the hero, change the CTA, re-render). For generated footage use product-commercial, for a person on camera ugc-video.
featured
true

Motion ad

A motion ad animates real product imagery and short headlines on the timeline. Nothing in the picture is generated by default. The storyboard is the beat plan and holds the real image each beat shows. The timeline carries the motion, and render_timeline produces the MP4.

Load /storyboard-core first for the board contract. Load motion-graphics with load_skill before the first edit_timeline call. It owns every op shape this skill quotes.

Rules that do not bend

  • Every claim matches the destination page. Read the page before writing a word. A price, a count, a speed, a guarantee, a rating or "free" appears in the ad only if it appears there. When the user asks for copy the page contradicts, write it and name the mismatch once in the report.
  • Real assets only. Use the user's files or images taken from their live site. Never invent a customer, a review, a rating, a result or a logo. A beat with no real proof to show is cut, not filled.
  • Never fabricate a person. A beat that needs more pictures of someone than exist gets crops or mirrors of the real ones, and the report says so. A generated face is out even when the rest of the board uses a model.
  • The brand decides the look. Colours, logo, tone and type come from the brand, not from the beat table below. Default to plain claims: no hype, no exclamation marks, no emoji unless the brand writes that way.
  • Never overwrite a delivered version. Each revision is a new timeline version and a new rendered asset with a versioned name (<brand>-<topic>-ad-4x5-v2).

Production policy

The canonical machine-readable policy is the shot's production requirement. For social ads, choose media_strategy deliberately:

  • still_motion_graphics is the default. Preserve the source image and build motion, type, shapes and transitions in the Timeline.
  • hybrid uses generated/existing footage for atmosphere or physical motion while product, logo and exact copy remain separate protected layers.
  • generated_video is reserved for actor performance, lifestyle movement or scene motion that materially benefits from video generation.

Put source truth in protected_inputs. Product/logo/source assets carry their exact asset_id; copy and brand colours carry their exact value. Declare only non-destructive allowed_transformations such as position, scale, crop, rotate, mask, opacity and composite. A finished-cut plan must pass validateProductionMaterialization: replacing or regenerating a protected asset, changing exact copy/colour, or applying an undeclared transform is a policy error.

Do not use generated_video merely because a keyframe exists. Price cards, packshots, feature callouts, carousels, comparisons, typography hooks and CTA endings normally stay still_motion_graphics.

The loop

  1. Research the page and the brand.
  2. Collect the assets and pick the hero pair.
  3. Write the board: one shot per beat, the real image attached to each.
  4. Build the timeline: pictures, type, shapes, animations.
  5. Review preview frames and fix.
  6. Render, measure, report.

Stop where the request stops. "Just the storyboard" ends at step 3.

1. Research

Ask for, or infer from context: the product, the destination URL, the audience and the format. The format defaults to 4:5 feed (1080×1350). Stories and reels are 9:16 (1080×1920).

  • browser {url} on the destination page, then on the homepage and pricing page. Pull the headline promise, prices, rating and review counts, speed claims, and what is free versus paid. Record each fact with the page it came from.
  • http_request {url} returns the raw HTML. Read the brand's hex values, font family and logo URL from its CSS variables or stylesheet links. Tokens in the source beat colours picked from a screenshot.
  • take_screenshot {url, full_page: true} captures the live product UI. For software, that screenshot is often the best hero image. When it fails because no browser is configured, say so once and continue with downloaded images.

A fact the page does not state is [CLIENT INPUT NEEDED], never a guess.

2. Assets

Every image the ad shows must be a stored asset before it goes on a board or a timeline.

  • An image URL from the page: save_asset {source: "<url>", name} copies it into the library and returns an asset_id. download_file writes a workspace file instead, which is not an asset and cannot go on a timeline.
  • A user upload: find it with asset_search or list_assets. Prefer the user's files over scraped ones when they offer any.
  • Logos: keep one for light backgrounds and, when the site has one, a white version for the brand-colour end card.

Look before choosing. view_image each candidate and note its pixel size. Site images are often thumbnails, and a 400px image on a 1080px canvas reads as soft. Say which images are low resolution in the report instead of upscaling them silently.

Pick the hero pair for the clearest transformation. For a physical product, that is before and after. For software, it is the messy input and the finished output, as screenshots. Portrait images near 4:5 fill the hero and showcase slots best.

edit_image may crop, mirror or extend a real image to fit a slot. It may not add a person, a product or a claim that was not in the source.

3. The board

create_storyboard {name, brief, style, aspect_ratio: "4:5"} (or "9:16"). Put the researched facts and their source URLs in brief so a later revision can re-check them. Put the brand palette and type in style.

Add one shot per beat with edit_storyboard. Each shot carries:

  • slug: 1a, 2a, and so on. "Change the 3a headline" then means one shot.
  • action: what is on screen, in plain words.
  • notes: the exact on-screen copy for the beat, including line breaks.
  • duration_seconds: the beat length from the table below.

Then attach each beat's real image as its still:

json
{"storyboard_id": "<id>", "ops": [
  {"op": "add_keyframe_version", "target": "2a", "asset_id": "<hero after>"}
]}

The shot moves to keyframe_ready with the real picture and no generation. A still-only board is what the user reviews before any motion work.

Do not call render_storyboard_stills without targets on this board. It selects every shot without a still, so a beat you forgot to attach would be generated. Generate a shot only when the user asked for it, and only for a background or texture, never for the product, a screen or a person.

Beats

Four or five beats in 15 seconds. One short headline per beat, at most about 20 characters per line, sized to read muted on a phone. The shape below is a starting point. Cut or replace a beat that does not fit the product. A desktop tool with no mobile app has no phone beat, so open on the hero instead.

SlugTimeBeatPicture
1a0–2.2sHook headline over the product in context: a phone or browser frame scrolling a real screenshot, a pointer or tap on the inputThe screenshot
2a2.2–5.4sThe tapped card grows into the hero. A scan line crosses it and reveals before becoming after. Two or three benefit chipsHero before, hero after
3a5.5–8.7sThe hero shrinks into a tilted wall of more real outputsFour to nine outputs
4a8.7–11.8sThree showcase cards, optionally with a small "before" inset, and one proof lineShowcase images, a real rating or count
5a11.8–15sBrand-colour wipe to the end card: logo, CTA headline, one chip, the buttonLogo

Beat 4a loses its proof line when the page has no number to quote. Beat 3a is cut when there are not enough distinct real outputs to fill a wall without repeats.

Show full SKILL.md (743 more words)Show less

4. The timeline

assemble_storyboard_timeline lays down rendered clips only and skips shots that have a still and no clip, so it builds nothing here. Create the sequence directly:

json
{"name": "acme-scan-ad-4x5-v1", "width": 1080, "height": 1350, "fps": 30}

create_timeline with those arguments. Then create_timeline_version before the first edit, and build with edit_timeline in batches of at most 60 ops. Read get_state for track and clip ids before animating anything.

Tracks, top to bottom. A lower index draws on top, and add_track appends at the bottom, so add them in this order: headlines, chips and buttons, the scan line and wipes, pictures, background. Give every element whose timing overlaps another its own track. Two clips that overlap on one track dissolve into each other.

Pictures. add_media_clip {asset: "asset://<id>", trackId, startMs, durationMs, transform} per image. An image has no duration of its own, so always pass durationMs. transform.position is in canvas pixels and scale is a factor. Frame each image with frame-composition rules.

Type. add_text_clip per headline, with the brand colour and a fontFamily NodeTool bundles: Inter, Space Grotesk, Bebas Neue, Playfair Display, Lora or JetBrains Mono. When the brand font is not among them, use the closest bundled family and say so. Put an accent word in its own text clip in the accent colour, aligned to the line. What the copy says and when it appears belongs to caption-titles.

Shapes. add_shape_clip draws the background, chips, the button, the scan line and the brand-colour disc of the end-card wipe.

Motion per beat. One easing family and one timing unit for the whole ad, fixed before the first animation (motion-direction). Durations and stagger come from motion-principles.

BeatBuild it with
HookHeadline animate_clip in pop with a word stagger. The screenshot's scroll is a custom positionY curve inside a masked frame (set_mask). The tap is a small shape with pop then pulse
RevealThe "after" image sits on the track above "before". animate_clip in wipe on "after", with the scan line moving on the same window and easing. Benefit chips enter with stagger_animations
WallOutput images with rotationY and perspective on their transforms, entering with stagger_animations. A slow kenBurns loop keeps the wall alive
ShowcaseCards slide in from one side. The proof line enters last and holds at least 1.5s
End cardset_transition iris or a scaled brand-colour disc, then the logo per logo-reveal. The CTA holds still for the last second

Sound is optional. The ad must work muted. When the user wants a bed, find_model with text_to_music, load_skill the prompting_skill it names, then generate_music at the exact runtime. Put cuts on its beats with beat-sync-editing.

validate_timeline after every batch. Fix text_illegible, text_backing_unproven, font_not_portable, stagger_compressed and animation_exceeds_clip before looking at frames.

5. Review frames

preview_timeline_frame {timeline_id, times_ms, sheet: true}, then view_image on the sheet. For the table above, sample [300, 1900, 2700, 3800, 4900, 6600, 9800, 11500, 13600], plus the midpoint of every entrance you added.

Look for:

  • text overlapping text, or a headline under a shape it should sit above
  • empty gaps where one beat ends before the next starts
  • a label that contradicts its image ("after" on the before picture)
  • the same image twice side by side in the wall
  • a headline that cannot be read at thumbnail size
  • a soft image at hero size

Name each defect, fix it, and preview the same timecodes again.

6. Render and report

  1. render_timeline {timeline_id, preview_scale: 0.5, wait: true} for a draft while iterating.
  2. render_timeline {timeline_id, wait: true} at full size when the frames are right.
  3. analyze_video on the result. Check duration, width, height and frame count against the plan.
  4. preview_timeline_frame at each transition to check the frames the stills review did not sample.

Report:

  • the rendered asset and the timeline and board to open
  • the copy, beat by beat
  • every caveat: low-resolution sources, crops and mirrors, the font substitution, copy that differs from the page, and any [CLIENT INPUT NEEDED] left in the board
  • actual spend from get_cost_summary when anything was generated

A second format

A 9:16 cut is its own timeline, not a crop. retarget_format derives a sequence by cropping, which cuts headlines and chips placed for 4:5. Create a 1080×1920 timeline from the same board, re-space every vertical position (headlines, frame, hero, carousel, end card), and review and render it the same way. Name it <brand>-<topic>-ad-9x16-v1.

Revisions this loop handles

Swap the hero for the image I uploaded. Keep everything else.
Change the CTA to "Start free". Check the page says free first.
Make a 9:16 version.
The headline in 1a is too long. Two lines, same words.
Drop the proof line. The review count is out of date.
Re-render as v3. Keep v2.

Each one is create_timeline_version, the smallest edit that answers it, a validate, a preview of the changed beats, and a new render with the next version number.

© nodetool-ai, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in packages/system-skills/motion-ad of nodetool-ai/nodetool.

Open the folder on GitHubat commit 58765d3

Compare with similar skills

Motion Ad next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Motion Ad compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Motion Ad this skillnodetool-ai/nodetool560—~3.4kAutomated safety check: PassAGPL-3.0
Reelclawdansugc/reelclaw1451 repos~8.2kAutomated safety check: NotesNone
Motion Video in Remotionooiyeefei/ccc494—~2.9kAutomated safety check: PassMIT
Viral Tech Reel Editortornikebolokadze1-cyber/awesome-ai-pulse-georgia143—~3kAutomated safety check: PassCC0-1.0
Seedance AI Avatarrediumvex/ai-video-generator-claude408—~6.7kAutomated safety check: PassMIT
Motion Adfabricioctelles/skills106—~4.1kAutomated safety check: PassApache-2.0

Similar skills

  • Reelclaw

    dansugc/reelclaw

    Create, produce, and publish UGC-style short-form video reels at scale.

    145 GitHub starsUsed in 1 repo~8.2k tokens
    Media & CreativeAuto-check: notes
  • Builds marketing and explainer videos in Remotion from rendered scenes, with one real product capture as proof, and cuts them for each platform's formats.

    494 GitHub stars~2.9k tokensUpdated 2 mo ago
    Media & CreativeAuto-check passed
  • Viral Tech Reel Editor

    tornikebolokadze1-cyber/awesome-ai-pulse-georgia

    End-to-end viral tech reel production for Instagram Reels and TikTok using 2026 trend grammar — retention-first pacing, punch-ins, 3D cinematic AI-generated shots, motion design graphics, proof…

    143 GitHub stars~3k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Seedance AI Avatar

    rediumvex/ai-video-generator-claude

    Generate AI avatar and digital persona video prompts for Seedance 2.0 on Higgsfield.

    408 GitHub stars~6.7k tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • Motion Ad

    fabricioctelles/skills

    Produce a short motion-graphics video ad — a 15s Facebook/Instagram/TikTok spot — as a rendered MP4.

    106 GitHub stars~4.1k tokensUpdated 5 days ago
    Media & CreativeAuto-check passed
  • Reelclaw Ads

    dansugc/reelclaw

    Make short-form UGC video ads (TikTok, Reels, Shorts) for the product in the current repo with DansUGC ReelClaw and real human creator reactions from the DansUGC library.

    145 GitHub stars~3.9k tokensUpdated 11 days ago
    Marketing & SEOAuto-check: notes

More from nodetool-ai/nodetool

All 127 skills in this repo
  • Beat Sync Editing

    nodetool-ai/nodetool

    Cut a NodeTool timeline to music and shape its pacing — detect the beat grid, place cuts on phrases, pick a cut type, build speed ramps with time remap, and give the piece an arc.

    560 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Caption Titles

    nodetool-ai/nodetool

    Add and animate a consistent text layer on an existing NodeTool timeline.

    560 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Color Motion

    nodetool-ai/nodetool

    Choose and animate colour on a NodeTool timeline, including shape and text gradients, colour grades, 3D LUTs, and dither.

    560 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Commercial Beat Sheet

    nodetool-ai/nodetool

    Write a shootable, precisely timed commercial beat sheet and store it as a NodeTool storyboard, with a consistent entity roster behind every shot.

    560 GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Elevenlabs Audio Prompting

    nodetool-ai/nodetool

    Direct ElevenLabs speech, dialogue, sound effects and music — the bracketed audio tags v3 acts on and why the voice decides whether a tag lands, stability as the delivery dial, punctuation instead…

    560 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Frame Composition

    nodetool-ai/nodetool

    Stage the frame on a NodeTool timeline — grids, focal placement, safe areas per aspect ratio, depth layers and parallax, camera moves, and where elements enter and leave.

    560 GitHub stars~3.5k tokensUpdated today
    Auto-check passed

Works with

Questions about Motion Ad

What does Motion Ad do?

Make a short sound-off motion-graphics ad (a 15s Facebook, Instagram or TikTok ad, 4:5 or 9:16) from a product's real screenshots and photos, with every claim checked against the page it links to. Motion Ad is an agent skill from nodetool-ai/nodetool. Make a short sound-off motion-graphics ad (a 15s Facebook, Instagram or TikTok ad, 4:5 or 9:16) from a product's real screenshots and photos, with every claim checked against the page it links to.

When should I use Motion Ad?

Motion Ad fits situations like: an animated promo; A kinetic-type ad; A 9:16 version of one; A revision of one (swap the hero.

How do I install Motion Ad in Claude Code?

Run `npx skills add nodetool-ai/nodetool --skill motion-ad -a claude-code`. Or copy the skill folder (packages/system-skills/motion-ad in nodetool-ai/nodetool) into .claude/skills/motion-ad in your project. Claude Code loads it when a task matches its description.

How do I install Motion Ad in Codex?

Run `npx skills add nodetool-ai/nodetool --skill motion-ad -a codex`. Or copy the skill folder (packages/system-skills/motion-ad in nodetool-ai/nodetool) into .agents/skills/motion-ad in your project. Codex loads it when a task matches its description.

Can I use Motion Ad in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nodetool-ai/nodetool --skill motion-ad -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/motion-ad, .gemini/skills/motion-ad, .github/skills/motion-ad and .opencode/skills/motion-ad in your project.

What does Motion Ad need to run?

Going by SKILL.md and its folder, Motion Ad needs the command-line tools its instructions call (make).

Does Motion Ad access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Motion Ad safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Motion Ad use?

Motion Ad is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Motion Ad use?

About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Motion Ad?

Skills that share tags, products or a category with Motion Ad: Reelclaw (dansugc/reelclaw, 145 stars), Motion Video in Remotion (ooiyeefei/ccc, 494 stars), Viral Tech Reel Editor (tornikebolokadze1-cyber/awesome-ai-pulse-georgia, 143 stars) and Seedance AI Avatar (rediumvex/ai-video-generator-claude, 408 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Motion Ad?

nodetool-ai (a GitHub organization) maintains it in nodetool-ai/nodetool, which has 560 GitHub stars. The repository holds 127 skills in this directory. The repository was last updated on October 9, 2026.

Source: nodetool-ai/nodetool on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.