Skip to content

Social sizes ​

Generate the same video in multiple aspect ratios/resolutions for different platforms.

Strategy: Multiple templates ​

Create one design per aspect ratio:

TemplateResolutionPlatform
promo-16x9.ectemplate1920x1080YouTube, LinkedIn
promo-9x16.ectemplate1080x1920Reels, TikTok, Shorts
promo-1x1.ectemplate1080x1080Instagram Feed
promo-4x5.ectemplate1080x1350Instagram Portrait

CSV data (shared) ​

csv
Product Name,Price,Tagline
"Wireless Pro","Rp 2.999.000","Sound without limits"

Render script ​

bash
#!/bin/bash
# render-all.sh

DATA="products.csv"
BASE_NAME="promo"

# 16:9 YouTube
lakreet-swarm render --template ${BASE_NAME}-16x9.ectemplate --data $DATA \
  --name "${BASE_NAME}-yt-{index:3}-{slug:Product Name}" \
  --format h264 --out dist/16x9

# 9:16 Reels
lakreet-swarm render --template ${BASE_NAME}-9x16.ectemplate --data $DATA \
  --name "${BASE_NAME}-reels-{index:3}-{slug:Product Name}" \
  --format h264 --out dist/9x16

# 1:1 Instagram
lakreet-swarm render --template ${BASE_NAME}-1x1.ectemplate --data $DATA \
  --name "${BASE_NAME}-ig-{index:3}-{slug:Product Name}" \
  --format h264 --out dist/1x1

# 4:5 Instagram Portrait
lakreet-swarm render --template ${BASE_NAME}-4x5.ectemplate --data $DATA \
  --name "${BASE_NAME}-ig-portrait-{index:3}-{slug:Product Name}" \
  --format h264 --out dist/4x5

Output structure ​

dist/
├── 16x9/
│   ├── promo-yt-001-wireless-pro.mp4
│   └── ...
├── 9x16/
│   ├── promo-reels-001-wireless-pro.mp4
│   └── ...
├── 1x1/
│   ├── promo-ig-001-wireless-pro.mp4
│   └── ...
└── 4x5/
    ├── promo-ig-portrait-001-wireless-pro.mp4
    └── ...

Alternative: Single template + resolution ​

If design adapts, use --resolution:

bash
lakreet-swarm render --template promo.ectemplate --data data.csv \
  --resolution half --out dist/half

But separate templates give full layout control per platform.

CI integration ​

yaml
# .github/workflows/social-sizes.yml
jobs:
  render:
    strategy:
      matrix:
        size: [16x9, 9x16, 1x1, 4x5]
    steps:
      - run: lakreet-swarm render --template promo-${{ matrix.size }}.ectemplate --data data.csv --out dist/${{ matrix.size }}

Next steps ​

Independent project. Not affiliated with the ArtCraft team or the EffectCraft project.