{
    "merge": [
        {
            "find": "ADDRESS_1",
            "replace": "192 STOREY STREET"
        },
        {
            "find": "ADDRESS_2",
            "replace": "MAROUBRA, NSW 2035"
        },
        {
            "find": "SALE_TYPE",
            "replace": "HOUSE"
        },
        {
            "find": "PROPERTY_TYPE",
            "replace": "AUCTION 22 OCTOBER"
        },
        {
            "find": "BEDS",
            "replace": "4"
        },
        {
            "find": "BATHS",
            "replace": "2"
        },
        {
            "find": "CARS",
            "replace": "1"
        },
        {
            "find": "HEADSHOT",
            "replace": "https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/images/real-estate-agent-male.jpg"
        },
        {
            "find": "AGENT_NAME",
            "replace": "JEREMY SIMPSON"
        },
        {
            "find": "LOGO",
            "replace": "https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/logos/real-estate-white.png"
        },
        {
            "find": "PHONE",
            "replace": "0424 998 776"
        },
        {
            "find": "EMAIL",
            "replace": "jeremy@blockrealestate.co"
        },
        {
            "find": "IMAGE_1",
            "replace": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate1.jpg"
        },
        {
            "find": "IMAGE_2",
            "replace": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate2.jpg"
        },
        {
            "find": "IMAGE_3",
            "replace": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate3.jpg"
        },
        {
            "find": "IMAGE_4",
            "replace": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate4.jpg"
        },
        {
            "find": "IMAGE_5",
            "replace": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate5.jpg"
        },
        {
            "find": "PRIMARY_FONT",
            "replace": "Manrope ExtraBold"
        },
        {
            "find": "PRIMARY_FONT_SRC",
            "replace": "https://templates.shotstack.io/basic/asset/font/manrope-extrabold.ttf"
        },
        {
            "find": "PRIMARY_COLOR",
            "replace": "#f0c20c"
        },
        {
            "find": "SECONDARY_FONT",
            "replace": "Manrope Light"
        },
        {
            "find": "SECONDARY_FONT_SRC",
            "replace": "https://templates.shotstack.io/basic/asset/font/manrope-light.ttf"
        },
        {
            "find": "SECONDARY_COLOR",
            "replace": "#ffffff"
        },
        {
            "find": "OVERLAY_STYLE",
            "replace": "arrow-sharp"
        },
        {
            "find": "OVERLAY_COLOR",
            "replace": "black"
        },
        {
            "find": "SOUNDTRACK",
            "replace": "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/music/unminus/ambisax.mp3"
        }
    ],
    "timeline": {
        "tracks": [
            {
                "clips": [
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{ADDRESS_1}}</p>",
                            "css": "p { font-family: \"{{PRIMARY_FONT}}\"; color: {{PRIMARY_COLOR}}; font-size: 40px; text-align: left;    line-height: 78; text-scale: shrink; }",
                            "width": 320,
                            "height": 200,
                            "position": "bottom"
                        },
                        "start": 1.2,
                        "length": 4.2,
                        "position": "left",
                        "offset": {
                            "x": 0.05,
                            "y": 0.3
                        },
                        "transition": {
                            "in": "slideRight",
                            "out": "slideLeft"
                        }
                    },
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{ADDRESS_2}}</p>",
                            "css": "p { font-family: \"{{SECONDARY_FONT}}\"; color: {{SECONDARY_COLOR}}; font-size: 22px; text-align: left;    line-height: 78; }",
                            "width": 320,
                            "height": 66,
                            "position": "top"
                        },
                        "start": 1.3,
                        "length": 3.9,
                        "position": "left",
                        "offset": {
                            "x": 0.05,
                            "y": 0.065
                        },
                        "transition": {
                            "in": "slideRight",
                            "out": "slideLeft"
                        }
                    },
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{SALE_TYPE}}</p>",
                            "css": "p { font-family: \"{{PRIMARY_FONT}}\"; color: {{PRIMARY_COLOR}}; font-size: 22px; text-align: left;    line-height: 78; }",
                            "width": 320,
                            "height": 100,
                            "position": "top"
                        },
                        "start": 1.4,
                        "length": 4,
                        "position": "left",
                        "offset": {
                            "x": 0.05,
                            "y": -0.24
                        },
                        "transition": {
                            "in": "slideRight",
                            "out": "slideLeft"
                        }
                    },
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{PROPERTY_TYPE}}</p>",
                            "css": "p { font-family: \"{{SECONDARY_FONT}}\"; color: {{SECONDARY_COLOR}}; font-size: 17px; text-align: left;    line-height: 78; }",
                            "width": 320,
                            "height": 32,
                            "position": "center"
                        },
                        "start": 1.4,
                        "length": 4,
                        "position": "left",
                        "offset": {
                            "x": 0.05,
                            "y": -0.08
                        },
                        "transition": {
                            "in": "fade",
                            "out": "fade"
                        }
                    }
                ]
            },
            {
                "clips": [
                    {
                        "asset": {
                            "type": "image",
                            "src": "https://templates.shotstack.io/basic/asset/image/icon/slimline/white/26px/bed.png"
                        },
                        "start": 1.4,
                        "length": 4,
                        "fit": "none",
                        "position": "left",
                        "offset": {
                            "x": 0.055,
                            "y": -0.025
                        },
                        "transition": {
                            "in": "fade",
                            "out": "fade"
                        }
                    },
                    {
                        "asset": {
                            "type": "image",
                            "src": "https://templates.shotstack.io/basic/asset/image/icon/slimline/white/26px/bath.png"
                        },
                        "start": 1.4,
                        "length": 4,
                        "fit": "none",
                        "position": "left",
                        "offset": {
                            "x": 0.13,
                            "y": -0.025
                        },
                        "transition": {
                            "in": "fade",
                            "out": "fade"
                        }
                    },
                    {
                        "asset": {
                            "type": "image",
                            "src": "https://templates.shotstack.io/basic/asset/image/icon/slimline/white/26px/car.png"
                        },
                        "start": 1.4,
                        "length": 4,
                        "fit": "none",
                        "position": "left",
                        "offset": {
                            "x": 0.205,
                            "y": -0.025
                        },
                        "transition": {
                            "in": "fade",
                            "out": "fade"
                        }
                    },
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{BEDS}}</p>",
                            "css": "p { font-family: \"{{PRIMARY_FONT}}\"; color: {{SECONDARY_COLOR}}; font-size: 18px; text-align: left;     }",
                            "width": 36,
                            "height": 26,
                            "position": "center"
                        },
                        "start": 1.4,
                        "length": 4,
                        "position": "left",
                        "offset": {
                            "x": 0.09,
                            "y": -0.025
                        },
                        "transition": {
                            "in": "fade",
                            "out": "fade"
                        }
                    },
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{BATHS}}</p>",
                            "css": "p { font-family: \"{{PRIMARY_FONT}}\"; color: {{SECONDARY_COLOR}}; font-size: 18px; text-align: left;     }",
                            "width": 36,
                            "height": 26,
                            "position": "center"
                        },
                        "start": 1.4,
                        "length": 4,
                        "position": "left",
                        "offset": {
                            "x": 0.165,
                            "y": -0.025
                        },
                        "transition": {
                            "in": "fade",
                            "out": "fade"
                        }
                    },
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{CARS}}</p>",
                            "css": "p { font-family: \"{{PRIMARY_FONT}}\"; color: {{SECONDARY_COLOR}}; font-size: 18px; text-align: left;     }",
                            "width": 36,
                            "height": 26,
                            "position": "center"
                        },
                        "start": 1.4,
                        "length": 4,
                        "position": "left",
                        "offset": {
                            "x": 0.24,
                            "y": -0.025
                        },
                        "transition": {
                            "in": "fade",
                            "out": "fade"
                        }
                    }
                ]
            },
            {
                "clips": [
                    {
                        "asset": {
                            "type": "luma",
                            "src": "https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/luma-mattes/circle.jpg"
                        },
                        "start": 30,
                        "length": 6
                    },
                    {
                        "asset": {
                            "type": "image",
                            "src": "{{HEADSHOT}}"
                        },
                        "start": 30,
                        "length": 6,
                        "fit": "none",
                        "scale": 0.4,
                        "offset": {
                            "x": 0,
                            "y": 0.22
                        },
                        "transition": {
                            "in": "fade"
                        }
                    }
                ]
            },
            {
                "clips": [
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{AGENT_NAME}}</p>",
                            "css": "p { font-family: \"{{PRIMARY_FONT}}\"; color: {{PRIMARY_COLOR}}; font-size: 26px; text-align: center;     }",
                            "width": 600,
                            "height": 36,
                            "position": "center"
                        },
                        "start": 30,
                        "length": 6,
                        "offset": {
                            "x": 0,
                            "y": 0.045
                        },
                        "transition": {
                            "in": "fade"
                        }
                    },
                    {
                        "asset": {
                            "type": "html",
                            "html": "<p>{{PHONE}}<br>{{EMAIL}}</p>",
                            "css": "p { font-family: \"{{SECONDARY_FONT}}\"; color: {{SECONDARY_COLOR}}; font-size: 18px; text-align: center;     }",
                            "width": 600,
                            "height": 64,
                            "position": "center"
                        },
                        "start": 30,
                        "length": 6,
                        "offset": {
                            "x": 0,
                            "y": -0.24
                        },
                        "transition": {
                            "in": "fade"
                        }
                    }
                ]
            },
            {
                "clips": [
                    {
                        "asset": {
                            "type": "image",
                            "src": "{{LOGO}}"
                        },
                        "start": 30,
                        "length": 6,
                        "fit": "none",
                        "scale": 0.26,
                        "offset": {
                            "x": 0,
                            "y": -0.08
                        },
                        "transition": {
                            "in": "fade"
                        }
                    }
                ]
            },
            {
                "clips": [
                    {
                        "asset": {
                            "type": "video",
                            "src": "https://templates.shotstack.io/basic/asset/video/overlay/{{OVERLAY_STYLE}}/{{OVERLAY_COLOR}}/content-left-in.mov"
                        },
                        "start": 0,
                        "length": 4.48
                    },
                    {
                        "asset": {
                            "type": "video",
                            "src": "https://templates.shotstack.io/basic/asset/video/overlay/{{OVERLAY_STYLE}}/{{OVERLAY_COLOR}}/content-left-out.mov"
                        },
                        "start": 4.52,
                        "length": 2
                    },
                    {
                        "asset": {
                            "type": "video",
                            "src": "https://templates.shotstack.io/basic/asset/video/overlay/{{OVERLAY_STYLE}}/{{OVERLAY_COLOR}}/transition-right.mov"
                        },
                        "start": 10.56,
                        "length": 3
                    },
                    {
                        "asset": {
                            "type": "video",
                            "src": "https://templates.shotstack.io/basic/asset/video/overlay/{{OVERLAY_STYLE}}/{{OVERLAY_COLOR}}/transition-up.mov"
                        },
                        "start": 16.56,
                        "length": 3
                    },
                    {
                        "asset": {
                            "type": "video",
                            "src": "https://templates.shotstack.io/basic/asset/video/overlay/{{OVERLAY_STYLE}}/{{OVERLAY_COLOR}}/transition-left.mov"
                        },
                        "start": 22.56,
                        "length": 3
                    },
                    {
                        "asset": {
                            "type": "video",
                            "src": "https://templates.shotstack.io/basic/asset/video/overlay/{{OVERLAY_STYLE}}/{{OVERLAY_COLOR}}/outro-in.mov"
                        },
                        "start": 29,
                        "length": 7
                    }
                ]
            },
            {
                "clips": [
                    {
                        "asset": {
                            "type": "image",
                            "src": "{{IMAGE_1}}"
                        },
                        "start": 0,
                        "length": 6,
                        "effect": "zoomInSlow",
                        "transition": {
                            "in": "fade"
                        }
                    },
                    {
                        "asset": {
                            "type": "image",
                            "src": "{{IMAGE_2}}"
                        },
                        "start": 6,
                        "length": 6,
                        "effect": "slideLeftSlow"
                    },
                    {
                        "asset": {
                            "type": "image",
                            "src": "{{IMAGE_3}}"
                        },
                        "start": 12,
                        "length": 6,
                        "effect": "slideRightSlow"
                    },
                    {
                        "asset": {
                            "type": "image",
                            "src": "{{IMAGE_4}}"
                        },
                        "start": 18,
                        "length": 6,
                        "effect": "slideUpSlow"
                    },
                    {
                        "asset": {
                            "type": "image",
                            "src": "{{IMAGE_5}}"
                        },
                        "start": 24,
                        "length": 6,
                        "effect": "slideLeftSlow"
                    },
                    {
                        "asset": {
                            "type": "image",
                            "src": "{{IMAGE_1}}"
                        },
                        "start": 30,
                        "length": 6,
                        "effect": "zoomInSlow"
                    }
                ]
            }
        ],
        "fonts": [
            {
                "src": "{{PRIMARY_FONT_SRC}}"
            },
            {
                "src": "{{SECONDARY_FONT_SRC}}"
            }
        ],
        "soundtrack": {
            "src": "{{SOUNDTRACK}}",
            "effect": "fadeOut"
        }
    },
    "output": {
        "format": "mp4",
        "resolution": "sd"
    }
}

A real estate slideshow video with overlay transitions and backgrounds, Ken Burns photo effects and real estate agent outro.

Open in Studio

No account needed until you render.

Render with your AI assistant

Open in Claude Open in ChatGPT

Add the Shotstack MCP server to your editor, then paste the prompt

When you want to automate this

One video per listing, automatically.

1
See it
OutputMP4
Size1024 × 576 (16:9)
Length36s
Frame ratedefault (25 fps)
Tracks / clips7 / 27
Assets used9 html, 11 image, 1 luma, 6 video
Soundtrackyes
Merge fields26
2
Make it yours

Send a merge array with your values for these fields:

FieldDefault value
{{ ADDRESS_1 }}192 STOREY STREET
{{ ADDRESS_2 }}MAROUBRA, NSW 2035
{{ SALE_TYPE }}HOUSE
{{ PROPERTY_TYPE }}AUCTION 22 OCTOBER
{{ BEDS }}4
{{ BATHS }}2
{{ CARS }}1
{{ HEADSHOT }}https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/images/real-estate-agent-male.jpg
{{ AGENT_NAME }}JEREMY SIMPSON
{{ LOGO }}https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/logos/real-estate-white.png
{{ PHONE }}0424 998 776
{{ EMAIL }}jeremy@blockrealestate.co
{{ IMAGE_1 }}https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate1.jpg
{{ IMAGE_2 }}https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate2.jpg
{{ IMAGE_3 }}https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate3.jpg
{{ IMAGE_4 }}https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate4.jpg
{{ IMAGE_5 }}https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate5.jpg
{{ PRIMARY_FONT }}Manrope ExtraBold
{{ PRIMARY_FONT_SRC }}https://templates.shotstack.io/basic/asset/font/manrope-extrabold.ttf
{{ PRIMARY_COLOR }}#f0c20c
{{ SECONDARY_FONT }}Manrope Light
{{ SECONDARY_FONT_SRC }}https://templates.shotstack.io/basic/asset/font/manrope-light.ttf
{{ SECONDARY_COLOR }}#ffffff
{{ OVERLAY_STYLE }}arrow-sharp
{{ OVERLAY_COLOR }}black
{{ SOUNDTRACK }}https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/music/unminus/ambisax.mp3
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

Feed it your listings and every property gets its own video the moment it hits the market — no editor in the loop.

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 26 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 26 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.

Can I render this in full HD or 4K for YouTube?

Yes. This template renders 1024×576 by default. Set output.resolution to "1080" or output.size to a larger 16:9 size in the JSON; the layout scales with it.

Can I swap the footage for my own video?

Yes. Replace the video asset's src with a public URL of your file (MP4 works best). Use trim and length on the clip to pick the part you want, and the template's effects apply to your footage.

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.