This workflow corresponds to n8n.io template #7996 — we link there as the canonical source.
This workflow follows the Google Sheets → 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 →
{
"id": "5NjNI3YAZnLdY5c7",
"name": "News Auto Collector \u2192 Google Sheets",
"tags": [],
"nodes": [
{
"id": "9aaf1c30-f25e-4a12-9de8-5fd8b129e707",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"notes": "Runs daily at 13:00. Change schedule here if needed.",
"position": [
-560,
144
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 13
}
]
}
},
"notesInFlow": true,
"typeVersion": 1.2
},
{
"id": "ed496364-3115-46b2-9ef4-b90761a133c3",
"name": "Get rows from sheet",
"type": "n8n-nodes-base.googleSheets",
"notes": "Read keywords from your Google Sheet.\nRequired columns: Keyword, SearchRequired (values: Yes / No).",
"position": [
-336,
144
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "YOUR_INPUT_SHEET_NAME_OR_GID"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_SHEET_ID_HERE"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 4.7
},
{
"id": "ab48f5cb-6d00-4129-b4e6-cb62202b4a68",
"name": "If Search Required",
"type": "n8n-nodes-base.if",
"notes": "Continue only if SearchRequired === Yes.",
"position": [
-112,
144
],
"parameters": {
"options": {},
"conditions": {
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json['SearchRequired'] }}",
"rightValue": "Yes"
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "22d44aea-7fee-4341-9b8c-de5434735c1a",
"name": "HTTP Request (EN)",
"type": "n8n-nodes-base.httpRequest",
"notes": "NewsAPI call (English). Insert your own NewsAPI key in query param `apiKey`.",
"position": [
112,
48
],
"parameters": {
"url": "=https://newsapi.org/v2/everything",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $json['Keyword'] }}"
},
{
"name": "language",
"value": "en"
},
{
"name": "pageSize",
"value": "5"
},
{
"name": "apiKey",
"value": "YOUR_API_KEY_HERE"
}
]
}
},
"notesInFlow": true,
"typeVersion": 4.2
},
{
"id": "68ae47ba-bb06-4fac-b6b8-ce1fec4297a6",
"name": "HTTP Request (JP)",
"type": "n8n-nodes-base.httpRequest",
"notes": "NewsAPI call (Japanese sources). Insert your own NewsAPI key in query param `apiKey`.",
"position": [
112,
240
],
"parameters": {
"url": "=https://newsapi.org/v2/everything",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $json['Keyword'] }}"
},
{
"name": "domains",
"value": "nhk.or.jp,asahi.com,nikkei.com,news.yahoo.co.jp,itmedia.co.jp,impress.co.jp,ascii.jp,prtimes.jp"
},
{
"name": "sortBy",
"value": "publishedAt"
},
{
"name": "pageSize",
"value": "5"
},
{
"name": "apiKey",
"value": "YOUR_API_KEY_HERE"
}
]
}
},
"notesInFlow": true,
"typeVersion": 4.2
},
{
"id": "b68aa0df-1b9f-407c-941e-421039031439",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"height": 300,
"content": "## Collect both English and Japanese news articles"
},
"typeVersion": 1
},
{
"id": "e3fc1ce3-da2d-4555-bffd-cf1010b815d5",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
32
],
"parameters": {
"height": 240,
"content": "## Runs daily at 13:00 (change in Schedule Trigger)"
},
"typeVersion": 1
},
{
"id": "a17355f0-963d-497e-b4a5-99bb8ef9639d",
"name": "Merge Articles",
"type": "n8n-nodes-base.merge",
"notes": "Merge both article streams before summarization.",
"position": [
704,
160
],
"parameters": {},
"notesInFlow": true,
"typeVersion": 3.2
},
{
"id": "92fe30b8-4d8b-4386-9dba-9d76d9415087",
"name": "Summarize with OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"notes": "Connect your own OpenAI credentials. Charges apply to your account.",
"position": [
912,
144
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "You are an editor summarizing news articles into concise Japanese sentences (~50 characters). No opinions, no emojis."
},
{
"content": "=Summarize the following article (~50 characters in Japanese).\nTitle: {{$json[\"title\"]}}\nContent: {{$json[\"description\"] || $json[\"content\"] || \"No content\"}}"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 1.8
},
{
"id": "0b666902-6e4d-4f46-b520-33e1c88ad933",
"name": "Append rows to sheet",
"type": "n8n-nodes-base.googleSheets",
"notes": "Append summarized results to your Google Sheet. Set Spreadsheet ID and output sheet name.",
"position": [
1488,
144
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $('Merge Articles').item.json.url }}",
"Date": "={{ $('HTTP Request (EN)').item.json.articles[0].publishedAt }}",
"Keyword": "={{ $('Get rows from sheet').item.json['Keyword'] }}",
"Summary": "={{ $json.summary }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "YOUR_OUTPUT_SHEET_NAME_OR_GID"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_SHEET_ID_HERE"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 4.7
},
{
"id": "f400b87f-1cfb-4a15-9631-89d585375c3c",
"name": "Split Articles (EN)",
"type": "n8n-nodes-base.code",
"position": [
336,
48
],
"parameters": {
"jsCode": "// Flatten articles array so that 1 item = 1 article\nconst arr = $json.articles ?? [];\nreturn arr.map(a => ({ json: a }));"
},
"typeVersion": 2
},
{
"id": "921fc188-9097-48e0-b4fb-c4f2cd6bd7b6",
"name": "Split Articles (JP)",
"type": "n8n-nodes-base.code",
"position": [
336,
240
],
"parameters": {
"jsCode": "// Flatten articles array so that 1 item = 1 article\nconst arr = $json.articles ?? [];\nreturn arr.map(a => ({ json: a }));"
},
"typeVersion": 2
},
{
"id": "d2b09870-fe3e-4804-bc50-12b633fc55f9",
"name": "Prepare fields",
"type": "n8n-nodes-base.set",
"notes": "Prepare fields (Date, Keyword, Summary, URL) for appending to Google Sheets.",
"position": [
1264,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"name": "summary",
"type": "string",
"value": "={{$json[\"message\"]?.[\"content\"]}}"
},
{
"name": "link",
"type": "string",
"value": "={{$node[\"Merge Articles\"].json[\"url\"]}}"
}
]
},
"includeOtherFields": true
},
"notesInFlow": true,
"typeVersion": 3.4
},
{
"id": "ee847bc9-1489-405a-86f6-7616cbd0b31c",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
336,
0
],
"parameters": {
"height": 240,
"content": "## 1 item = 1 article"
},
"typeVersion": 1
},
{
"id": "c906f8fa-043f-48f8-881b-36a8f5dde4b0",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-752,
336
],
"parameters": {
"height": 200,
"content": "## Set your own Google Sheet (enter Spreadsheet ID & Sheet name)"
},
"typeVersion": 1
},
{
"id": "3155f915-3ccb-43c4-995b-fb46e49ba915",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
336
],
"parameters": {
"width": 192,
"height": 208,
"content": "Prepare your own Google Spreadsheet with the following structure:\n\nSpreadsheet title (example):\n\"News Auto Collector (Demo)\"\n\nTabs:\n- 01_Input\n Columns: \n - Keyword (enter your search term here)\n - SearchRequired (Yes/No)\n Example rows:\n 1 | (e.g. OpenAI) | Yes\n 2 | (e.g. n8n) | No\n\n- 02_Output\n Columns: Date, Keyword, Summary, URL\n (Initially empty, rows will be appended automatically)"
},
"typeVersion": 1
},
{
"id": "7cba26a3-70b4-429d-a164-b89f2d66c0a6",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
400
],
"parameters": {
"content": "## Insert your NewsAPI key here"
},
"typeVersion": 1
},
{
"id": "d3b0b79b-0387-4e5a-81d1-964342358d9a",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
368
],
"parameters": {
"width": 272,
"height": 176,
"content": "## Connect your own OpenAI account here (or deactivate this node if not needed)"
},
"typeVersion": 1
},
{
"id": "340bc3d3-c75f-4f60-bbf1-bdde0a0f5722",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1424,
352
],
"parameters": {
"width": 272,
"content": "## Output sheet must have columns: Date, Keyword, Summary, URL (empty at first)"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "7e465735-af5e-4ee3-acf1-8e61d9418420",
"connections": {
"Merge Articles": {
"main": [
[
{
"node": "Summarize with OpenAI",
"type": "main",
"index": 0
}
]
]
},
"Prepare fields": {
"main": [
[
{
"node": "Append rows to sheet",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get rows from sheet",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request (EN)": {
"main": [
[
{
"node": "Split Articles (EN)",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request (JP)": {
"main": [
[
{
"node": "Split Articles (JP)",
"type": "main",
"index": 0
}
]
]
},
"If Search Required": {
"main": [
[
{
"node": "HTTP Request (EN)",
"type": "main",
"index": 0
},
{
"node": "HTTP Request (JP)",
"type": "main",
"index": 0
}
]
]
},
"Get rows from sheet": {
"main": [
[
{
"node": "If Search Required",
"type": "main",
"index": 0
}
]
]
},
"Split Articles (EN)": {
"main": [
[
{
"node": "Merge Articles",
"type": "main",
"index": 0
}
]
]
},
"Split Articles (JP)": {
"main": [
[
{
"node": "Merge Articles",
"type": "main",
"index": 1
}
]
]
},
"Summarize with OpenAI": {
"main": [
[
{
"node": "Prepare 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.
googleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
How it works This workflow automatically collects the latest news articles from both English and Japanese sources using NewsAPI, summarizes them with OpenAI, and appends the results into a Google Sheet. The summaries are concise (about 50 characters) in Japanese, making it easy…
Source: https://n8n.io/workflows/7996/ — 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 workflow finds potential customers, gathers detailed info about them and their companies, and then uses AI to research them in detail and write personalized messages for LinkedIn and a series of
This workflow automates the creation and publishing of weekly SEO-optimized blog posts using AI and publishes them directly to WordPress — with featured images and tracking in Google Sheets.
Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.
1-Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.
1-Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.