Customization

What Can Be Customized #

The Short Video Maker workflow is highly customizable. Users can change the niche, content style, narration style, image style, publishing rhythm, and creative rules without changing the core workflow structure. The main system remains the same:

  1. generate ideas
  2. create video assets
  3. render the final short
  4. publish the video

What changes is the content logic and the prompt system that controls the AI outputs.


Main Customization Areas #

The most important parts users can customize are:

  • niche and topic
  • AI prompt rules
  • number of ideas generated per batch
  • number of images per video
  • narration style
  • title and caption style
  • output language
  • voice model
  • image size
  • schedule timing
  • publishing frequency
  • JSON2Video template structure

Important #

Users can change almost anything, but they must keep the workflow structure aligned across:

  • prompts
  • output parsers
  • expressions
  • code nodes
  • Google Sheet fields
  • JSON2Video template mappings

If one layer changes, the related layers may also need to be updated.


1. AI Prompt Customization #

The workflow uses two main AI agent stages:

  1. an idea generator agent
  2. a video creation agent

These two prompts control most of the workflow’s creative behavior. Instead of rewriting prompts manually from scratch, users can use the template builders below.

These templates are designed to be filled with niche-specific information, then pasted into ChatGPT, Claude, or another AI assistant. The AI will then generate a full prompt in the same style as this workflow, but adapted to the user’s own niche.


2. Template Builder for the Idea Generator Agent #

Use this template when adapting the 20 ideas generator to a new niche.

How to use it #

  1. Replace all placeholders with your own details
  2. Copy the full template
  3. Paste it into ChatGPT, Claude, or another AI tool
  4. Ask it to generate a production-ready n8n system prompt
  5. Use the generated prompt inside your workflow
You are an expert AI workflow prompt engineer.Your task is to write a production-ready system prompt for an AI agent that generates 20 unique short-video ideas for an n8n automation workflow.The workflow niche and requirements are:Brand name: [YOUR BRAND NAME]
Channel/platform: [YOUTUBE SHORTS / INSTAGRAM REELS / TIKTOK / MULTI-PLATFORM]
Primary niche: [YOUR NICHE]
Audience type: [WHO THE CONTENT IS FOR]
Content goal: [EDUCATIONAL / ENTERTAINING / EMOTIONAL / CINEMATIC / SALES-DRIVEN / OTHER]
Video style: [DOCUMENTARY / STORYTELLING / MINIMAL / DRAMATIC / FRIENDLY / OTHER]
Language: [LANGUAGE]
Ideas per batch: [NUMBER OF IDEAS]
Idea length target: [WORDS PER IDEA]
Content categories required: [LIST OF CONTENT TYPES]
Any required distribution rule: [EXAMPLE: 15 REAL + 5 LEGENDARY, OR 10 TIPS + 10 CASE STUDIES]
Accuracy rule: [WHAT MUST BE FACTUALLY TRUE OR VERIFIED]
Sensitive content restrictions: [WHAT MUST BE AVOIDED]Duplication rule:
The prompt must instruct the AI to compare new ideas against the existing idea list in a connected Google Sheet and avoid duplicates.Output format: valid JSON onlyRequired JSON schema:
{
"videoIdeas": [
"<idea 1>",
"<idea 2>"
]
}Write the system prompt so that:
1. It is strict, detailed, and production-ready.
2. It generates cinematic, specific, high-quality short-video ideas for the niche.
3. It checks for duplicates against the Google Sheet before finalizing ideas.
4. It clearly explains style, content boundaries, accuracy rules, and output requirements.
5. It is suitable for direct use inside an n8n AI agent node.Return only the finished system prompt.

3. Template Builder for the Main Video Creation Agent #

Use this template when adapting the video creation agent to a different niche.

How to use it #

  1. Replace all placeholders with your own niche and style details
  2. Copy the full template
  3. Paste it into ChatGPT, Claude, or another AI tool
  4. Ask it to create a structured prompt similar to this workflow
  5. Use the generated prompt in the AI agent node that creates the video assets
You are an expert AI workflow prompt engineer.Your task is to write a production-ready system prompt for an n8n AI agent that receives one idea and turns it into a complete short-video asset package.The workflow niche and requirements are:Brand name: [YOUR BRAND NAME]
Primary niche: [YOUR NICHE]
Audience type: [WHO THE CONTENT IS FOR]
Platform: [YOUTUBE SHORTS / INSTAGRAM REELS / TIKTOK / MULTI-PLATFORM]
Language: [LANGUAGE]
Video type: short-form vertical video
Target length: [EXAMPLE: 30 TO 90 SECONDS]
Storytelling tone: [CINEMATIC / EDUCATIONAL / EMOTIONAL / AUTHORITATIVE / PLAYFUL / OTHER]
Narrator tone: [WARM / DRAMATIC / NOSTALGIC / FAST / CALM / OTHER]
Visual style: [REALISTIC / CINEMATIC / ILLUSTRATED / SOFT / PREMIUM / OTHER]
Image count: [NUMBER OF IMAGES]
Image safety rules: [WHAT MUST BE AVOIDED]
Caption style: [SHORT / DRAMATIC / EDUCATIONAL / CTA-FOCUSED / OTHER]
Hashtag rule: [NUMBER OF HASHTAGS]
Title rules: [CHARACTER LIMIT / BRAND STYLE / PERSON NAME RULE / OTHER]
Story rules: [WORD COUNT / PERSPECTIVE / FACTUALITY / OTHER]
Narration rules: [WORD COUNT / TONE / NAME USAGE / OTHER]
Fallback behavior if the idea is broad or unclear: [YOUR RULE]Output must be valid JSON only.Required JSON schema:
{
"title": "<string>",
"imagePrompts": [
"<string>",
"<string>",
"<string>",
"<string>",
"<string>",
"<string>"
],
"soundPrompt": "<string>",
"caption": "<string>"
}The system prompt you write must:
1. Tell the AI how to turn one idea into a title, image prompts, narration script, and caption.
2. Include strict quality rules.
3. Include any safety or moderation rules needed for image generation.
4. Enforce the exact JSON output structure.
5. Be suitable for direct use inside an n8n AI agent node.Return only the finished system prompt.

4. Direct Input Prompts Used by the Audio and Image Nodes #

The workflow sends the generated outputs directly into the audio and image generation nodes.

Audio generation input #

{{ $json.output.soundPrompt }}

Image generation input #

{{ $json.imagePrompt }}

What this means #

The main AI agent is expected to already return:

  • a ready-to-use narration script in soundPrompt
  • ready-to-use image prompts in imagePrompt or imagePrompts

If the user changes the AI output structure, these mappings must also be updated. Otherwise, the audio or image generation nodes may fail.


5. Output Parser Structures #

The workflow depends on structured output parsers. If the user changes the AI output structure, the parser must also be updated to match.

Idea generator output parser #

{
"videoIdeas": [
"{{Idea 1 text here}}",
"{{Idea 2 text here}}",
"{{Idea 3 text here}}",
"{{Idea 4 text here}}",
"{{Idea 5 text here}}",
"{{Idea 6 text here}}",
"{{Idea 7 text here}}",
"{{Idea 8 text here}}",
"{{Idea 9 text here}}",
"{{Idea 10 text here}}",
"{{Idea 11 text here}}",
"{{Idea 12 text here}}",
"{{Idea 13 text here}}",
"{{Idea 14 text here}}",
"{{Idea 15 text here}}",
"{{Idea 16 (legendary idea text here)}}",
"{{Idea 17 (legendary idea text here)}}",
"{{Idea 18 (legendary idea text here)}}",
"{{Idea 19 (legendary idea text here)}}",
"{{Idea 20 (legendary idea text here)}}"
]
}

Video creation output parser #

{
"title": "<string>",
"imagePrompts": [
"<string>",
"<string>",
"<string>",
"<string>",
"<string>",
"<string>"
],
"soundPrompt": "<string>",
"caption": "<string>"
}

Important #

If the parser schema and the AI output do not match exactly, later workflow steps may fail.


6. JavaScript Blocks That Can Be Customized #

This workflow includes several code nodes. Users may edit them if they want different output behavior, but any change must stay aligned with the rest of the workflow.

Separate 20 generated ideas into individual items #

// Access nested path: output.videoIdeas
const ideas = $json.output?.videoIdeas || $json.videoIdeas;// Validate the data
if (!Array.isArray(ideas)) {
throw new Error("Expected 'output.videoIdeas' to be an array in the input JSON.");
}// Split into individual items
return ideas.map((idea, index) => ({
json: {
index: index + 1,
idea: idea.trim()
}
}));

Separate image prompts into individual items #

// 1) Pull in the Generate Titles output
const aiOut = items[0].json.output;// 2) Get image prompts (accepts either array of strings OR array of objects with .prompt)
const rawImages = aiOut.imagePrompts || aiOut.image_prompts || [];
const imagePrompts = Array.isArray(rawImages)
? rawImages.map(p => (typeof p === 'string' ? p : (p && p.prompt) || ''))
: [];const soundPrompt =
aiOut.soundPrompt ||
aiOut.voiceover_script_30s ||
aiOut.voiceoverScript ||
aiOut.voiceover ||
aiOut.audioScript ||
'';// Safeties
if (imagePrompts.length === 0) {
throw new Error('Missing image prompts array');
}
if (!soundPrompt) {
throw new Error('Missing sound/voiceover prompt');
}// 3) Map into separate items (one per image) and include the same sound prompt
return imagePrompts.map((img, i) => ({
json: {
shotIndex: i + 1,
imagePrompt: img,
soundPrompt: soundPrompt,
}
}));

Calculate equal duration for each of 6 images #

// Get the total duration (seconds) from previous node
const total = $json.duration || $json.audio_duration;// If no duration found, stop safely
if (!total) {
throw new Error("No duration found in input data.");
}// Divide into 6 equal parts
const perPart = total / 6;// Optional: round to 3 decimal places
const perPartRounded = Math.round(perPart * 1000) / 1000;// Return both total and per-part durations
return [
{
json: {
total_duration: total,
per_image_duration: perPartRounded,
parts: [
{ scene: 1, start: 0, end: perPartRounded },
{ scene: 2, start: perPartRounded, end: perPartRounded * 2 },
{ scene: 3, start: perPartRounded * 2, end: perPartRounded * 3 },
{ scene: 4, start: perPartRounded * 3, end: perPartRounded * 4 },
{ scene: 5, start: perPartRounded * 4, end: perPartRounded * 5 },
{ scene: 6, start: perPartRounded * 5, end: total }
]
}
}
];

Merge image links after searching the image folder #

// Grab every webViewLink from the search results
const links = items.map(item => item.json.webViewLink);// Emit a single item with one array field
return [{ json: { links } }];

Merge voice links after searching the voice folder #

// Grab every webViewLink from the search results
const links = items.map(item => item.json.webViewLink);// Emit a single item with one array field
return [{ json: { links } }];

7. JSON2Video Template Customization #

The workflow also depends on a compatible JSON2Video template.

Current template behavior #

The included template is designed to:

  • accept 6 images
  • use the audio track
  • generate subtitles or captions from the audio during rendering

Important dependency #

If the user changes:

  • the number of images
  • the rendering structure
  • the field naming
  • the template layout

they must also update:

  • workflow mappings
  • expressions
  • code nodes
  • JSON payload structure

Otherwise, the render stage may stop working correctly.


8. Safe Customization Checklist #

The table below shows what can usually be changed safely.

AreaCan Be Customized?Notes
Niche and topicYesUpdate the AI prompts
Idea generation rulesYesKeep parser structure aligned
Video creation promptYesMust still return the expected JSON
Narration styleYesUpdate prompt rules if needed
Image styleYesKeep moderation safety in mind
Number of ideas per batchYesMay require prompt changes
Number of images per videoYesRequires code and template updates
Voice modelYesUpdate the audio generation node
Output languageYesUpdate prompt instructions
Schedule timingYesKeep stage dependency order correct
Title and caption styleYesKeep output field names unchanged
Sheet logic and statusesYes, with cautionDo not break matching values
JSON2Video templateYes, with cautionMust stay aligned with workflow fields

9. Best Practice for Customizing This Workflow #

The safest way to customize the workflow is to change one layer at a time.

Recommended order #

  1. customize the AI prompt
  2. test the parser output
  3. test the expressions and code nodes
  4. test the image/audio generation steps
  5. test the JSON2Video render
  6. test the sheet updates
  7. test the publishing step

Why this matters #

If too many things are changed at once, it becomes much harder to find where the workflow broke.


Customization Summary #

This workflow is highly flexible, but it depends on structured outputs. Users can adapt it to almost any niche as long as they keep the prompts, parsers, code, sheet structure, and rendering template aligned with each other. The most important customization area is the AI prompt system, because that is what drives the rest of the workflow.

Was it helpful ?
Scroll to Top
👋 Welcome to Davix AI Engine!