Skip to content

Config reference

Most settings are edited in the app’s Settings tab, but everything is stored in a plain JSON file at:

  • macOS: ~/Library/Application Support/MusicVideoGenerator/config.json
  • Windows: %APPDATA%\MusicVideoGenerator\config.json

You can edit the file directly if you prefer.

Full example

{
"channel_name": "Outlaw AI Labs",
"channel_logo": "assets/logo.png",
"logo_height": 200,
"review_backgrounds": false,
"create": ["youtube", "tiktok", "instagram"],
"style": {
"font": "Helvetica Neue",
"sizes": [42, 50, 58, 66],
"title_font": "Futura",
"title_size": 80,
"brand_font": "Helvetica Neue",
"lyric_mode": "karaoke"
},
"youtube": {
"category": "10",
"privacy": "private",
"tags": [],
"description_template": "{title}\n\nGenerated by {channel}"
},
"tiktok": {
"clip_duration": 30,
"endcard_text": "Full video on YouTube",
"privacy": "public",
"post_mode": "inbox",
"caption_template": "{title} - Full video on YouTube #music #newmusic #ai",
"disable_duet": false,
"disable_stitch": false,
"disable_comment": false
},
"instagram": {
"clip_duration": 60,
"endcard_text": "Full video on YouTube",
"caption_template": "{title} - Full video on YouTube #music #newmusic",
"share_to_feed": true,
"app_id": "",
"app_secret": ""
},
"lyrics": {
"enabled": false
}
}

Channel

FieldDefaultDescription
channel_nameShown on the title card and bottom-left of every video
channel_logoPath to your logo image, overlaid top-right of every video
logo_height200Logo display height in pixels

Output

FieldDefaultDescription
create["youtube"]Which formats to render. Any combination of "youtube", "tiktok", "instagram"
review_backgroundsfalseWhen true, pauses after fetching backgrounds so you can approve them

Style

See Style & fonts.

YouTube

FieldDefaultDescription
youtube.category"10"YouTube category ID (10 = Music)
youtube.privacy"private"private, unlisted, or public
youtube.tags[]Tags applied to every upload
youtube.description_template"{title}\n\nGenerated by {channel}"Fallback description. Supports {title} and {channel}

TikTok

FieldDefaultDescription
tiktok.clip_duration30Length in seconds for the TikTok clip
tiktok.endcard_text"Full video on YouTube"Text overlaid on the last few seconds
tiktok.privacy"public"public, friends, or private
tiktok.post_mode"inbox""inbox" = review in app. "direct" = goes live immediately
tiktok.caption_templatesee exampleCaption template. Supports {title} and {channel}
tiktok.disable_duetfalseDisable duet on uploaded videos
tiktok.disable_stitchfalseDisable stitch on uploaded videos
tiktok.disable_commentfalseDisable comments on uploaded videos

Instagram

FieldDefaultDescription
instagram.clip_duration60Length in seconds for the Reel clip (Meta’s limit is 90s)
instagram.endcard_text"Full video on YouTube"Text overlaid on the last few seconds
instagram.caption_template""Caption template. Supports {title} and {channel}
instagram.share_to_feedtrueWhen true, the Reel also appears on your main Instagram grid
instagram.app_id""Your Meta app’s App ID (see Instagram setup). Also readable from the META_APP_ID environment variable
instagram.app_secret""Your Meta app’s App Secret. Also readable from META_APP_SECRET. Treat like a password

Lyrics

FieldDefaultDescription
lyrics.enabledfalseMaster toggle for the AI Lyric Generator. When on, the Lyrics panel in Settings exposes model and brand configuration (see Lyrics)

Where renders live

Finished videos are written to renders/{render_id}/ inside the app data directory — one folder per render. See Where your files live for the full directory tree and per-render folder contents.