AutomationFlowsData & Sheets › Automate Research Paper Analysis with Google Drive

Automate Research Paper Analysis with Google Drive

Original n8n title: Research Paper Analyzer & Literature Review Assistant

Research Paper Analyzer & Literature Review Assistant. Uses googleDriveTrigger, googleDrive, n8n-nodes-pdfvector, googleSheets. Event-driven trigger; 9 nodes.

Event trigger★★★★☆ complexity9 nodesGoogle Drive TriggerGoogle DriveN8N Nodes PdfvectorGoogle SheetsNotion
Data & Sheets Trigger: Event Nodes: 9 Complexity: ★★★★☆ Added:

This workflow follows the Google Drive → Google Drive Trigger 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
{
  "name": "Research Paper Analyzer & Literature Review Assistant",
  "nodes": [
    {
      "parameters": {
        "content": "## \ud83c\udf93 Research Paper Analyzer\n\n### What this workflow does\n1. Watches Drive for new papers\n2. Pulls out metadata and findings\n3. Searches Semantic Scholar & PubMed\n4. Generates APA citations\n5. Logs to Google Sheets\n6. Creates Notion summary page\n\n### Setup steps\n1. Create \"Research Papers\" folder in Drive\n2. Get PDF Vector API key from pdfvector.com/api-keys\n3. Create Google Sheet with columns below\n4. Create Notion parent page for summaries\n5. Update folder ID, Sheet ID, Notion page ID\n\n### Sheet columns\nTitle, Authors, Year, Journal, DOI, Research Field, Study Type, Sample Size, Keywords, Abstract, Conclusions, Citation, Related Papers Found, File Link, Added Date\n\n### Perfect for\n- PhD students\n- Researchers\n- Literature reviews",
        "height": 480,
        "width": 320,
        "color": 5
      },
      "id": "sticky-main",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        60,
        100
      ]
    },
    {
      "parameters": {
        "content": "## \ud83d\udcda Academic Search\n\n- Semantic Scholar\n- PubMed\n\nFinds up to 10 related papers\nusing keywords from your paper.",
        "height": 160,
        "width": 220
      },
      "id": "sticky-databases",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        820,
        100
      ]
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "value": "YOUR_FOLDER_ID",
          "mode": "list"
        },
        "event": "fileCreated",
        "options": {}
      },
      "id": "gdrive-trigger",
      "name": "Google Drive Trigger",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "typeVersion": 1,
      "position": [
        420,
        320
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $json.id }}",
          "mode": "id"
        },
        "options": {}
      },
      "id": "gdrive-download",
      "name": "Download Paper",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        620,
        320
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "extract",
        "inputType": "file",
        "prompt": "Extract research paper metadata as flat fields. title, authorsList (all authors comma-separated as single string), journal, publicationYear (number), doi, abstract, keywordsList (comma-separated keywords as single string), researchField, studyType (one of: Experimental, Observational, Review, Meta-analysis, Case Study, Qualitative, Mixed Methods, Theoretical), sampleSize (number), methodology, mainFindings (semicolon-separated list of main findings as single string), conclusions, limitations (semicolon-separated list as single string), futureResearch (semicolon-separated list as single string).",
        "schema": "{\"type\": \"object\", \"properties\": {\"title\": {\"type\": \"string\"}, \"authorsList\": {\"type\": \"string\"}, \"journal\": {\"type\": \"string\"}, \"publicationYear\": {\"type\": \"number\"}, \"doi\": {\"type\": \"string\"}, \"abstract\": {\"type\": \"string\"}, \"keywordsList\": {\"type\": \"string\"}, \"researchField\": {\"type\": \"string\"}, \"studyType\": {\"type\": \"string\"}, \"sampleSize\": {\"type\": \"number\"}, \"methodology\": {\"type\": \"string\"}, \"mainFindings\": {\"type\": \"string\"}, \"conclusions\": {\"type\": \"string\"}, \"limitations\": {\"type\": \"string\"}, \"futureResearch\": {\"type\": \"string\"}}, \"additionalProperties\": false}"
      },
      "id": "pdfvector-extract",
      "name": "PDF Vector - Extract Paper Info",
      "type": "n8n-nodes-pdfvector.pdfVector",
      "typeVersion": 2,
      "position": [
        820,
        320
      ],
      "credentials": {
        "pdfVectorApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "academic",
        "operation": "search",
        "query": "={{ $json.data?.keywordsList ? $json.data.keywordsList.split(',').slice(0,3).join(' ') : $json.data?.title?.split(' ').slice(0,5).join(' ') || '' }}",
        "providers": [
          "semantic-scholar"
        ],
        "limit": 10,
        "offset": 0
      },
      "id": "pdfvector-search",
      "name": "PDF Vector - Find Related Papers",
      "type": "n8n-nodes-pdfvector.pdfVector",
      "typeVersion": 2,
      "position": [
        1020,
        320
      ],
      "credentials": {
        "pdfVectorApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const paper = $('PDF Vector - Extract Paper Info').item.json.data || $('PDF Vector - Extract Paper Info').item.json;\nconst relatedPapers = $input.first().json.results || [];\nconst fileName = $('Google Drive Trigger').item.json.name;\n\nconst relatedList = relatedPapers.slice(0, 5).map(p =>\n  `\u2022 ${p.title} (${p.year || 'N/A'}) - ${p.citationCount || 0} citations`\n).join('\\n') || 'No related papers found';\n\nconst citation = `${paper.authorsList || 'Unknown'} (${paper.publicationYear || 'n.d.'}). ${paper.title}. ${paper.journal || 'Unknown Journal'}${paper.doi ? `. https://doi.org/${paper.doi}` : ''}`;\n\nconst abstractShort = paper.abstract && paper.abstract.length > 800\n  ? paper.abstract.substring(0, 800) + '...'\n  : (paper.abstract || '');\n\nconst notionSummary = `Authors: ${paper.authorsList || 'N/A'}\\nYear: ${paper.publicationYear || 'N/A'}\\nJournal: ${paper.journal || 'N/A'}\\n\\n${abstractShort}\\n\\n${paper.conclusions || ''}`;\n\nreturn [{ json: {\n  title:         paper.title         || 'Unknown',\n  authorsList:   paper.authorsList   || 'Unknown',\n  publicationYear: paper.publicationYear || 'N/A',\n  journal:       paper.journal       || 'N/A',\n  doi:           paper.doi           || 'N/A',\n  researchField: paper.researchField || 'N/A',\n  studyType:     paper.studyType     || 'N/A',\n  sampleSize:    paper.sampleSize    || 'N/A',\n  keywordsList:  paper.keywordsList  || 'N/A',\n  abstract:      paper.abstract      || 'N/A',\n  conclusions:   paper.conclusions   || 'N/A',\n  mainFindings:  paper.mainFindings  || 'N/A',\n  relatedPapers: relatedList,\n  relatedCount:  relatedPapers.length,\n  citation,\n  notionSummary,\n  fileName,\n  fileId: $('Google Drive Trigger').item.json.id,\n  processedAt: new Date().toISOString()\n}}];"
      },
      "id": "compile-analysis",
      "name": "Compile Analysis",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1220,
        320
      ]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "YOUR_SPREADSHEET_ID",
          "mode": "list"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Title": "={{ $json.title }}",
            "Authors": "={{ $json.authorsList }}",
            "Year": "={{ $json.publicationYear || 'N/A' }}",
            "Journal": "={{ $json.journal || 'N/A' }}",
            "DOI": "={{ $json.doi || 'N/A' }}",
            "Research Field": "={{ $json.researchField || 'N/A' }}",
            "Study Type": "={{ $json.studyType || 'N/A' }}",
            "Sample Size": "={{ $json.sampleSize || 'N/A' }}",
            "Keywords": "={{ $json.keywordsList }}",
            "Abstract": "={{ $json.abstract }}",
            "Conclusions": "={{ $json.conclusions || 'N/A' }}",
            "Citation": "={{ $json.citation }}",
            "Related Papers Found": "={{ $json.relatedCount }}",
            "File Link": "=https://drive.google.com/file/d/{{ $json.fileId }}/view",
            "Added Date": "={{ $json.processedAt.split('T')[0] }}"
          }
        },
        "options": {}
      },
      "id": "sheets-log",
      "name": "Add to Literature Database",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1420,
        320
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "page",
        "operation": "create",
        "pageId": {
          "__rl": true,
          "value": "YOUR_NOTION_PAGE_ID",
          "mode": "id"
        },
        "title": "={{ $json.title }}",
        "contentUi": {
          "contentValues": [
            {
              "type": "text",
              "text": "={{ $json.notionSummary }}"
            }
          ]
        },
        "options": {}
      },
      "id": "notion-page",
      "name": "Create Notion Summary",
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        1620,
        320
      ],
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Google Drive Trigger": {
      "main": [
        [
          {
            "node": "Download Paper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Paper": {
      "main": [
        [
          {
            "node": "PDF Vector - Extract Paper Info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "PDF Vector - Extract Paper Info": {
      "main": [
        [
          {
            "node": "PDF Vector - Find Related Papers",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "PDF Vector - Find Related Papers": {
      "main": [
        [
          {
            "node": "Compile Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compile Analysis": {
      "main": [
        [
          {
            "node": "Add to Literature Database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add to Literature Database": {
      "main": [
        [
          {
            "node": "Create Notion Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "tags": [
    {
      "name": "PDF Vector"
    },
    {
      "name": "Research"
    },
    {
      "name": "Academic"
    },
    {
      "name": "Notion"
    },
    {
      "name": "Literature Review"
    }
  ],
  "meta": {
    "templateCredsSetupCompleted": false
  }
}

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

Research Paper Analyzer & Literature Review Assistant. Uses googleDriveTrigger, googleDrive, n8n-nodes-pdfvector, googleSheets. Event-driven trigger; 9 nodes.

Source: https://github.com/khanhduyvt0101/workflows/blob/main/n8n-workflows/research-paper-analyzer.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

Automatically process invoices and receipts using Gemini OCR, extracting data directly into Google Sheets from multiple sources including Google Drive, Gmail, and Telegram. This powerful workflow ensu

HTTP Request, Google Sheets, Google Drive +3
Data & Sheets

Drop a contract (PDF, JPG, PNG) into a watched Google Drive folder. easybits Extractor classifies it (SaaS / Lease / Service / Insurance / Other) and pulls every renewal-relevant field in a single cal

@Easybits/N8N Nodes Extractor, Google Sheets, Google Drive Trigger +1
Data & Sheets

Sales and marketing teams seeking efficient, hands‑free generation of personalized slide decks for each prospect from CSV lead lists.

Google Drive, Google Sheets, Google Drive Trigger +1
Data & Sheets

OCR receipts from Google Drive. Uses httpRequest, googleDriveTrigger, googleDrive, googleSheets. Event-driven trigger; 10 nodes.

HTTP Request, Google Drive Trigger, Google Drive +1
Data & Sheets

This workflow allows you to recognize a folder with receipts or invoices (make sure your files are in .pdf, .png, or .jpg format). The workflow can be triggered via the "Test workflow" button, and it

HTTP Request, Google Drive Trigger, Google Drive +1