AutomationFlowsAI & RAG › Generate AI Research Papers with Claude, Arxiv, Google Scholar and Docx Export

Generate AI Research Papers with Claude, Arxiv, Google Scholar and Docx Export

ByCheng Siong Chin @cschin on n8n.io

This workflow streamlines academic paper development through a multi-agent AI architecture that collects references, drafts individual sections autonomously, compiles the manuscript, and exports a professionally formatted DOCX file. Tailored for researchers, faculty members, and…

Event trigger★★★★★ complexityAI-powered42 nodesForm TriggerHTTP RequestAnthropic ChatTool Serp ApiOutput Parser StructuredAgentAgent Tool
AI & RAG Trigger: Event Nodes: 42 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #13713 — we link there as the canonical source.

This workflow follows the Agent → Agenttool 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 →

Download .json
{
  "id": "HJsFTTxpqMIq7c8OxnI7V",
  "name": "AI research paper generator with multi-agent section writing and export",
  "tags": [],
  "nodes": [
    {
      "id": "1166b3bc-7ddc-42e1-9522-978bbc4d2a3a",
      "name": "Research Paper Input Form",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -816,
        800
      ],
      "parameters": {
        "options": {},
        "formTitle": "Academic Research Paper Generator",
        "formFields": {
          "values": [
            {
              "fieldName": "paperTitle",
              "fieldLabel": "Paper Title"
            },
            {
              "fieldName": "abstract",
              "fieldType": "textarea",
              "fieldLabel": "Abstract"
            },
            {
              "fieldName": "researchKeywords",
              "fieldLabel": "Research Keywords"
            }
          ]
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "527c330a-0922-4f37-ba7c-13b5189abf39",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -592,
        800
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "targetReferences",
              "type": "number",
              "value": 35
            },
            {
              "id": "id-2",
              "name": "arxivSearchUrl",
              "type": "string",
              "value": "http://export.arxiv.org/api/query"
            },
            {
              "id": "id-3",
              "name": "maxTokens",
              "type": "number",
              "value": 8000
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "296aaa86-a30d-4741-bbdc-04a06c084b5f",
      "name": "Search arXiv API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -368,
        800
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.arxivSearchUrl }}",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "search_query",
              "value": "={{ 'all:' + $json.Paper_Title.split(' ').join('+') }}"
            },
            {
              "name": "max_results",
              "value": "={{ $('Workflow Configuration').first().json.targetReferences }}"
            },
            {
              "name": "sortBy",
              "value": "relevance"
            },
            {
              "name": "sortOrder",
              "value": "descending"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "d71df2a1-93ee-497f-b5d2-eec4030b2438",
      "name": "Parse and Format References",
      "type": "n8n-nodes-base.code",
      "position": [
        -144,
        800
      ],
      "parameters": {
        "jsCode": "// Parse arXiv XML response and extract paper metadata\nconst items = $input.all();\nconst results = [];\n\nfor (const item of items) {\n  // Get the XML response from the HTTP Request node\n  const xmlResponse = item.json.body || item.json;\n  \n  // Get original form inputs\n  const paperTitle = item.json.Paper_Title || '';\n  const abstract = item.json.Abstract || '';\n  const researchKeywords = item.json.Research_Keywords || '';\n  \n  // Parse XML to extract entries\n  const entries = [];\n  \n  // Simple XML parsing for arXiv feed entries\n  const entryMatches = xmlResponse.matchAll(/<entry>(.*?)<\\/entry>/gs);\n  \n  for (const match of entryMatches) {\n    const entry = match[1];\n    \n    // Extract title\n    const titleMatch = entry.match(/<title>(.*?)<\\/title>/s);\n    const title = titleMatch ? titleMatch[1].trim().replace(/\\n/g, ' ') : '';\n    \n    // Extract authors\n    const authorMatches = entry.matchAll(/<author>.*?<name>(.*?)<\\/name>.*?<\\/author>/gs);\n    const authors = [];\n    for (const authorMatch of authorMatches) {\n      authors.push(authorMatch[1].trim());\n    }\n    \n    // Extract abstract/summary\n    const summaryMatch = entry.match(/<summary>(.*?)<\\/summary>/s);\n    const abstractText = summaryMatch ? summaryMatch[1].trim().replace(/\\n/g, ' ') : '';\n    \n    // Extract published date\n    const publishedMatch = entry.match(/<published>(.*?)<\\/published>/);\n    const publishedDate = publishedMatch ? publishedMatch[1].trim() : '';\n    const year = publishedDate ? new Date(publishedDate).getFullYear() : '';\n    \n    // Extract arXiv ID from the id field\n    const idMatch = entry.match(/<id>(.*?)<\\/id>/);\n    const arxivUrl = idMatch ? idMatch[1].trim() : '';\n    const arxivIdMatch = arxivUrl.match(/arxiv\\.org\\/abs\\/(.*?)$/);\n    const arxivId = arxivIdMatch ? arxivIdMatch[1] : '';\n    \n    // Create structured reference object\n    entries.push({\n      title: title,\n      authors: authors,\n      year: year,\n      abstract: abstractText,\n      arxivId: arxivId,\n      url: arxivUrl\n    });\n  }\n  \n  // Return formatted output with references and original form data\n  results.push({\n    json: {\n      Paper_Title: paperTitle,\n      Abstract: abstract,\n      Research_Keywords: researchKeywords,\n      references: entries\n    }\n  });\n}\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "2be4b7ff-3c44-48c5-a5cb-5f986d50d8c7",
      "name": "Claude Sonnet Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        80,
        1024
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-5-20250929",
          "cachedResultName": "Claude Sonnet 4.5"
        },
        "options": {
          "temperature": 0.3,
          "maxTokensToSample": 8000
        }
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "425c15b9-5ebc-4cc7-9ebf-fc3a275f0703",
      "name": "Google Scholar Search Tool",
      "type": "@n8n/n8n-nodes-langchain.toolSerpApi",
      "position": [
        208,
        1024
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "9eb9c10b-4233-4f90-ba3d-2412e901927a",
      "name": "Research Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        336,
        1024
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"additionalReferences\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"authors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"year\":{\"type\":\"string\"},\"source\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"relevance\":{\"type\":\"string\"}}}},\"totalReferencesFound\":{\"type\":\"number\"}},\"required\":[\"additionalReferences\",\"totalReferencesFound\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "6379bf73-79c9-4e23-8ac4-c53fc09fd055",
      "name": "Research Gathering Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        136,
        800
      ],
      "parameters": {
        "text": "={{ 'Research topic: ' + $json.Paper_Title + '\\n\\nAbstract: ' + $json.Abstract + '\\n\\nKeywords: ' + $json.Research_Keywords + '\\n\\nExisting references from arXiv: ' + JSON.stringify($json.references) }}",
        "options": {
          "systemMessage": "You are a research assistant specialized in academic literature search and citation management.\n\nYour task is to:\n1. Use the Google Scholar Search Tool to find additional relevant scholarly sources beyond the arXiv papers provided\n2. Search for papers from IEEE Xplore, ACM Digital Library, and other academic databases\n3. Aim to identify approximately 35 total high-quality references (including the arXiv papers already provided)\n4. For each additional source found, extract: title, authors, publication year, source/venue, URL, and brief relevance note\n5. Prioritize recent publications (last 5-10 years) and highly-cited works\n6. Ensure diversity of sources across different research perspectives\n\nReturn structured data with all additional references found."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "43b612bf-6c62-415a-b248-0dd22965ddb7",
      "name": "Claude Model for Writing Agents",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        688,
        1056
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-5-20250929",
          "cachedResultName": "Claude Sonnet 4.5"
        },
        "options": {
          "temperature": 0.4,
          "maxTokensToSample": 8000
        }
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "50764b38-f462-43ff-a66b-c41ffe580ef1",
      "name": "Introduction Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        832,
        1056
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Introduction section content with in-text citations\"},\"citations\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"content\",\"citations\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "bfb32768-029a-4bd7-a51d-f9db6ce23778",
      "name": "Introduction Writer Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        672,
        848
      ],
      "parameters": {
        "text": "={{ 'Paper title: ' + $fromAI('paperTitle', 'The research paper title', 'string') + '\\n\\nAbstract: ' + $fromAI('abstract', 'The paper abstract', 'string') + '\\n\\nAvailable references: ' + $fromAI('references', 'All collected references for citation', 'json') }}",
        "options": {
          "systemMessage": "You are an expert academic writer specializing in Introduction sections.\n\nYour task is to:\n1. Write a comprehensive Introduction section (800-1200 words) for the research paper\n2. Establish the research context and motivation\n3. Clearly state the research problem and objectives\n4. Highlight the significance and contributions of the work\n5. Provide a brief overview of the paper structure\n6. Include accurate in-text citations in APA format (Author, Year) from the provided references\n7. Ensure originality - write in your own words, do not copy from sources\n8. Use formal academic language and maintain logical flow\n\nReturn the Introduction content with proper citations."
        },
        "hasOutputParser": true,
        "toolDescription": "Writes the Introduction section with proper academic structure and citations"
      },
      "typeVersion": 3
    },
    {
      "id": "515979f9-2fa4-4d64-a994-3b57072236cd",
      "name": "Claude Model for Related Work",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        960,
        1056
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "claude-sonnet-4-5-20250929"
        },
        "options": {
          "temperature": 0.4,
          "maxTokensToSample": 8000
        }
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "7f209370-9c39-4e76-b6db-a0293cc00837",
      "name": "Related Work Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1120,
        1056
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Related Work section content with in-text citations\"},\"citations\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"content\",\"citations\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "13ee8998-b21e-463e-a5c1-139c28ce7fc7",
      "name": "Related Work Writer Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        960,
        848
      ],
      "parameters": {
        "text": "={{ 'Paper title: ' + $fromAI('paperTitle', 'The research paper title', 'string') + '\\n\\nAbstract: ' + $fromAI('abstract', 'The paper abstract', 'string') + '\\n\\nAvailable references: ' + $fromAI('references', 'All collected references for citation', 'json') }}",
        "options": {
          "systemMessage": "You are an expert academic writer specializing in Related Work sections.\n\nYour task is to:\n1. Write a comprehensive Related Work section (1500-2000 words) for the research paper\n2. Organize literature into thematic categories or chronological progression\n3. Critically analyze and compare existing approaches\n4. Identify gaps in current research that this work addresses\n5. Position the current work within the broader research landscape\n6. Include accurate in-text citations in APA format (Author, Year) from the provided references\n7. Ensure originality - synthesize information, do not copy from sources\n8. Use formal academic language and maintain critical perspective\n\nReturn the Related Work content with proper citations."
        },
        "hasOutputParser": true,
        "toolDescription": "Writes the Related Work section with critical analysis and comprehensive citations"
      },
      "typeVersion": 3
    },
    {
      "id": "a4d97b24-efef-487a-8fb9-a4e638ddb076",
      "name": "Claude Model for Methodology",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        1248,
        1056
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-5-20250929",
          "cachedResultName": "Claude Sonnet 4.5"
        },
        "options": {
          "temperature": 0.4,
          "maxTokensToSample": 8000
        }
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "b282cc10-4061-4699-bbfe-0967c2940ef5",
      "name": "Methodology Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1408,
        1056
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"content\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Methodology section content with in-text citations\"\n\t\t},\n\t\t\"citations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t},\n\t\"required\": [\"content\", \"citations\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "b7280a2d-81ff-491b-90c7-db936b994476",
      "name": "Methodology Writer Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1248,
        848
      ],
      "parameters": {
        "text": "={{ 'Paper title: ' + $fromAI('paperTitle', 'The research paper title', 'string') + '\n\nAbstract: ' + $fromAI('abstract', 'The paper abstract', 'string') + '\n\nAvailable references: ' + $fromAI('references', 'All collected references for citation', 'json') }}",
        "options": {
          "systemMessage": "You are an expert academic writer specializing in Methodology sections.\n\nYour task is to:\n1. Write a detailed Methodology section (1200-1500 words) for the research paper\n2. Describe the research design and approach\n3. Explain data collection methods and procedures\n4. Detail analysis techniques and tools used\n5. Justify methodological choices with citations to established practices\n6. Include accurate in-text citations in APA format (Author, Year) from the provided references\n7. Ensure reproducibility - provide sufficient detail for replication\n8. Use formal academic language and maintain clarity\n\nReturn the Methodology content with proper citations."
        },
        "hasOutputParser": true,
        "toolDescription": "Writes the Methodology section with detailed procedures and justifications"
      },
      "typeVersion": 3
    },
    {
      "id": "83465ad9-5472-4cdc-9518-7c113a640d78",
      "name": "Claude Model for Results",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        1536,
        1056
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-5-20250929",
          "cachedResultName": "Claude Sonnet 4.5"
        },
        "options": {
          "temperature": 0.4,
          "maxTokensToSample": 8000
        }
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "88ffe587-370f-4bc7-868f-91c260aa64c3",
      "name": "Results Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1696,
        1056
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Results section content with in-text citations\"},\"citations\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"content\",\"citations\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "13ddff3f-11dc-4a42-82ef-6829dd10d6ae",
      "name": "Results Writer Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1536,
        848
      ],
      "parameters": {
        "text": "={{ 'Paper title: ' + $fromAI('paperTitle', 'The research paper title', 'string') + '\\n\\nAbstract: ' + $fromAI('abstract', 'The paper abstract', 'string') + '\\n\\nAvailable references: ' + $fromAI('references', 'All collected references for citation', 'json') }}",
        "options": {
          "systemMessage": "You are an expert academic writer specializing in Results sections.\n\nYour task is to:\n1. Write a comprehensive Results section (1000-1500 words) for the research paper\n2. Present findings objectively and systematically\n3. Organize results logically (by research question, theme, or chronology)\n4. Reference tables, figures, and statistical analyses (describe them textually)\n5. Highlight key findings without interpretation (save for Discussion)\n6. Include accurate in-text citations in APA format (Author, Year) when comparing to prior work\n7. Ensure clarity and precision in reporting\n8. Use formal academic language\n\nReturn the Results content with proper citations."
        },
        "hasOutputParser": true,
        "toolDescription": "Writes the Results section with objective presentation of findings"
      },
      "typeVersion": 3
    },
    {
      "id": "42f1267a-ba38-4afc-99e2-513da5e0580a",
      "name": "Claude Model for Discussion",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        1824,
        1056
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "claude-sonnet-4-5-20250929"
        },
        "options": {
          "temperature": 0.4,
          "maxTokensToSample": 8000
        }
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "856b03b3-3591-42a1-80c5-02a059693fb1",
      "name": "Discussion Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1984,
        1056
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"content\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Discussion section content with in-text citations\"\n\t\t},\n\t\t\"citations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t},\n\t\"required\": [\"content\", \"citations\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "c05eb678-882d-4737-be80-284b6beeee92",
      "name": "Discussion Writer Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1824,
        848
      ],
      "parameters": {
        "text": "={{ 'Paper title: ' + $fromAI('paperTitle', 'The research paper title', 'string') + '\n\nAbstract: ' + $fromAI('abstract', 'The paper abstract', 'string') + '\n\nAvailable references: ' + $fromAI('references', 'All collected references for citation', 'json') }}",
        "options": {
          "systemMessage": "You are an expert academic writer specializing in Discussion sections.\n\nYour task is to:\n1. Write a comprehensive Discussion section (1200-1500 words) for the research paper\n2. Interpret the results and explain their significance\n3. Compare findings with existing literature (with citations)\n4. Discuss implications for theory and practice\n5. Address limitations of the study\n6. Suggest directions for future research\n7. Include accurate in-text citations in APA format (Author, Year) from the provided references\n8. Ensure critical analysis and thoughtful interpretation\n9. Use formal academic language\n\nReturn the Discussion content with proper citations."
        },
        "hasOutputParser": true,
        "toolDescription": "Writes the Discussion section with interpretation and critical analysis"
      },
      "typeVersion": 3
    },
    {
      "id": "5b72a581-0502-43b6-abee-453a40f2052a",
      "name": "Claude Model for Conclusion",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        2112,
        1056
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-5-20250929",
          "cachedResultName": "Claude Sonnet 4.5"
        },
        "options": {
          "temperature": 0.4,
          "maxTokensToSample": 8000
        }
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "2c0bee9c-e52b-44df-bf05-de7cab89e52e",
      "name": "Conclusion Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2256,
        1056
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Conclusion section content with in-text citations\"},\"citations\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"content\",\"citations\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "dd072e25-7309-4b24-94cd-17c919008744",
      "name": "Conclusion Writer Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        2112,
        848
      ],
      "parameters": {
        "text": "={{ 'Paper title: ' + $fromAI('paperTitle', 'The research paper title', 'string') + '\\n\\nAbstract: ' + $fromAI('abstract', 'The paper abstract', 'string') + '\\n\\nAvailable references: ' + $fromAI('references', 'All collected references for citation', 'json') }}",
        "options": {
          "systemMessage": "You are an expert academic writer specializing in Conclusion sections.\n\nYour task is to:\n1. Write a concise Conclusion section (600-800 words) for the research paper\n2. Summarize the main findings and contributions\n3. Restate the significance of the work\n4. Highlight practical and theoretical implications\n5. Provide final thoughts on future research directions\n6. Include minimal citations (only if essential)\n7. Ensure the conclusion provides closure without introducing new information\n8. Use formal academic language\n\nReturn the Conclusion content with proper citations if needed."
        },
        "hasOutputParser": true,
        "toolDescription": "Writes the Conclusion section summarizing contributions and implications"
      },
      "typeVersion": 3
    },
    {
      "id": "ab821986-85f0-42f0-8b59-94d2a3a1a068",
      "name": "Claude Model for Orchestrator",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        544,
        848
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-5-20250929",
          "cachedResultName": "Claude Sonnet 4.5"
        },
        "options": {
          "temperature": 0.2,
          "maxTokensToSample": 8000
        }
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "06a2d3cb-1f80-4cfa-8efe-8a0a8f9b6490",
      "name": "Orchestrator Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2400,
        848
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"paperTitle\":{\"type\":\"string\"},\"abstract\":{\"type\":\"string\"},\"introduction\":{\"type\":\"string\"},\"relatedWork\":{\"type\":\"string\"},\"methodology\":{\"type\":\"string\"},\"results\":{\"type\":\"string\"},\"discussion\":{\"type\":\"string\"},\"conclusion\":{\"type\":\"string\"}},\"required\":[\"paperTitle\",\"abstract\",\"introduction\",\"relatedWork\",\"methodology\",\"results\",\"discussion\",\"conclusion\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "597dcd7f-d94f-4d3f-9315-215957659a1c",
      "name": "Paper Orchestrator Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1400,
        624
      ],
      "parameters": {
        "text": "={{ 'Paper title: ' + $json.Paper_Title + '\\n\\nAbstract: ' + $json.Abstract + '\\n\\nAll collected references: ' + JSON.stringify($json) }}",
        "options": {
          "systemMessage": "You are a research paper orchestrator coordinating specialized AI writing agents.\n\nYour task is to:\n1. Call the Introduction Writer Agent Tool to generate the Introduction section\n2. Call the Related Work Writer Agent Tool to generate the Related Work section\n3. Call the Methodology Writer Agent Tool to generate the Methodology section\n4. Call the Results Writer Agent Tool to generate the Results section\n5. Call the Discussion Writer Agent Tool to generate the Discussion section\n6. Call the Conclusion Writer Agent Tool to generate the Conclusion section\n7. Pass the paper title, abstract, and all collected references to each agent\n8. Ensure consistency across all sections\n9. Return a complete structured paper with all sections\n\nCoordinate the agents to produce a cohesive, publication-ready academic paper."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "43c44ec8-8c60-49f2-a722-da3a0a658f1e",
      "name": "Assemble Paper Sections",
      "type": "n8n-nodes-base.code",
      "position": [
        2608,
        624
      ],
      "parameters": {
        "jsCode": "// Assemble all paper sections from the orchestrator output\nconst items = $input.all();\n\n// Extract the agent output from the first item\nconst agentOutput = items[0].json;\n\n// Extract all sections from the agent output\nconst paperTitle = agentOutput.paperTitle || 'Untitled Research Paper';\nconst abstract = agentOutput.abstract || '';\nconst introduction = agentOutput.introduction || '';\nconst relatedWork = agentOutput.relatedWork || '';\nconst methodology = agentOutput.methodology || '';\nconst results = agentOutput.results || '';\nconst discussion = agentOutput.discussion || '';\nconst conclusion = agentOutput.conclusion || '';\n\n// Combine sections into a single structured document with proper headings\nconst paperContent = `${paperTitle}\n\n` +\n  `Abstract\\n${abstract}\\n\\n` +\n  `1. Introduction\\n${introduction}\\n\\n` +\n  `2. Related Work\\n${relatedWork}\\n\\n` +\n  `3. Methodology\\n${methodology}\\n\\n` +\n  `4. Results\\n${results}\\n\\n` +\n  `5. Discussion\\n${discussion}\\n\\n` +\n  `6. Conclusion\\n${conclusion}`;\n\n// Return assembled paper content\nreturn [\n  {\n    json: {\n      paperContent: paperContent,\n      paperTitle: paperTitle,\n      sections: {\n        abstract: abstract,\n        introduction: introduction,\n        relatedWork: relatedWork,\n        methodology: methodology,\n        results: results,\n        discussion: discussion,\n        conclusion: conclusion\n      }\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "280e9ece-b06f-4b47-93e1-a9df3a8644a3",
      "name": "Generate Bibliography",
      "type": "n8n-nodes-base.code",
      "position": [
        2608,
        976
      ],
      "parameters": {
        "jsCode": "// Generate formatted bibliography from all collected references\n// Combine arXiv references and additional references from research agent\n// Format each reference in APA style with authors, year, title, source, and URL\n// Sort references alphabetically by first author's last name\n\nconst references = [];\n\n// Process all input items to collect references\nfor (const item of $input.all()) {\n  // Check for arXiv references\n  if (item.json.arxiv_references && Array.isArray(item.json.arxiv_references)) {\n    references.push(...item.json.arxiv_references);\n  }\n  \n  // Check for additional references from research agent\n  if (item.json.references && Array.isArray(item.json.references)) {\n    references.push(...item.json.references);\n  }\n  \n  // Check for individual reference fields\n  if (item.json.reference) {\n    references.push(item.json.reference);\n  }\n}\n\n// Function to format a single reference in APA style\nfunction formatAPAReference(ref) {\n  let formatted = '';\n  \n  // Format authors\n  if (ref.authors && Array.isArray(ref.authors) && ref.authors.length > 0) {\n    if (ref.authors.length === 1) {\n      formatted += ref.authors[0];\n    } else if (ref.authors.length === 2) {\n      formatted += `${ref.authors[0]}, & ${ref.authors[1]}`;\n    } else {\n      const lastAuthor = ref.authors[ref.authors.length - 1];\n      const otherAuthors = ref.authors.slice(0, -1).join(', ');\n      formatted += `${otherAuthors}, & ${lastAuthor}`;\n    }\n  } else if (ref.author) {\n    formatted += ref.author;\n  }\n  \n  // Add year\n  if (ref.year) {\n    formatted += ` (${ref.year}).`;\n  } else if (ref.published) {\n    const year = new Date(ref.published).getFullYear();\n    formatted += ` (${year}).`;\n  } else {\n    formatted += ' (n.d.).';\n  }\n  \n  // Add title\n  if (ref.title) {\n    formatted += ` ${ref.title}.`;\n  }\n  \n  // Add source/journal\n  if (ref.source) {\n    formatted += ` ${ref.source}.`;\n  } else if (ref.journal) {\n    formatted += ` ${ref.journal}.`;\n  } else if (ref.arxiv_id) {\n    formatted += ` arXiv preprint arXiv:${ref.arxiv_id}.`;\n  }\n  \n  // Add URL\n  if (ref.url) {\n    formatted += ` Retrieved from ${ref.url}`;\n  } else if (ref.arxiv_id) {\n    formatted += ` Retrieved from https://arxiv.org/abs/${ref.arxiv_id}`;\n  }\n  \n  return formatted;\n}\n\n// Function to extract first author's last name for sorting\nfunction getFirstAuthorLastName(ref) {\n  let firstAuthor = '';\n  \n  if (ref.authors && Array.isArray(ref.authors) && ref.authors.length > 0) {\n    firstAuthor = ref.authors[0];\n  } else if (ref.author) {\n    firstAuthor = ref.author;\n  }\n  \n  // Extract last name (assuming format \"Last, F.\" or \"First Last\")\n  if (firstAuthor.includes(',')) {\n    return firstAuthor.split(',')[0].trim().toLowerCase();\n  } else {\n    const parts = firstAuthor.trim().split(' ');\n    return parts[parts.length - 1].toLowerCase();\n  }\n}\n\n// Remove duplicates based on title\nconst uniqueReferences = [];\nconst seenTitles = new Set();\n\nfor (const ref of references) {\n  const title = (ref.title || '').toLowerCase().trim();\n  if (title && !seenTitles.has(title)) {\n    seenTitles.add(title);\n    uniqueReferences.push(ref);\n  }\n}\n\n// Sort references alphabetically by first author's last name\nuniqueReferences.sort((a, b) => {\n  const nameA = getFirstAuthorLastName(a);\n  const nameB = getFirstAuthorLastName(b);\n  return nameA.localeCompare(nameB);\n});\n\n// Format all references\nconst formattedReferences = uniqueReferences.map(ref => formatAPAReference(ref));\n\n// Create bibliography text\nconst bibliography = formattedReferences.join('\\n\\n');\n\n// Return the formatted bibliography\nreturn [{\n  json: {\n    bibliography: bibliography,\n    reference_count: formattedReferences.length,\n    references: formattedReferences\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "afdde557-023a-452b-ba39-f010400420a2",
      "name": "Combine Paper and Bibliography",
      "type": "n8n-nodes-base.merge",
      "position": [
        2832,
        800
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "8299b80d-a705-4c82-9afa-0e4b2ccb5cd3",
      "name": "Format as DOCX Content",
      "type": "n8n-nodes-base.code",
      "position": [
        3056,
        800
      ],
      "parameters": {
        "jsCode": "// Format complete paper as DOCX-compatible content\n// Combines paper content and bibliography into structured academic format\n\nconst items = $input.all();\n\n// Extract paper content from first input (from Combine Paper and Bibliography node)\nconst paperData = items[0].json;\nconst paperContent = paperData.paperContent || {};\nconst bibliography = paperData.bibliography || '';\n\n// Extract metadata\nconst title = paperContent.title || 'Research Paper';\nconst authors = paperContent.authors || 'Author Name';\nconst affiliation = paperContent.affiliation || 'Institution';\nconst abstractText = paperContent.abstract || '';\nconst keywords = paperContent.keywords || '';\n\n// Extract sections\nconst introduction = paperContent.introduction || '';\nconst relatedWork = paperContent.relatedWork || '';\nconst methodology = paperContent.methodology || '';\nconst results = paperContent.results || '';\nconst discussion = paperContent.discussion || '';\nconst conclusion = paperContent.conclusion || '';\n\n// Build formatted DOCX content with proper academic structure\nlet docxContent = '';\n\n// Title Page\ndocxContent += `${title}\\n\\n`;\ndocxContent += `${authors}\\n`;\ndocxContent += `${affiliation}\\n\\n`;\ndocxContent += `---\\n\\n`;\n\n// Abstract\nif (abstractText) {\n  docxContent += `ABSTRACT\\n\\n`;\n  docxContent += `${abstractText}\\n\\n`;\n}\n\n// Keywords\nif (keywords) {\n  docxContent += `Keywords: ${keywords}\\n\\n`;\n}\n\ndocxContent += `---\\n\\n`;\n\n// Main Sections\nif (introduction) {\n  docxContent += `1. INTRODUCTION\\n\\n`;\n  docxContent += `${introduction}\\n\\n`;\n}\n\nif (relatedWork) {\n  docxContent += `2. RELATED WORK\\n\\n`;\n  docxContent += `${relatedWork}\\n\\n`;\n}\n\nif (methodology) {\n  docxContent += `3. METHODOLOGY\\n\\n`;\n  docxContent += `${methodology}\\n\\n`;\n}\n\nif (results) {\n  docxContent += `4. RESULTS\\n\\n`;\n  docxContent += `${results}\\n\\n`;\n}\n\nif (discussion) {\n  docxContent += `5. DISCUSSION\\n\\n`;\n  docxContent += `${discussion}\\n\\n`;\n}\n\nif (conclusion) {\n  docxContent += `6. CONCLUSION\\n\\n`;\n  docxContent += `${conclusion}\\n\\n`;\n}\n\n// References/Bibliography\nif (bibliography) {\n  docxContent += `---\\n\\n`;\n  docxContent += `REFERENCES\\n\\n`;\n  docxContent += `${bibliography}\\n`;\n}\n\n// Return formatted content\nreturn [\n  {\n    json: {\n      docxContent: docxContent,\n      title: title,\n      authors: authors,\n      sections: {\n        introduction: !!introduction,\n        relatedWork: !!relatedWork,\n        methodology: !!methodology,\n        results: !!results,\n        discussion: !!discussion,\n        conclusion: !!conclusion\n      },\n      hasBibliography: !!bibliography,\n      contentLength: docxContent.length\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "20dd753b-8ddd-4b7b-a580-8a2cdd1ff2da",
      "name": "Generate DOCX File",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        3280,
        800
      ],
      "parameters": {
        "options": {
          "fileName": "={{ $json.paperTitle.replace(/[^a-z0-9]/gi, '_') + '_Research_Paper.docx' }}"
        },
        "operation": "toBinary",
        "sourceProperty": "docxContent"
      },
      "typeVersion": 1.1
    },
    {
      "id": "8bc801f6-3f7e-4ddf-99b1-1b91b3ff4a83",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        144
      ],
      "parameters": {
        "color": 6,
        "width": 496,
        "height": 336,
        "content": "## Prerequisites\n- Google Scholar API or search tool access\n- Google Docs Script or DOCX generation service\n## Use Cases\n- Automated first-draft generation for academic journal submissions\n## Customization\n- Swap Claude for OpenAI GPT-4 or NVIDIA NIM across writing agents\n## Benefits\n- Generates complete, structured research papers fully automatically"
      },
      "typeVersion": 1
    },
    {
      "id": "5e9606f5-f1c6-4d8d-bf6b-b31bb80abd22",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        240
      ],
      "parameters": {
        "width": 576,
        "height": 224,
        "content": "## Setup Steps\n1. Configure Research Paper Input node with topic, keywords, and paper parameters.\n2. Add Anthropic (Claude) API credentials to all Claude Model nodes.\n3. Set up Google Scholar Search Tool credentials or API key for literature retrieval.\n4. Connect Google Docs Script node with service account for DOCX generation.\n5. Configure workflow output path for DOCX file download or Drive storage."
      },
      "typeVersion": 1
    },
    {
      "id": "762a0f33-461a-4fe7-bb58-2c5b1155bb78",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        240
      ],
      "parameters": {
        "width": 784,
        "height": 240,
        "content": "## How It Works\nThis workflow streamlines academic paper development through a multi-agent AI architecture that collects references, drafts individual sections autonomously, compiles the manuscript, and exports a professionally formatted DOCX file. Tailored for researchers, faculty members, and postgraduate students, it reduces the effort required to plan, write, and format scholarly articles from the ground up. Upon receiving a paper title and abstract, the system initiates web-based literature retrieval and reference extraction, handled by a Research Agent leveraging tools such as Google Scholar. A central Orchestration Agent then coordinates six dedicated writing agents, covering the Introduction, Related Work, Methodology, Results, Discussion, and Conclusion. The generated sections are consolidated with an automatically formatted bibliography, converted into a DOCX document via a document automation script, and prepared for download."
      },
      "typeVersion": 1
    },
    {
      "id": "3faf6fb5-2989-4300-bcd5-5d967f4c0d94",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -896,
        608
      ],
      "parameters": {
        "color": 7,
        "width": 880,
        "height": 496,
        "content": "## Research Input & Web Search with Formatting\n**What** \u2013 Accepts paper topic and searches for sources via API and Google Scholar.\n**Why** \u2013 Grounds the paper in real, relevant academic references from the outset."
      },
      "typeVersion": 1
    },
    {
      "id": "5477d6e9-80a6-4e05-bd3f-3483d4ff0389",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        544
      ],
      "parameters": {
        "color": 7,
        "width": 2016,
        "height": 224,
        "content": "## Paper Orchestration Agent\n**What** \u2013 Delegates writing tasks to six specialist section agents in parallel.\n**Why** \u2013 Maximises efficiency by generating all sections simultaneously."
      },
      "typeVersion": 1
    },
    {
      "id": "2811b806-56b4-4643-be31-607289c69070",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        608
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 624,
        "content": "## Research Gathering Agent\n**What** \u2013 Consolidates research outputs using Claude as the base model.\n**Why** \u2013 Provides a unified knowledge context before section writing begins."
      },
      "typeVersion": 1
    },
    {
      "id": "aa00dd3c-25e3-4ce0-8638-db7f2ab23d7b",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        800
      ],
      "parameters": {
        "color": 7,
        "width": 2016,
        "height": 784,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Section Writing Agents\n**What** \u2013 Each agent writes its assigned section\u2014Introduction through Conclusion.\n**Why** \u2013 Specialist prompting per section ensures appropriate depth and academic tone."
      },
      "typeVersion": 1
    },
    {
      "id": "ddc6610b-bdbb-4280-bb7c-b2a0fb254df6",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2576,
        512
      ],
      "parameters": {
        "color": 7,
        "width": 912,
        "height": 880,
        "content": "## Assemble, Bibliography & DOCX Export\n**What** \u2013 Merges sections, generates bibliography, and exports formatted DOCX.\n**Why** \u2013 Delivers a complete, submission-ready document without manual formatting."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "5f7b1976-d778-4041-b279-97d73341a7d7",
  "connections": {
    "Search arXiv API": {
      "main": [
        [
          {
            "node": "Parse and Format References",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude Sonnet Model": {
      "ai_languageModel": [
        [
          {
            "node": "Research Gathering Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate Bibliography": {
      "main": [
        [
          {
            "node": "Combine Paper and Bibliography",
            "type": "main",
            "index": 0
          },
          {
            "node": "Combine Paper and Bibliography",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Results Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Results Writer Agent Tool",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Format as DOCX Content": {
      "main": [
        [
          {
            "node": "Generate DOCX File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Research Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Research Gathering Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Search arXiv API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Assemble Paper Sections": {
      "main": [
        [
          {
            "node": "Combine Paper and Bibliography",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude Model for Results": {
      "ai_languageModel": [
        [
          {
            "node": "Results Writer Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Conclusion Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Conclusion Writer Agent Tool",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Discussion Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Discussion Writer Agent Tool",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Paper Orchestrator Agent": {
      "main": [
        [
          {
            "node": "Assemble Paper Sections",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Research Gathering Agent": {
      "main": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate Bibliography",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Methodology Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Methodology Writer Agent Tool",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Research Paper Input Form": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Results Writer Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Google Scholar Search Tool": {
      "ai_tool": [
        [
          {
            "node": "Research Gathering Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Introduction Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Introduction Writer Agent Tool",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Orchestrator Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Related Work Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Related Work Writer Agent Tool",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Claude Model for Conclusion": {
      "ai_languageModel": [
        [
          {
            "node": "Conclusion Writer Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Claude Model for Discussion": {
      "ai_languageModel": [
        [
          {
            "node": "Discussion Writer Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Parse and Format References": {
      "main": [
        [
          {
            "node": "Research Gathering Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude Model for Methodology": {
      "ai_languageModel": [
        [
          {
            "node": "Methodology Writer Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Conclusion Writer Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Discussion Writer Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Claude Model for Orchestrator": {
      "ai_languageModel": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Claude Model for Related Work": {
      "ai_languageModel": [
        [
          {
            "node": "Related Work Writer Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Methodology Writer Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Combine Paper and Bibliography": {
      "main": [
        [
          {
            "node": "Format as DOCX Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Introduction Writer Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Related Work Writer Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Paper Orchestrator Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Claude Model for Writing Agents": {
      "ai_languageModel": [
        [
          {
            "node": "Introduction Writer Agent Tool",
            "type": "ai_languageModel",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow streamlines academic paper development through a multi-agent AI architecture that collects references, drafts individual sections autonomously, compiles the manuscript, and exports a professionally formatted DOCX file. Tailored for researchers, faculty members, and…

Source: https://n8n.io/workflows/13713/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, C

Perplexity Tool, Memory Buffer Window, Agent +15
AI & RAG

This workflow is designed for marketers, founders, agencies, and product teams who want to understand how real customers talk about a product category, market, or problem space.

Reddit, Agent, Output Parser Structured +3
AI & RAG

🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.

Output Parser Structured, HTTP Request, OpenAI +10
AI & RAG

This workflow is designed for marketers, founders, agencies, and content teams who want to generate static ad creatives faster from minimal brand input.

HTTP Request, Output Parser Structured, Google Drive +3
AI & RAG

Creators, agencies, and marketers who need short-form vertical video at scale. Anyone who wants to turn a topic into an edited “talking shorts” style clip without opening a video editor.

Anthropic Chat, OpenAI Chat, Output Parser Structured +4