When you want to automate this

A daily short, without opening an editor.

1
See it
OutputMP4
Size720 × 1280 (9:16)
Length37s
Frame rate25 fps
Tracks / clips6 / 14
Assets used1 caption, 1 image, 1 text, 10 text-to-image, 1 text-to-speech
Soundtrackno
Merge fields12
2
Make it yours

Send a merge array with your values for these fields:

FieldDefault value
{{ HEADLINE }}Luna’s Magical Night
{{ VOICEOVER }}On a quiet night, little Luna lay in bed, staring at the starry sky from her window. One star, brighter than all the others, seemed to twinkle just for her. Suddenly, the star flickered and floated down, landing gently on her windowsill. “Come with me,” the star whispered, “and I’ll show you the world beyond the sky.” Luna stepped onto the starlight path and felt herself gently lifted into the air. Higher and higher they flew, past the clouds and into the sparkling night. Soon, they reached a magical place where the stars danced and sang. “You see, every star has a song,” the star explained, “and they all come together to make the night beautiful.” After a while, it was time for Luna to return. The star gently guided her back home. Luna slipped back into her bed, feeling warm and safe, as the star whispered, “Goodnight, Luna.”
{{ IMAGE_1_PROMPT }}A drawing of a cozy bedroom with soft lighting, showing Luna, a young girl about 6 years old. Luna has shoulder-length, wavy dark brown hair, big curious green eyes, and a small button nose. She’s wearing a soft white nightgown with light blue trim. Her skin is fair with a slight blush on her cheeks. She’s tucked under a warm blanket, looking out the window. Outside her window, a clear night sky full of stars sparkles brightly. Luna’s wide eyes are filled with wonder as she gazes at the stars, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_2_PROMPT }}A drawing of a close-up of Luna’s face, showing her big green eyes filled with amazement. Her shoulder-length, wavy dark brown hair frames her face. Luna’s small button nose and fair skin with a soft blush on her cheeks give her a sense of childlike innocence. She’s wearing a white nightgown with light blue trim. She is gazing out the window at a single star glowing brightly in the sky, casting a soft magical glow on her face. The star twinkles as if it’s calling out to her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_3_PROMPT }}A drawing of a close-up of Luna’s face, showing her big green eyes filled with amazement. Her shoulder-length, wavy dark brown hair frames her face. Luna’s small button nose and fair skin with a soft blush on her cheeks give her a sense of childlike innocence. She’s wearing a white nightgown with light blue trim. She is gazing out the window at a single star glowing brightly in the sky, casting a soft magical glow on her face. The star twinkles as if it’s calling out to her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_4_PROMPT }}A drawing of Luna leaning forward from her bed, gazing in awe at the magical star outside her window. Her wavy dark brown hair falls just past her shoulders, and her wide green eyes are fixed on the star with curiosity and excitement. Luna is wearing a white nightgown with light blue trim. Her fair skin and slight blush give her an innocent look. The star forms a shimmering path leading into the sky, inviting her to follow, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_5_PROMPT }}A drawing of Luna stepping out of her window onto a glowing, magical path of starlight. Her dark brown wavy hair is gently flowing in the breeze, her big green eyes wide with excitement. She’s wearing a white nightgown with light blue trim, and her fair skin has a soft blush on her cheeks. Luna is floating just above the ground, looking joyful and free as she follows the magical star, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_6_PROMPT }}A drawing of Luna flying high in the sky with the glowing star beside her. Her shoulder-length wavy dark brown hair flows behind her as she soars through the air. Her green eyes are wide with joy, and her white nightgown with light blue trim flutters gently in the breeze. Her fair skin has a healthy glow as she takes in the sight of fluffy clouds and the twinkling stars above, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_7_PROMPT }}A drawing of Luna watching in awe as stars dance and sing in the sky. Her wavy dark brown hair frames her face, and her big green eyes are filled with wonder. She’s wearing her soft white nightgown with light blue trim, and her cheeks have a gentle blush. She floats gently in the air, surrounded by magical starlight, as stars form constellations and patterns around her, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_8_PROMPT }}A drawing of Luna in the sky, looking intently at the glowing star beside her. Her shoulder-length, wavy dark brown hair gently moves with the breeze. Her wide green eyes are focused, filled with curiosity and awe as she listens to the star explain the magic of the stars. Luna’s white nightgown with light blue trim flutters slightly, and her fair skin glows softly in the starlight, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_9_PROMPT }}A drawing of Luna floating down the starlight path back to her bedroom. Her dark brown wavy hair flows gently as she descends, her big green eyes looking peacefully ahead. She’s wearing her soft white nightgown with light blue trim, and her fair skin still glows from the starlight. The magical star is guiding her home, with twinkling stars in the background, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
{{ IMAGE_10_PROMPT }}A drawing of Luna back in her bed, snuggled under her warm blanket. Her shoulder-length, wavy dark brown hair rests on her pillow, and her big green eyes are closed peacefully. She’s wearing her soft white nightgown with light blue trim. The soft glow of the star fades into the night sky as Luna drifts off to sleep, her fair skin still glowing softly in the dim light, style of Maurice Sendak, inspired by Maurice Sendak, fairy tale illustrations, storybook illustration, inspired by Gustaf Tenggren, classic children’s illustrations, whimsical creatures.
Edit and save to your account
3
Run it once

Save the JSON above as template.json, then render in the free sandbox:

# Save the JSON above as template.json, then:
curl -X POST https://api.shotstack.io/edit/stage/render \
  -H "x-api-key: $SHOTSTACK_API_KEY" \
  -H "Content-Type: application/json" \
  -d @template.json

# Poll until status is "done", then download response.url
curl https://api.shotstack.io/edit/stage/render/RENDER_ID -H "x-api-key: $SHOTSTACK_API_KEY"
import { readFileSync } from 'node:fs';

const headers = { 'x-api-key': process.env.SHOTSTACK_API_KEY, 'Content-Type': 'application/json' };
const edit = JSON.parse(readFileSync('template.json', 'utf8'));

const { response } = await fetch('https://api.shotstack.io/edit/stage/render', {
  method: 'POST', headers, body: JSON.stringify(edit)
}).then((r) => r.json());

let render;
do {
  await new Promise((r) => setTimeout(r, 3000));
  render = (await fetch(`https://api.shotstack.io/edit/stage/render/${response.id}`, { headers }).then((r) => r.json())).response;
} while (!['done', 'failed'].includes(render.status));

console.log(render.status, render.url);
import json, os, time, requests

headers = {"x-api-key": os.environ["SHOTSTACK_API_KEY"]}
with open("template.json") as f:
    edit = json.load(f)

render_id = requests.post("https://api.shotstack.io/edit/stage/render", json=edit, headers=headers).json()["response"]["id"]

while True:
    render = requests.get(f"https://api.shotstack.io/edit/stage/render/{render_id}", headers=headers).json()["response"]
    if render["status"] in ("done", "failed"):
        break
    time.sleep(3)

print(render["status"], render.get("url"))
npm install -g @shotstack/cli
export SHOTSTACK_API_KEY=your_sandbox_key

shotstack validate template.json          # offline schema check, free
shotstack render template.json --env stage --watch

Sandbox renders are free and watermarked. Production: the v1 endpoint and key. SDKs

4
Automate it

Schedule it against a topic list or feed and post a fresh short every day.

Paste into Claude, ChatGPT or Cursor — your AI assistant builds the workflow around your data.

Node.js, one render per CSV row, wired to this template's 12 merge fields. Setup steps in the header.

Guides: Bulk-create from a CSV · Webhooks · Templates endpoint · Render your first video

AI assistants: Markdown () · · · CLI skill: SKILL.md () · MCP server

Common questions

How do I change the text and media without editing the JSON?

Use the 12 merge fields listed above. Send a merge array with your own values for each field and the API swaps them in at render time, so one template can produce thousands of unique videos.

Is this template made for TikTok, Reels and Shorts?

Yes. It renders vertical 720×1280 (9:16), the format those platforms expect. Change output.size or output.aspectRatio in the JSON if you also need a square or landscape cut.

Can I use my own photos?

Yes. The template uses 1 image; replace each image asset's src with a public URL of your own file (JPG, PNG or WebP). Keep the timing and effects, or adjust them per clip.

How do I change the text and fonts?

Edit the text on each text asset in the JSON. Fonts come from the timeline fonts list or the asset's font family; add your own font file URL to timeline.fonts to use a brand typeface.