AutomationFlowsAI & RAG › Hacker News to Google Docs with Gemini

Hacker News to Google Docs with Gemini

Original n8n title: Extract & Transform Hackernews Data to Google Docs Using Gemini 2.0 Flash

ByRanjan Dailata @ranjancse on n8n.io

This workflow automates the process of scraping the latest discussions from HackerNews, transforming raw threads into human readable content using Google Gemini, and exporting the final content into a well-formatted Google Doc.

Event trigger★★★★☆ complexityAI-powered16 nodesHacker NewsGoogle Gemini ChatGoogle DocsChain LlmHTTP Request
AI & RAG Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Chainllm → HTTP Request 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": "qgOiQsPSKD08eiB3",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Extract Structured Data from HackerNews, Export to Google Docs with Google Gemini",
  "tags": [
    {
      "id": "Kujft2FOjmOVQAmJ",
      "name": "Engineering",
      "createdAt": "2025-04-09T01:31:00.558Z",
      "updatedAt": "2025-04-09T01:31:00.558Z"
    },
    {
      "id": "ZOwtAMLepQaGW76t",
      "name": "Building Blocks",
      "createdAt": "2025-04-13T15:23:40.462Z",
      "updatedAt": "2025-04-13T15:23:40.462Z"
    },
    {
      "id": "ddPkw7Hg5dZhQu2w",
      "name": "AI",
      "createdAt": "2025-04-13T05:38:08.053Z",
      "updatedAt": "2025-04-13T05:38:08.053Z"
    }
  ],
  "nodes": [
    {
      "id": "2f6e390d-47d2-46c0-b032-00e1541a8def",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -380,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "da17296e-a0b0-423f-8f6a-6636f77ff79e",
      "name": "Hacker News",
      "type": "n8n-nodes-base.hackerNews",
      "position": [
        60,
        0
      ],
      "parameters": {
        "limit": "={{ $json.Count }}",
        "resource": "all",
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "8481d533-2ef1-4e97-afe1-8f182d17b390",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        280,
        0
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "5d88db37-0e3b-4900-af10-78a4f7152231",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        940,
        240
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0fcf5b56-87f8-4dca-9478-7f0753c195e7",
      "name": "Create a Google Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1320,
        20
      ],
      "parameters": {
        "title": "={{ $('Set the url, author').item.json.author }}-HackerNews",
        "folderId": "default"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "2855e7e7-ea99-4acc-901a-54bffa7b3113",
      "name": "Update Google Docs",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1500,
        20
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('Extract Human Readable Data').item.json.text }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ef59d4a1-4176-4702-996d-5a710b432b4b",
      "name": "Set the Input Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -160,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "52ddafbb-536f-45d6-9697-7ddf5b9b3869",
              "name": "Count",
              "type": "string",
              "value": "5"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "aa74a371-94cf-4a0b-93d9-fd503f1abbed",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        200,
        -320
      ],
      "parameters": {
        "content": "## Step 1\n\nSet the input field with the \"Count\", how many record needs to be feteched."
      },
      "typeVersion": 1
    },
    {
      "id": "79674295-f331-4e5b-81d4-09d45aedb883",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        460,
        -320
      ],
      "parameters": {
        "content": "## Step 2\n\nSet the Google Gemini Credentials as part of the human readable data extraction"
      },
      "typeVersion": 1
    },
    {
      "id": "80ed14eb-6ead-46d8-81d0-5502cb5f44db",
      "name": "Extract Human Readable Data",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        980,
        20
      ],
      "parameters": {
        "text": "=Extract a human readable content. \n\nHere's the context :\n\n{{ $json.data }}",
        "batching": {},
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "d922ad6e-0959-465f-810f-3f0e8d8a3626",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -360,
        -400
      ],
      "parameters": {
        "color": 6,
        "width": 540,
        "height": 240,
        "content": "## Extract Structured Data from Hacker News, Export to Google Docs with Google Gemini\n\nHacker news data extraction with Google Gemini. Export the clean data to Google Document."
      },
      "typeVersion": 1
    },
    {
      "id": "79f3eca6-df7d-4e72-816e-b17452f476b5",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        -320
      ],
      "parameters": {
        "content": "## Step 3\n\nSet the Google Document Credentials for the Hacker News data export"
      },
      "typeVersion": 1
    },
    {
      "id": "b3cfee88-735c-4474-b7c0-75511d44e26c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        200,
        -140
      ],
      "parameters": {
        "color": 5,
        "width": 1060,
        "height": 520,
        "content": "## Hacker News Data Extraction"
      },
      "typeVersion": 1
    },
    {
      "id": "36302c89-82a4-4098-9ca6-7822bb4d6c33",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -360,
        -140
      ],
      "parameters": {
        "color": 3,
        "width": 540,
        "height": 120,
        "content": "## LLM Usages\n\nGoogle Gemini -> Gemini 2.0 Flash Exp Model"
      },
      "typeVersion": 1
    },
    {
      "id": "80c3a993-6c82-43c9-9612-e20e989012ef",
      "name": "Set the url, author",
      "type": "n8n-nodes-base.set",
      "position": [
        500,
        20
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "267f21f5-d483-4e74-9773-b1d8a02dd984",
              "name": "author",
              "type": "string",
              "value": "={{ $json.author }}"
            },
            {
              "id": "667a3ffb-a07c-4f66-b253-a7c64b2aa8e0",
              "name": "url",
              "type": "string",
              "value": "={{ $json._highlightResult.url.value }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ad6eb942-17a1-48af-9d41-f728c9127106",
      "name": "Create an HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        20
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {}
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "alwaysOutputData": true
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "640bfa35-72c3-4d4d-8e38-a98fee2248e9",
  "connections": {
    "Hacker News": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Set the url, author",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Google Docs": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a Google Doc": {
      "main": [
        [
          {
            "node": "Update Google Docs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set the url, author": {
      "main": [
        [
          {
            "node": "Create an HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set the Input Fields": {
      "main": [
        [
          {
            "node": "Hacker News",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create an HTTP Request": {
      "main": [
        [
          {
            "node": "Extract Human Readable Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Human Readable Data",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Extract Human Readable Data": {
      "main": [
        [
          {
            "node": "Create a Google Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Set the Input Fields",
            "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.

Pro

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

About this workflow

This workflow automates the process of scraping the latest discussions from HackerNews, transforming raw threads into human readable content using Google Gemini, and exporting the final content into a well-formatted Google Doc.

Source: https://n8n.io/workflows/5677/ — 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 Recap AI - Facebook UGC Video Ad Thief. Uses formTrigger, @mendable/n8n-nodes-firecrawl, chainLlm, httpRequest. Event-driven trigger; 38 nodes.

Form Trigger, @Mendable/N8N Nodes Firecrawl, Chain Llm +5
AI & RAG

This workflow is a content multiplier. Provide a single video topic via a form, and it automatically researches, outlines, and writes two separate scripts: one for a YouTube Shorts and another for a L

Agent, Form Trigger, Google Docs +4
AI & RAG

Learn Anything From Hn - Get Top Resource Recommendations From Hacker News. Uses lmChatGoogleGemini, chainLlm, hackerNews, httpRequest. Event-driven trigger; 10 nodes.

Google Gemini Chat, Chain Llm, Hacker News +3
AI & RAG

Learning something new? Endlessly searching to find the best resources? This workflow finds top community-recommended learning resources on any topic from Hacker News, delivered to your inbox. User su

Google Gemini Chat, Chain Llm, Hacker News +3
AI & RAG

This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.

MongoDB, Chain Llm, Google Gemini Chat +11