BrandPilot + n8n: AI campaign content generation workspace za multi-output marketing briefove
Ovaj case study opisuje “BrandPilot” demo MVP: React formu za unos strukturiranog campaign briefa i n8n workflow koji iz jednog inputa generira više marketinških outputa — blog post, LinkedIn post, FB/IG caption, X post, SEO pack, image prompt i video script. Fokus je bio na brzom dokazivanju end-to-end AI workflowa za agencijski use case, uz jasno odvajanje frontenda i orchestration sloja.
Live demo
Demo forma dostupna je ovdje: https://brandpilot.dariomijic.com/
Aplikacija trenutno koristi laganiji model za jeftino i brzo testiranje workflowa, dok je arhitektura zamišljena tako da se za produkciju lako prebaci na jače modele, bazu, RAG i approval flow.
Kontekst i problem
U marketinškim timovima isti brief često treba pretvoriti u više različitih outputa za više kanala. Ako se to radi ručno, copywriter ili content tim mora više puta reinterpretirati isti input — za blog, social, SEO i vizualne promptove — što usporava rad i lako stvara nekonzistentan ton.
Cilj je bio složiti mali interni tool koji iz jednog strukturiranog briefa može pokrenuti više AI generacijskih koraka, vratiti rezultate u istom sučelju i poslužiti kao proof-of-concept za širi agency AI workflow.
Rješenje (overview)
Rješenje je podijeljeno na dva sloja: (1) React frontend kao jednostavan workspace za campaign brief, output selector i preview rezultata; (2) n8n kao orchestration sloj koji prima payload, normalizira ga, validira, generira promptove po asset tipu i vraća strukturirani JSON frontendu.
Time je UI ostao lagan i jasan, a sva “AI logika” i branching preseljeni su u workflow gdje je kasnije jednostavno dodavati nove outpute, agente, database write korake i integrations layer.
Workflow logika
Frontend šalje multipart/form-data payload na n8n webhook. Nakon toga workflow prolazi kroz četiri ključna koraka: normalize input, validate input, build prompts i execution chain kroz channel-specific OpenAI nodeove.
Webhook
→ Normalize Input
→ Validate Input
→ IF is_valid?
├─ false → Build Error Response
└─ true → Build Prompts
→ Generate Blog Post
→ Generate LinkedIn Post
→ Generate Facebook Instagram Caption
→ Generate X Post
→ Generate SEO Pack
→ Generate Image Prompt
→ Generate Video Script
→ Build AI Success Response
→ Respond to Webhook
Ulazni brief i output miks
Brief je strukturiran kroz polja poput campaign name, topic, audience, goal, tone, platform focus, key message, CTA i brand context. Uz to korisnik bira koje outpute želi generirati, čime jedan workflow može pokriti više realnih agencijskih potreba bez dodatnog UI kompliciranja.
- blog_post
- linkedin_post
- facebook_instagram_caption
- x_post
- seo_pack
- image_prompt
- video_script
Prompt orchestration i guardrails
Umjesto jednog univerzalnog prompta, workflow koristi Build Prompts node koji iz briefa slaže više channel-specific promptova. Svaki prompt ima posebna pravila za ton, format i očekivani output. Time se izbjegava da isti model pokušava “na slijepo” pogoditi što je dobar blog, a što dobar caption ili SEO paket.
U promptovima su dodani i guardrails: zabrana meta-komentara, ograničenja emojija, jasna jezična pravila te stroži output format za SEO dio kako bi parsiranje ostalo stabilno.
Strukturirani response frontendu
Na kraju workflowa Build AI Success Response node skuplja sve generirane rezultate i vraća jedan strukturirani objekt. To frontend čini jednostavnim: prikazuje samo assete koji postoje i zadržava jasan output contract između UI-ja i automation layera.
{
"success": true,
"run_id": "run_1773656263403",
"project": {
"campaign_name": "Proljetni reset kože",
"topic": "hidratantna krema za svakodnevnu njegu osjetljive kože"
},
"assets": {
"blog_post": "...",
"linkedin_post": "...",
"facebook_instagram_caption": "...",
"x_post": "...",
"seo_pack": {
"keywords": ["..."],
"meta_description": "..."
},
"image_prompt": "...",
"video_script": "..."
},
"documents": [],
"meta": {
"generated_count": 7,
"duration_ms": 2500
},
"errors": []
}
Tehnički izazovi i rješenja
- n8n node referencing: response node i cross-node references morali su koristiti strogo konzistentna imena nodeova.
- Prompt quality: slabiji model davao je generičan ili loš hrvatski copy → rješenje: channel-specific promptovi i bolji input briefovi.
- SEO parsing: SEO output je morao imati strogo definiran format kako bi keywords i meta description bili stabilno parsirani.
- UI/backend separation: React frontend ostao je tanak, dok je sav branching i validation prebačen u n8n.
- MVP pragmatika: cilj nije bio finalni content engine, nego brz dokaz workflow arhitekture koja se može kasnije širiti.
Zaključak
BrandPilot pokazuje kako jedan relativno mali stack — React frontend + n8n + OpenAI — može postati ozbiljan interni tool za marketinški workflow. Ključna vrijednost nije samo u generiranju sadržaja, nego u tome što je jedan brief pretvoren u više kanalno-specifičnih outputa kroz isti, proširivi orchestration layer.
Kao demo MVP, projekt je dovoljno mali da se brzo izgradi i objasni, ali dovoljno konkretan da pokaže product thinking, workflow design i praktičnu AI automatizaciju za agencijsko okruženje.