The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Multi-AI Prompt Generator Workflow",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "generate-prompt",
"responseMode": "responseNode",
"options": {
"cors": true
}
},
"id": "webhook-start",
"name": "Webhook Start",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
240,
300
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "user_input",
"name": "user_input",
"value": "={{ $json.body.prompt || 'Default prompt' }}",
"type": "string"
},
{
"id": "prompt_type",
"name": "prompt_type",
"value": "={{ $json.body.type || 'general' }}",
"type": "string"
},
{
"id": "creativity_level",
"name": "creativity_level",
"value": "={{ $json.body.creativity || 0.7 }}",
"type": "number"
},
{
"id": "language",
"name": "language",
"value": "={{ $json.body.language || 'Indonesian' }}",
"type": "string"
},
{
"id": "ai_provider",
"name": "ai_provider",
"value": "={{ $json.body.provider || 'gemini' }}",
"type": "string"
}
]
},
"options": {}
},
"id": "extract-parameters",
"name": "Extract Parameters",
"type": "n8n-nodes-base.set",
"typeVersion": 3.2,
"position": [
460,
300
]
},
{
"parameters": {
"jsCode": "// Prompt enhancement logic based on type\nconst userInput = $input.item(0).json.user_input;\nconst promptType = $input.item(0).json.prompt_type;\nconst creativityLevel = $input.item(0).json.creativity_level;\nconst language = $input.item(0).json.language;\nconst aiProvider = $input.item(0).json.ai_provider;\n\n// Define prompt templates\nconst promptTemplates = {\n 'creative-writing': {\n prefix: 'Sebagai penulis kreatif yang berpengalaman, buatlah',\n structure: 'cerita/artikel yang menarik dengan gaya naratif yang engaging',\n suffix: 'Pastikan untuk menggunakan bahasa yang hidup dan deskriptif.'\n },\n 'technical': {\n prefix: 'Sebagai ahli teknis, jelaskan dengan detail',\n structure: 'konsep atau solusi dengan pendekatan sistematis',\n suffix: 'Berikan contoh praktis dan implementasi yang jelas.'\n },\n 'marketing': {\n prefix: 'Sebagai marketing strategist, buatlah',\n structure: 'konten pemasaran yang persuasif dan menarik target audience',\n suffix: 'Fokus pada value proposition dan call-to-action yang kuat.'\n },\n 'educational': {\n prefix: 'Sebagai educator yang berpengalaman, ajarkan',\n structure: 'materi dengan pendekatan yang mudah dipahami',\n suffix: 'Gunakan analogi dan contoh untuk memperjelas konsep.'\n },\n 'general': {\n prefix: 'Tolong bantu saya dengan',\n structure: 'informasi yang komprehensif dan akurat',\n suffix: 'Berikan jawaban yang terstruktur dan mudah dipahami.'\n }\n};\n\n// Get template based on type\nconst template = promptTemplates[promptType] || promptTemplates['general'];\n\n// Create enhanced prompt\nlet enhancedPrompt = `${template.prefix} ${userInput}. ${template.structure}. ${template.suffix}`;\n\n// Add creativity instructions based on level\nif (creativityLevel > 0.8) {\n enhancedPrompt += ' Jadilah sangat kreatif dan inovatif dalam pendekatan Anda.';\n} else if (creativityLevel > 0.5) {\n enhancedPrompt += ' Gunakan pendekatan yang seimbang antara kreativitas dan struktur.';\n} else {\n enhancedPrompt += ' Fokus pada akurasi dan struktur yang jelas.';\n}\n\n// Add language instruction\nif (language !== 'Indonesian') {\n enhancedPrompt += ` Jawab dalam bahasa ${language}.`;\n}\n\n// Add metadata\nconst metadata = {\n original_prompt: userInput,\n enhanced_prompt: enhancedPrompt,\n prompt_type: promptType,\n creativity_level: creativityLevel,\n language: language,\n ai_provider: aiProvider,\n timestamp: new Date().toISOString(),\n template_used: template\n};\n\nreturn [{ json: metadata }];"
},
"id": "enhance-prompt",
"name": "Enhance Prompt",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
680,
300
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "check_ai_enabled",
"leftValue": "={{ $json.prompt_type }}",
"rightValue": "no-ai",
"operator": {
"type": "string",
"operation": "notEquals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "check-ai-integration",
"name": "Check AI Integration",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
900,
300
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "provider_check",
"leftValue": "={{ $json.ai_provider }}",
"rightValue": "openai",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "ai-provider-switch",
"name": "AI Provider Switch",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
1120,
200
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.openai.com/v1/chat/completions",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "openAiApi",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "model",
"value": "gpt-3.5-turbo"
},
{
"name": "messages",
"value": "=[{\"role\": \"user\", \"content\": \"{{ $json.enhanced_prompt }}\"}]"
},
{
"name": "temperature",
"value": "={{ $json.creativity_level }}"
},
{
"name": "max_tokens",
"value": "1000"
}
]
},
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "openai-request",
"name": "OpenAI Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
1340,
100
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "gemini_check",
"leftValue": "={{ $json.ai_provider }}",
"rightValue": "gemini",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "gemini-claude-switch",
"name": "Gemini/Claude Switch",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
1340,
300
]
},
{
"parameters": {
"method": "POST",
"url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "key",
"value": "={{ $credentials.googleGenAiApi.apiKey }}"
}
]
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "contents",
"value": "=[{\"parts\": [{\"text\": \"{{ $json.enhanced_prompt }}\"}]}]"
},
{
"name": "generationConfig",
"value": "={\"temperature\": {{ $json.creativity_level }}, \"maxOutputTokens\": 1000, \"topP\": 0.8, \"topK\": 10}"
}
]
},
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "gemini-request",
"name": "Gemini Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
1560,
200
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "anthropicApi",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "anthropic-version",
"value": "2023-06-01"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "model",
"value": "claude-3-haiku-20240307"
},
{
"name": "max_tokens",
"value": "1000"
},
{
"name": "temperature",
"value": "={{ $json.creativity_level }}"
},
{
"name": "messages",
"value": "=[{\"role\": \"user\", \"content\": \"{{ $json.enhanced_prompt }}\"}]"
}
]
},
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "claude-request",
"name": "Claude Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
1560,
400
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "final_response",
"name": "final_response",
"value": "={{ $json.enhanced_prompt }}",
"type": "string"
},
{
"id": "metadata",
"name": "metadata",
"value": "={{ $json }}",
"type": "object"
},
{
"id": "response_type",
"name": "response_type",
"value": "enhanced_prompt_only",
"type": "string"
}
]
},
"options": {}
},
"id": "format-response-no-ai",
"name": "Format Response (No AI)",
"type": "n8n-nodes-base.set",
"typeVersion": 3.2,
"position": [
1120,
500
]
},
{
"parameters": {
"jsCode": "// Format AI response based on provider\nconst aiResponse = $input.item(0).json;\nconst originalData = $input.item(1).json;\nconst provider = originalData.ai_provider;\n\nlet aiResponseText = 'No AI response available';\nlet tokensUsed = 0;\nlet modelUsed = 'unknown';\n\n// Parse response based on AI provider\nif (provider === 'openai') {\n aiResponseText = aiResponse.choices?.[0]?.message?.content || 'No OpenAI response';\n tokensUsed = aiResponse.usage?.total_tokens || 0;\n modelUsed = 'gpt-3.5-turbo';\n} else if (provider === 'gemini') {\n if (aiResponse.candidates && aiResponse.candidates.length > 0) {\n const candidate = aiResponse.candidates[0];\n if (candidate.content && candidate.content.parts && candidate.content.parts.length > 0) {\n aiResponseText = candidate.content.parts[0].text || 'No Gemini text';\n }\n }\n tokensUsed = aiResponse.usageMetadata?.totalTokenCount || 0;\n modelUsed = 'gemini-1.5-flash';\n} else if (provider === 'claude') {\n if (aiResponse.content && aiResponse.content.length > 0) {\n aiResponseText = aiResponse.content[0].text || 'No Claude text';\n }\n tokensUsed = aiResponse.usage?.output_tokens || 0;\n modelUsed = 'claude-3-haiku-20240307';\n}\n\nlet finalResponse = {\n success: true,\n original_prompt: originalData.original_prompt,\n enhanced_prompt: originalData.enhanced_prompt,\n ai_response: aiResponseText,\n metadata: {\n prompt_type: originalData.prompt_type,\n creativity_level: originalData.creativity_level,\n language: originalData.language,\n ai_provider: provider,\n timestamp: originalData.timestamp,\n ai_model_used: modelUsed,\n tokens_used: tokensUsed\n }\n};\n\nreturn [{ json: finalResponse }];"
},
"id": "format-ai-response",
"name": "Format AI Response",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1780,
300
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "final_output",
"name": "final_output",
"value": "={{ $json }}",
"type": "object"
}
]
},
"options": {}
},
"id": "merge-responses",
"name": "Merge Responses",
"type": "n8n-nodes-base.set",
"typeVersion": 3.2,
"position": [
2000,
300
]
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ $json.final_output || $json }}",
"options": {
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Access-Control-Allow-Origin",
"value": "*"
}
]
}
}
},
"id": "webhook-response",
"name": "Webhook Response",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [
2220,
300
]
}
],
"connections": {
"Webhook Start": {
"main": [
[
{
"node": "Extract Parameters",
"type": "main",
"index": 0
}
]
]
},
"Extract Parameters": {
"main": [
[
{
"node": "Enhance Prompt",
"type": "main",
"index": 0
}
]
]
},
"Enhance Prompt": {
"main": [
[
{
"node": "Check AI Integration",
"type": "main",
"index": 0
}
]
]
},
"Check AI Integration": {
"main": [
[
{
"node": "AI Provider Switch",
"type": "main",
"index": 0
}
],
[
{
"node": "Format Response (No AI)",
"type": "main",
"index": 0
}
]
]
},
"AI Provider Switch": {
"main": [
[
{
"node": "OpenAI Request",
"type": "main",
"index": 0
}
],
[
{
"node": "Gemini/Claude Switch",
"type": "main",
"index": 0
}
]
]
},
"Gemini/Claude Switch": {
"main": [
[
{
"node": "Gemini Request",
"type": "main",
"index": 0
}
],
[
{
"node": "Claude Request",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Request": {
"main": [
[
{
"node": "Format AI Response",
"type": "main",
"index": 0
}
]
]
},
"Gemini Request": {
"main": [
[
{
"node": "Format AI Response",
"type": "main",
"index": 0
}
]
]
},
"Claude Request": {
"main": [
[
{
"node": "Format AI Response",
"type": "main",
"index": 0
}
]
]
},
"Format Response (No AI)": {
"main": [
[
{
"node": "Merge Responses",
"type": "main",
"index": 0
}
]
]
},
"Format AI Response": {
"main": [
[
{
"node": "Merge Responses",
"type": "main",
"index": 0
}
]
]
},
"Merge Responses": {
"main": [
[
{
"node": "Webhook Response",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"tags": [
{
"createdAt": "2025-01-08T10:00:00.000Z",
"updatedAt": "2025-01-08T10:00:00.000Z",
"id": "multi-ai-prompt-generator",
"name": "Multi AI Prompt Generator"
}
],
"triggerCount": 1,
"updatedAt": "2025-01-08T10:00:00.000Z",
"versionId": "1"
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Multi-AI Prompt Generator Workflow. Uses httpRequest. Webhook trigger; 13 nodes.
Source: https://github.com/kairokuaa/asssa/blob/2f6c7ca7b7740e921d7037290e103d4aaddeb166/workflows/multi-ai-prompt-generator-workflow.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di
This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .
eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.
This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia
This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c