This workflow corresponds to n8n.io template #6485 — we link there as the canonical source.
This workflow follows the Execute Workflow Trigger → Informationextractor recipe pattern — see all workflows that pair these two integrations.
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 →
{
"id": "BemMdzpvedBEQKot",
"name": " Multi-Version Content Generator with AI Scoring & Advocacy Preference Ranking",
"tags": [],
"nodes": [
{
"id": "ed9ebb62-1111-4d13-9170-8e01b5c34e06",
"name": "OpenRouter Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
340,
220
],
"parameters": {
"model": "anthropic/claude-sonnet-4",
"options": {}
},
"credentials": {
"openRouterApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "092e08c1-1794-4c52-8081-f128e404e155",
"name": "Create Content",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
200,
0
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "k053fXGjIF7dUIQZ",
"cachedResultName": "\u267b\ufe0f \ud83e\udde9 \ud83d\udcda General Research Agent"
},
"workflowInputs": {
"value": {
"chatInput": "=# INSTRUCTIONS\n\nYou will research the topic using Serper (Google search) or the Open Paws database. After your research, generate content as described below.\n\nCreate 10 different full-length versions of the content type specified by the user.\n\nContent type: {{ $json.contentType }} \nPoster\u2019s profile description: {{ $json['Poster\u2019s profile description'] }} \nTone (e.g., formal, casual, friendly): {{ $json['Tone (e.g., formal, casual, friendly)'] }} \nStyle (e.g., concise, detailed, persuasive): {{ $json['Style (e.g., concise, detailed, persuasive)'] }} \nTopic / Instructions: {{ $json['Topic or Instructions'] }}\n\nYour final response must be a JSON array of exactly 5 objects. Each object should have a `\"text\"` key with the complete, fully written content as the value.\n\n# VERY IMPORTANT\n\n- Always write full content \u2014 if it\u2019s a blog post, write full posts, not just titles. For emails, include subject lines and full bodies. \n- Use BB-code formatting, NOT markdown. \n- Format content according to the specified content type and style. \n- Do not include example or placeholder links. Any URLs must be real and found via Serper, Open Paws, or social media tools during your research. \n- Use only one tool call to generate high-quality content quickly \u2014 avoid multiple searches or iterations.",
"sessionId": "={{ (Math.random().toString(36).substring(2) + Date.now().toString(36)) }}"
},
"schema": [
{
"id": "chatInput",
"type": "string",
"display": true,
"required": false,
"displayName": "chatInput",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sessionId",
"type": "string",
"display": true,
"required": false,
"displayName": "sessionId",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "e1175f51-e7d2-4be1-9271-9566078fc034",
"name": "Extract Content",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
380,
0
],
"parameters": {
"text": "={{ $json.output }}",
"options": {
"systemPromptTemplate": "=CRITICAL: Begin your response directly with an opening curly bracket.\n\nDO NOT begin your response with ```json, backticks, code blocks or any preamble or indication that you are about to return code.\n\nONLY return the code itself directly beginning with an opening curly bracket\n\nIMPORTANT: return exactly 10 variations of the text in your given array, exactly as they appear in the user query\n\nUse the kind of text formatting or styling that is typical of the following content type: {{ $('When Executed by Another Workflow').item.json.contentType }}"
},
"schemaType": "fromJson",
"jsonSchemaExample": "[\n {\n\t\"text\": \"caption1\"\n },\n {\n\t\"text\": \"caption2\"\n }\n]"
},
"typeVersion": 1.2
},
{
"id": "cf7b3f39-7f72-48af-9cf9-c7583b339fbe",
"name": "Split Out Content",
"type": "n8n-nodes-base.splitOut",
"position": [
720,
0
],
"parameters": {
"options": {},
"fieldToSplitOut": "output"
},
"typeVersion": 1
},
{
"id": "24ea78e2-f4f1-40ec-8bcd-11862dac89eb",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
0,
0
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "contentType"
},
{
"name": "Poster\u2019s profile description"
},
{
"name": "Tone (e.g., formal, casual, friendly)"
},
{
"name": "Style (e.g., concise, detailed, persuasive)"
},
{
"name": "Topic or Instructions"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "8420b516-c23e-4c3e-a151-3b0a2dae37e3",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
-380
],
"parameters": {
"width": 280,
"height": 580,
"content": "# \ud83d\udcdd User Input Configuration\n\n- Fill in these fields to customize the content generation: \n \u2022 **Content type:** Specify the type of content to generate (e.g., blog post, email newsletter, social media caption) \n \u2022 **Poster\u2019s profile description:** Brief description of the poster or target audience for the content \n \u2022 **Tone (e.g., formal, casual, friendly):** Desired tone of the content \n \u2022 **Style (e.g., concise, detailed, persuasive):** Writing style preferences \n \u2022 **Topic or Instructions:** Describe the main subject or specific instructions for the content\n\n- Clear and accurate inputs help guide the research and writing process effectively.\n"
},
"typeVersion": 1
},
{
"id": "efc808fe-a306-42aa-8443-ce2a17316fd6",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-320
],
"parameters": {
"width": 460,
"height": 260,
"content": "# \ud83d\udd0d Research Agent Usage\n\n- This node calls the [Multi-tool Research Agent subworkflow](https://n8n.io/workflows/5588-multi-tool-research-agent-for-animal-advocacy-with-openrouter-serper-and-open-paws-db/) which: \n \u2022 Performs focused research using Serper and the Open Paws database \n \u2022 Gathers relevant, up-to-date information on the specified topic or organization \n \u2022 Generates the full written content based on the research and user inputs"
},
"typeVersion": 1
},
{
"id": "64d7c2de-de78-4972-912e-23eb03f60409",
"name": "Score Text",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
940,
0
],
"parameters": {
"mode": "each",
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "RyxYPLmF5sWDhC2Z",
"cachedResultName": "\u2705 \ud83e\udde9 \ud83d\udcda Score Text"
},
"workflowInputs": {
"value": {
"text": "={{ $json.text }}"
},
"schema": [
{
"id": "text",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "text",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"text"
],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "6ae0dbcc-fada-44f3-933e-a0cdabb09da7",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"position": [
1160,
0
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "d386279d-8386-4369-ac91-5f8f8b502899",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
520,
-460
],
"parameters": {
"width": 560,
"height": 400,
"content": "# \ud83d\udcca Text Scoring and Evaluation\n\n- This node calls the [Evaluate Animal Advocacy Text subworkflow](https://n8n.io/workflows/5587-evaluate-animal-advocacy-text-with-hugging-face-open-paws-ai-models/) to: \n \u2022 Analyze each content variation\u2019s effectiveness using Open Paws AI models \n \u2022 Score text based on real-world performance data from social media and email marketing campaigns \n \u2022 Incorporate animal advocates\u2019 rankings on metrics such as: \n - Impact on animal welfare \n - Persuasiveness \n - Emotional resonance \n - Clarity and engagement \n\n- The scoring helps identify the most effective and high-impact content variations for advocacy outreach. \n- Uses Hugging Face models fine-tuned on relevant datasets to predict audience response and optimize messaging.\n"
},
"typeVersion": 1
},
{
"id": "f2d4d944-a334-4041-bea0-a0daa639547b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1140,
-440
],
"parameters": {
"width": 540,
"height": 380,
"content": "# \ud83d\udce6 Final Aggregation & Output\n\n- This node combines the content variations with their corresponding: \n \u2022 Performance scores (based on real-world analytics) \n \u2022 Prediction scores (from Open Paws preference models tuned by animal advocates)\n\n- Designed as a subworkflow output, enabling seamless integration into other n8n flows for: \n \u2022 Automated posting of top-performing content \n \u2022 AI agent decision-making on content selection \n \u2022 Scheduling and managing advocacy campaigns with data-driven messaging \n\n- Empowers users to maximize impact by prioritizing content proven effective and favored by animal advocacy experts.\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "7380fdb5-5d09-4554-b80b-977d3223e0b8",
"connections": {
"Score Text": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Create Content": {
"main": [
[
{
"node": "Extract Content",
"type": "main",
"index": 0
}
]
]
},
"Extract Content": {
"main": [
[
{
"node": "Split Out Content",
"type": "main",
"index": 0
}
]
]
},
"Split Out Content": {
"main": [
[
{
"node": "Score Text",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model2": {
"ai_languageModel": [
[
{
"node": "Extract Content",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Create Content",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
openRouterApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow is ideal for animal advocates, campaign managers, and content creators who want to generate multiple versions of written content—such as blog posts, emails, or social media captions—and identify the most effective and persuasive options using advanced AI scoring…
Source: https://n8n.io/workflows/6485/ — 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.
Wait Redis. Uses manualTrigger, noOp, informationExtractor, lmChatOpenAi. Event-driven trigger; 30 nodes.
ESG analysts, investors, procurement teams, activists and sustainability professionals who need comprehensive, objective assessments of companies' environmental impact and animal welfare policies. Per
Stickynote Executeworkflow. Uses executeWorkflowTrigger, chainLlm, outputParserStructured, lmChatOpenRouter. Event-driven trigger; 12 nodes.
Ehuvg2I1Voyj0U6K My Workflow. Uses executeWorkflowTrigger, chainLlm, outputParserStructured, lmChatOpenRouter. Event-driven trigger; 12 nodes.
Overview: The AI agent identifies: Authorization URI Token URI Audience