Skip to main content

ai-festival-campaign-generator

Multi-agent AI marketing automation system that generates complete festival campaigns with n8n, Gemini, and automated delivery

Ir para a instalação

Informações da origem

Repositório
reason-machines/marketing-skills
Última atividade na origem
1 de agosto de 2026 às 12:26
Idioma detectado do SKILL.md
inglês
Estrelas
10
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
ai-festival-campaign-generator
description
Multi-agent AI marketing automation system that generates complete festival campaigns with n8n, Gemini, and automated delivery
triggers
["generate a festival marketing campaign","create festival campaign with AI agents","automate festival marketing with n8n","build multi-agent campaign generator","generate festival ads and visuals","create automated marketing workflow for festivals","set up AI campaign automation system","generate complete festival marketing assets"]
# AI Festival Campaign Generator > Skill by [ara.so](https://ara.so) — Marketing Skills collection. This skill enables AI coding agents to work with the AI Festival Campaign Generator, a multi-agent marketing automation system built with n8n that generates complete festival marketing campaigns including copywriting, visual assets, quality assurance, and automated delivery via email. ## What It Does The AI Festival Campaign Generator orchestrates multiple AI agents to: - Research festival context and consumer psychology - Generate multi-channel marketing copy (social media, email, SMS, YouTube) - Create AI-powered visual assets (product images, banners, stories) - Perform campaign quality assurance - Store assets in Google Drive - Log campaigns in Google Sheets - Deliver formatted campaign kits via email ## Architecture Overview The system uses a 4-agent architecture: 1. **Festival Intelligence Agent**: Researches festival, analyzes consumer behavior, recommends offers 2. **Campaign Copywriter Agent**: Generates copy for 10+ marketing channels 3. **AI Visual Generator Agent**: Creates and uploads visual assets to Drive 4. **Campaign QA Reviewer Agent**: Reviews quality and provides deployment score ## Installation ### Prerequisites - n8n instance (self-hosted or cloud) - Google Gemini API key - Google Cloud project with Drive, Sheets, and Gmail APIs enabled - OAuth2 credentials for Google services ### Setup Steps ```bash # Clone the repository git clone https://github.com/Chaitanyaa0406/AI-Festival-Campaign-Generator.git cd AI-Festival-Campaign-Generator ``` ### n8n Workflow Import 1. Open your n8n instance 2. Navigate to Workflows > Import from File 3. Select `workflow/festival-campaign-generator.json` 4. Configure credentials for each service ### Environment Configuration Set up the following environment variables or n8n credentials: ```bash # Gemini API GEMINI_API_KEY=your_gemini_api_key # Google Drive OAuth2 GOOGLE_DRIVE_CLIENT_ID=your_client_id GOOGLE_DRIVE_CLIENT_SECRET=your_client_secret # Google Sheets OAuth2 GOOGLE_SHEETS_CLIENT_ID=your_client_id GOOGLE_SHEETS_CLIENT_SECRET=your_client_secret # Gmail OAuth2 GMAIL_CLIENT_ID=your_client_id GMAIL_CLIENT_SECRET=your_client_secret ``` ## Key Components ### 1. Festival Intelligence Agent **Purpose**: Research festival and generate strategic insights **Gemini Prompt Structure**: ```javascript // n8n Code Node - Festival Research const festivalName = $json.festival_name; const productName = $json.product_name; const brandName = $json.brand_name; const prompt = `You are a Festival Marketing Intelligence Agent. Festival: ${festivalName} Brand: ${brandName} Product: ${productName} Analyze and provide: 1. Festival significance and cultural context 2. Consumer psychology during this festival 3. Emotional triggers and pain points 4. Shopping behavior patterns 5. Recommended offer types (discount %, BOGO, bundles) 6. Trending hashtags (10-15) 7. Best posting times and channels 8. Festival-specific keywords for SEO Format as structured JSON.`; return { json: { prompt: prompt, festivalName: festivalName, productName: productName } }; ``` ### 2. Campaign Copywriter Agent **Purpose**: Generate multi-channel marketing copy **Copy Generation Pattern**: ```javascript // n8n Code Node - Campaign Copy Generation const festivalInsights = $json.festival_insights; const productName = $json.product_name; const brandName = $json.brand_name; const copyPrompt = `You are an Expert Marketing Copywriter. Using these insights: ${JSON.stringify(festivalInsights)} Generate complete campaign copy for: 1. Facebook Ad (Primary Text, Headline, Description) 2. Instagram Ad (Caption with emojis, hashtags) 3. Google Search Ad (3 Headlines, 2 Descriptions) 4. YouTube Script (30-second hook + 2-minute full script) 5. Email Sequence (Subject, Preview, Body HTML for 3 emails) 6. WhatsApp Campaign (Opening message, follow-up, closing) 7. SMS Campaign (160 characters with link) 8. Push Notification (Title + Body under 50 chars) 9. Website Hero Section (Headline, Subheadline, CTA) 10. Influencer Brief (Key points, talking points, hashtags) 11. SEO Keywords (20 long-tail keywords) 12. Content Calendar (7-day posting schedule) Return as structured JSON with each channel as a key.`; return { json: { prompt: copyPrompt, campaign_id: `CAMP_${Date.now()}` } }; ``` ### 3. AI Visual Generator Agent **Purpose**: Generate and store visual assets **Image Generation Integration**: ```javascript // n8n Code Node - Visual Asset Prompts const festivalName = $json.festival_name; const productName = $json.product_name; const brandColors = $json.brand_colors || "vibrant festive colors"; const visualPrompts = { product_visual: `Professional product photography of ${productName} with ${festivalName} themed decorations, ${brandColors}, high quality, marketing shot, clean background`, instagram_story: `Vertical 9:16 Instagram story design for ${festivalName}, featuring ${productName}, bold text overlay with festival offer, ${brandColors}, modern design, attention-grabbing`, ad_banner: `Horizontal advertisement banner 1200x628px for ${festivalName} sale, featuring ${productName}, professional design, ${brandColors}, clear CTA, festival elements` }; return { json: { visuals: visualPrompts, campaign_id: $json.campaign_id } }; ``` **Google Drive Upload Pattern**: ```javascript // n8n Google Drive Node Configuration // After receiving generated images from Gemini/DALL-E // Configure in n8n UI: // - Action: Upload // - Folder: Use expression {{$json.campaign_folder_id}} // - File Name: {{$json.image_type}}_{{$json.campaign_id}}.png // - Binary Data: true // - Binary Property: data // Post-upload processing const driveFiles = $json.files.map(file => ({ name: file.name, url: file.webViewLink, id: file.id })); return { json: { campaign_id: $json.campaign_id, drive_files: driveFiles } }; ``` ### 4. Campaign QA Reviewer Agent **Purpose**: Quality assurance and scoring **QA Evaluation Pattern**: ```javascript // n8n Code Node - QA Review const campaignCopy = $json.campaign_copy; const visualAssets = $json.visual_assets; const festivalInsights = $json.festival_insights; const qaPrompt = `You are a Campaign Quality Assurance Expert. Review this campaign: Copy: ${JSON.stringify(campaignCopy)} Visuals: ${visualAssets.length} assets created Festival Context: ${JSON.stringify(festivalInsights)} Evaluate and score (0-100) on: 1. Festival Relevance (0-20 points) 2. Emotional Impact (0-20 points) 3. CTA Strength (0-15 points) 4. Offer Attractiveness (0-15 points) 5. Copy Quality (0-15 points) 6. Visual-Copy Alignment (0-15 points) Provide: - Total Score (0-100) - Deployment Recommendation (YES/NO/REVISE) - Strengths (3 bullet points) - Improvements (3 bullet points) - Priority Fixes (if score < 80) Return as JSON.`; return { json: { prompt: qaPrompt, campaign_id: $json.campaign_id } }; ``` ### 5. Campaign Logging (Google Sheets) **Sheets Integration Pattern**: ```javascript // n8n Google Sheets Node - Append Row // Configure in n8n UI: // - Operation: Append // - Sheet: Campaign Log // - Columns: Map the following fields const logEntry = { campaign_id: $json.campaign_id, timestamp: new Date().toISOString(), festival_name: $json.festival_name, product_name: $json.product_name, brand_name: $json.brand_name, qa_score: $json.qa_score, deployment_status: $json.deployment_recommendation, drive_folder: $json.drive_folder_url, email_sent: 'YES', channels_covered: 'FB,IG,GG,YT,Email,WA,SMS', created_by: $json.user_email }; return { json: logEntry }; ``` ### 6. Email Delivery **HTML Email Template Pattern**: ```javascript // n8n Code Node - Generate HTML Email const campaignData = $json; const htmlEmail = ` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style> body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; } .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; text-align: center; } .content { padding: 30px; max-width: 800px; margin: 0 auto; } .section { margin: 30px 0; padding: 20px; background: #f9f9f9; border-radius: 8px; } .score { font-size: 48px; font-weight: bold; color: #667eea; text-align: center; } .channel { background: white; padding: 15px; margin: 10px 0; border-left: 4px solid #667eea; } .cta-button { background: #667eea; color: white; padding: 15px 30px; text-decoration: none; border-radius: 5px; display: inline-block; } </style> </head> <body> <div class="header"> <h1>🎉 ${campaignData.festival_name} Campaign Ready!</h1> <p>Campaign ID: ${campaignData.campaign_id}</p> </div> <div class="content"> <div class="section"> <h2>📊 Campaign Quality Score</h2> <div class="score">${campaignData.qa_score}/100</div> <p><strong>Status:</strong> ${campaignData.deployment_recommendation}</p> </div> <div class="section"> <h2>✍️ Generated Copy</h2> <div class="channel"> <h3>📘 Facebook Ad</h3> <p><strong>Headline:</strong> ${campaignData.copy.facebook.headline}</p> <p>${campaignData.copy.facebook.primary_text}</p> </div> <div class="channel"> <h3>📸 Instagram Ad</h3> <p>${campaignData.copy.instagram.caption}</p> <p><small>${campaignData.copy.instagram.hashtags}</small></p> </div> <div class="channel"> <h3>📧 Email Subject Lines</h3> <ul> ${campaignData.copy.email_sequence.map(e => `<li>${e.subject}</li>`).join('')} </ul> </div> </div> <div class="section"> <h2>🎨 Visual Assets</h2> <p>All assets uploaded to Google Drive:</p> <a href="${campaignData.drive_folder_url}" class="cta-button"> View Campaign Assets → </a> </div> <div class="section"> <h2>💡 Strategic Insights</h2> <p><strong>Best Posting Times:</strong> ${campaignData.insights.best_times}</p> <p><strong>Recommended Hashtags:</strong></p> <p>${campaignData.insights.hashtags.join(' ')}</p> </div> <div class="section"> <h2>📅 Content Calendar</h2> <pre>${JSON.stringify(campaignData.content_calendar, null, 2)}</pre> </div> </div> </body> </html> `; return { json: { html: htmlEmail, subject: `🎉 ${campaignData.festival_name} Campaign Ready - Score: ${campaignData.qa_score}/100`, to: campaignData.client_email } }; ``` ## Common Workflow Patterns ### Pattern 1: Campaign Trigger via Webhook ```javascript // n8n Webhook Node - POST /generate-campaign { "festival_name": "Diwali", "product_name": "Premium Smartphones", "brand_name": "TechBrand", "brand_colors": "blue and white", "target_audience": "young professionals", "budget_range": "mid-premium", "client_email": "client@example.com", "user_email": "agent@agency.com" } ``` ### Pattern 2: Campaign ID Generation ```javascript // n8n Code Node - Generate Unique Campaign ID const timestamp = Date.now(); const festivalCode = $json.festival_name.substring(0, 3).toUpperCase(); const productCode = $json.product_name.substring(0, 3).toUpperCase(); const campaignId = `${festivalCode}_${productCode}_${timestamp}`; return { json: { ...$json, campaign_id: campaignId, created_at: new Date().toISOString() } }; ``` ### Pattern 3: Gemini API Call Configuration ```javascript // n8n HTTP Request Node - Gemini API // Method: POST // URL: https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent const requestBody = { contents: [{ parts: [{ text: $json.prompt }]
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub