Created
March 1, 2026 14:02
-
-
Save nunawa/29f97477d5036b3d56f9e48d3ecbb201 to your computer and use it in GitHub Desktop.
RSSフィードから海外のテック記事を収集し、AIで選定・翻訳・要約するためのn8nワークフロー
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "name": "RSSフィードから海外のテック記事を収集し、AIで選定・翻訳・要約する", | |
| "nodes": [ | |
| { | |
| "parameters": { | |
| "content": "## 1. 記事をQdrantに保存", | |
| "height": 80, | |
| "width": 488, | |
| "color": 7 | |
| }, | |
| "id": "4eea1ad9-16c0-425a-99f5-2ba2f59efaac", | |
| "name": "Sticky Note1", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| -2064, | |
| 144 | |
| ], | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "parameters": { | |
| "content": "## 2. 記事の要約を作成し、デプロイを開始", | |
| "height": 80, | |
| "width": 500, | |
| "color": 7 | |
| }, | |
| "id": "ea83c928-c15f-4b1c-b3ed-71a8cf1b3128", | |
| "name": "Sticky Note2", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| -2064, | |
| 1040 | |
| ], | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "b8c00469-890b-4b5b-8e2e-2ad9ec2d0815", | |
| "name": "rss", | |
| "type": "array", | |
| "value": "=[\n \"https://www.upvote-rss.com/?platform=hacker-news&community=beststories&score=100&content=&view=rss\",\n \"https://www.upvote-rss.com/?platform=lobsters&community=all&type=all&score=20&content=0&summary=&comments=3&filterOldPosts=3&view=rss\",\n \"https://rss.slashdot.org/Slashdot/slashdotMain\",\n \"https://cprss.s3.amazonaws.com/javascriptweekly.com.xml\",\n \"https://simonwillison.net/atom/entries/\",\n \"https://feeds.feedburner.com/ThePragmaticEngineer\",\n \"https://martinfowler.com/feed.atom\",\n \"https://lethain.com/feeds.xml\",\n \"https://jvns.ca/atom.xml\",\n \"https://feed.infoq.com/\",\n \"https://techcrunch.com/feed/\",\n \"https://feeds.arstechnica.com/arstechnica/technology-lab\",\n \"https://www.cnet.com/rss/news/\",\n \"https://www.theverge.com/rss/index.xml\",\n \"https://www.theregister.com/headlines.atom\",\n \"https://wccftech.com/feed/\",\n \"https://www.404media.co/rss/\",\n \"https://spectrum.ieee.org/customfeeds/feed/all-topics/rss\"\n]" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "id": "84adb2a2-ff90-4ea4-a6ab-45998004a2f4", | |
| "name": "テック系ニュースのRSSフィードをセット", | |
| "type": "n8n-nodes-base.set", | |
| "position": [ | |
| -1792, | |
| 352 | |
| ], | |
| "typeVersion": 3.4 | |
| }, | |
| { | |
| "parameters": { | |
| "fieldToSplitOut": "rss", | |
| "options": {} | |
| }, | |
| "id": "605215fe-eb9e-4ada-a6f2-6b193b248ac1", | |
| "name": "リストを分割", | |
| "type": "n8n-nodes-base.splitOut", | |
| "position": [ | |
| -1568, | |
| 352 | |
| ], | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "parameters": { | |
| "url": "={{ $json.rss }}", | |
| "options": { | |
| "ignoreSSL": false | |
| } | |
| }, | |
| "id": "f4960ca4-bb54-4fc7-9d1a-ead081932f74", | |
| "name": "RSSフィードを読み取り", | |
| "type": "n8n-nodes-base.rssFeedRead", | |
| "position": [ | |
| -1344, | |
| 352 | |
| ], | |
| "typeVersion": 1.1, | |
| "retryOnFail": true, | |
| "waitBetweenTries": 1000, | |
| "onError": "continueRegularOutput" | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "e9f27ceb-c5f2-4997-8cb1-67576a7bb337", | |
| "name": "title", | |
| "type": "string", | |
| "value": "={{ $json.title }}" | |
| }, | |
| { | |
| "id": "4c4f9417-40f2-4fb0-9976-d09f5984680f", | |
| "name": "content", | |
| "type": "string", | |
| "value": "={{ ($json['content:encodedSnippet'] ?? $json.contentSnippet ?? $json.summary ?? \"\").removeTags().substring(0, 10000) }}" | |
| }, | |
| { | |
| "id": "e1986bac-054e-4240-ba50-536dbcd27337", | |
| "name": "date", | |
| "type": "string", | |
| "value": "={{ $json.isoDate }}" | |
| }, | |
| { | |
| "id": "9566e23c-ac30-4d66-abbd-889f322688b7", | |
| "name": "link", | |
| "type": "string", | |
| "value": "={{ $json.link }}" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "id": "ee2fd5d1-1f8d-41c0-8b38-6cbca7f2a117", | |
| "name": "フィールドを正規化", | |
| "type": "n8n-nodes-base.set", | |
| "position": [ | |
| -1120, | |
| 352 | |
| ], | |
| "typeVersion": 3.4 | |
| }, | |
| { | |
| "parameters": { | |
| "conditions": { | |
| "options": { | |
| "caseSensitive": true, | |
| "leftValue": "", | |
| "typeValidation": "strict", | |
| "version": 2 | |
| }, | |
| "conditions": [ | |
| { | |
| "id": "46b51c57-d854-46c5-b8b5-b0893848c680", | |
| "leftValue": "={{ $json.title }}", | |
| "rightValue": "", | |
| "operator": { | |
| "type": "string", | |
| "operation": "exists", | |
| "singleValue": true | |
| } | |
| }, | |
| { | |
| "id": "28a39a92-78fc-47b1-8303-9ef07a6fb358", | |
| "leftValue": "={{ $json.content }}", | |
| "rightValue": "", | |
| "operator": { | |
| "type": "string", | |
| "operation": "exists", | |
| "singleValue": true | |
| } | |
| }, | |
| { | |
| "id": "d468b613-2b0f-46ad-982b-9392a843ec37", | |
| "leftValue": "={{ $json.date }}", | |
| "rightValue": "", | |
| "operator": { | |
| "type": "string", | |
| "operation": "exists", | |
| "singleValue": true | |
| } | |
| }, | |
| { | |
| "id": "68d8a202-6269-49e0-bac0-316c8090ecc9", | |
| "leftValue": "={{ $json.link }}", | |
| "rightValue": "", | |
| "operator": { | |
| "type": "string", | |
| "operation": "exists", | |
| "singleValue": true | |
| } | |
| } | |
| ], | |
| "combinator": "and" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.filter", | |
| "typeVersion": 2.2, | |
| "position": [ | |
| -896, | |
| 352 | |
| ], | |
| "id": "eda78476-5146-471d-bb42-67ca08c6d343", | |
| "name": "値が存在しているフィールドのみ抽出" | |
| }, | |
| { | |
| "parameters": { | |
| "resource": "collection", | |
| "operation": "collectionExists" | |
| }, | |
| "type": "n8n-nodes-qdrant.qdrant", | |
| "typeVersion": 1, | |
| "position": [ | |
| -672, | |
| 352 | |
| ], | |
| "id": "505b1bbe-9393-4577-8cdd-9bfc68e19edc", | |
| "name": "QdrantのCollectionを作成済みか確認", | |
| "credentials": {} | |
| }, | |
| { | |
| "parameters": { | |
| "conditions": { | |
| "options": { | |
| "caseSensitive": true, | |
| "leftValue": "", | |
| "typeValidation": "strict", | |
| "version": 2 | |
| }, | |
| "conditions": [ | |
| { | |
| "id": "e57bbfd0-e980-4a6f-b0a2-4ca4f78fde77", | |
| "leftValue": "={{ $json.result.exists }}", | |
| "rightValue": "", | |
| "operator": { | |
| "type": "boolean", | |
| "operation": "true", | |
| "singleValue": true | |
| } | |
| } | |
| ], | |
| "combinator": "and" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.if", | |
| "typeVersion": 2.2, | |
| "position": [ | |
| -448, | |
| 352 | |
| ], | |
| "id": "d15a5339-0697-435d-945a-5e9b33e63534", | |
| "name": "もしQdrantのCollectionを作成済みなら", | |
| "alwaysOutputData": false | |
| }, | |
| { | |
| "parameters": { | |
| "batchSize": "=1", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.splitInBatches", | |
| "typeVersion": 3, | |
| "position": [ | |
| -224, | |
| 192 | |
| ], | |
| "id": "9d365942-9531-40cc-bc82-7341b9bd1559", | |
| "name": "記事ごとにループ" | |
| }, | |
| { | |
| "parameters": { | |
| "mode": "insert", | |
| "qdrantCollection": { | |
| "__rl": true, | |
| "mode": "id", | |
| "value": "n8n_tech_articles" | |
| }, | |
| "embeddingBatchSize": 100, | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant", | |
| "typeVersion": 1.3, | |
| "position": [ | |
| 1056, | |
| 192 | |
| ], | |
| "id": "eb121821-da7a-47b7-b8f7-e3efbe263760", | |
| "name": "記事をベクトル化してQdrantに保存" | |
| }, | |
| { | |
| "parameters": { | |
| "conditions": { | |
| "options": { | |
| "caseSensitive": true, | |
| "leftValue": "", | |
| "typeValidation": "strict", | |
| "version": 2 | |
| }, | |
| "conditions": [ | |
| { | |
| "id": "ee60b4ce-cd93-41f2-92ce-72c2c92871f5", | |
| "leftValue": "={{ $json.is_duplicated }}", | |
| "rightValue": "", | |
| "operator": { | |
| "type": "boolean", | |
| "operation": "false", | |
| "singleValue": true | |
| } | |
| } | |
| ], | |
| "combinator": "and" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.filter", | |
| "typeVersion": 2.2, | |
| "position": [ | |
| 0, | |
| 0 | |
| ], | |
| "id": "b096c6e9-93ff-4f9b-8697-8fe5d0596f40", | |
| "name": "重複しているものを除外" | |
| }, | |
| { | |
| "parameters": { | |
| "conditions": { | |
| "options": { | |
| "caseSensitive": true, | |
| "leftValue": "", | |
| "typeValidation": "strict", | |
| "version": 2 | |
| }, | |
| "conditions": [ | |
| { | |
| "id": "3a5e5687-25fd-4605-9ac7-97562b418856", | |
| "leftValue": "={{ $json.result.points }}", | |
| "rightValue": "", | |
| "operator": { | |
| "type": "array", | |
| "operation": "empty", | |
| "singleValue": true | |
| } | |
| } | |
| ], | |
| "combinator": "and" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.if", | |
| "typeVersion": 2.2, | |
| "position": [ | |
| 368, | |
| 208 | |
| ], | |
| "id": "47a68450-e762-4edd-9e74-5e11941b8ab2", | |
| "name": "もし検索結果が空なら" | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "6d431b52-4dd7-4eec-b2ab-dd688b54c4cb", | |
| "name": "is_duplicated", | |
| "value": false, | |
| "type": "boolean" | |
| }, | |
| { | |
| "id": "053bf433-4b45-4d95-a844-aa9a3b38c331", | |
| "name": "title", | |
| "value": "={{ $('フィールドを正規化').item.json.title }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "eadb65e9-f3a1-4f8e-aa31-1a1a20f73d00", | |
| "name": "content", | |
| "value": "={{ $('フィールドを正規化').item.json.content }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "aad9c824-9ae3-438e-add4-36e1b204545e", | |
| "name": "date", | |
| "value": "={{ $('フィールドを正規化').item.json.date }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "8d9ebf11-fc62-4eea-8437-89075d740864", | |
| "name": "link", | |
| "value": "={{ $('フィールドを正規化').item.json.link }}", | |
| "type": "string" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.set", | |
| "typeVersion": 3.4, | |
| "position": [ | |
| 720, | |
| 192 | |
| ], | |
| "id": "cb09767f-6242-4472-b5ff-869f166e6e54", | |
| "name": "重複フラグをtrueに設定" | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "728a1c51-400a-45f1-801f-789aca354fc2", | |
| "name": "is_duplicated", | |
| "value": true, | |
| "type": "boolean" | |
| }, | |
| { | |
| "id": "684dc413-cb68-41c6-9f16-151ec8f010c9", | |
| "name": "title", | |
| "value": "={{ $('フィールドを正規化').item.json.title }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "68e27f97-5cb9-49ea-b835-f5d63beb38f6", | |
| "name": "content", | |
| "value": "={{ $('フィールドを正規化').item.json.content }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "dbddd725-88e2-438c-b6de-0d7810eaa35b", | |
| "name": "date", | |
| "value": "={{ $('フィールドを正規化').item.json.date }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "98d6a925-c458-4302-a75a-b779dc929d5c", | |
| "name": "link", | |
| "value": "={{ $('フィールドを正規化').item.json.link }}", | |
| "type": "string" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.set", | |
| "typeVersion": 3.4, | |
| "position": [ | |
| 720, | |
| 384 | |
| ], | |
| "id": "6aae086e-9098-4df9-ac1d-0729bc258215", | |
| "name": "重複フラグをfalseに設定" | |
| }, | |
| { | |
| "parameters": { | |
| "jsonMode": "expressionData", | |
| "jsonData": "=# {{ $json.title }}\n{{ $json.content }}", | |
| "options": { | |
| "metadata": { | |
| "metadataValues": [ | |
| { | |
| "name": "title", | |
| "value": "={{ $json.title }}" | |
| }, | |
| { | |
| "name": "publishDate", | |
| "value": "={{ $json.date }}" | |
| }, | |
| { | |
| "name": "link", | |
| "value": "={{ $json.link }}" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "id": "fca107ce-dd4c-458e-b322-e3f39c79831b", | |
| "name": "記事をチャンク化", | |
| "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", | |
| "position": [ | |
| 1152, | |
| 416 | |
| ], | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "parameters": { | |
| "chunkSize": 2500, | |
| "chunkOverlap": 375, | |
| "options": {} | |
| }, | |
| "id": "4336d8da-df4f-4cc7-a501-73d945cfff4c", | |
| "name": "再帰的に文章を分割", | |
| "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter", | |
| "position": [ | |
| 1232, | |
| 624 | |
| ], | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "parameters": { | |
| "model": "qwen3-embedding:0.6b" | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.embeddingsOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| 1024, | |
| 416 | |
| ], | |
| "id": "d11c1d0b-7c3a-4ea2-9e7a-b5d18af5a526", | |
| "name": "Ollama埋め込みモデル1" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "qwen3-embedding:0.6b" | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.embeddingsOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| -1040, | |
| 1568 | |
| ], | |
| "id": "b442157e-d9ca-4af9-b852-6ead06f57475", | |
| "name": "Ollama埋め込みモデル2" | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "018882ca-37c3-45af-944f-2081b0605065", | |
| "name": "Interests", | |
| "type": "array", | |
| "value": "[\"AI\", \"LLM\", \"PC building\", \"Gadgets\", \"Linux\", \"Python\", \"TypeScript\"]" | |
| }, | |
| { | |
| "id": "4cfdafc1-47a4-41cc-9eb8-72880ea34511", | |
| "name": "Number of news items to include", | |
| "type": "string", | |
| "value": "10" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "id": "c4c601e3-afa2-4ca1-9586-76c7565160bb", | |
| "name": "興味のある話題と出力する記事の数を設定", | |
| "type": "n8n-nodes-base.set", | |
| "position": [ | |
| -1792, | |
| 1248 | |
| ], | |
| "typeVersion": 3.4 | |
| }, | |
| { | |
| "parameters": { | |
| "jsCode": "let result = []\n\nfor (const x of $input.first().json.Interests) {\n result.push(({\"interest\": x}))\n}\n\nreturn result\n" | |
| }, | |
| "type": "n8n-nodes-base.code", | |
| "typeVersion": 2, | |
| "position": [ | |
| -1568, | |
| 1248 | |
| ], | |
| "id": "eeafef35-de32-4ac8-bff6-d664eac006d5", | |
| "name": "JavaScriptで興味リストをフォーマット" | |
| }, | |
| { | |
| "parameters": { | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.splitInBatches", | |
| "typeVersion": 3, | |
| "position": [ | |
| -1344, | |
| 1248 | |
| ], | |
| "id": "3a7fa6c5-04cc-42f9-8462-3125b40846f4", | |
| "name": "興味ごとにループ" | |
| }, | |
| { | |
| "parameters": { | |
| "mode": "load", | |
| "qdrantCollection": { | |
| "__rl": true, | |
| "value": "n8n_tech_articles", | |
| "mode": "id" | |
| }, | |
| "prompt": "={{ $json.interest }}", | |
| "topK": 10, | |
| "options": { | |
| "searchFilterJson": "={\n \"must\": [\n {\n \"key\": \"metadata.publishDate\",\n \"range\": {\n \"gt\": null,\n \"gte\": \"{{ $now.minus(14, \"days\").toUTC().toString() }}\",\n \"lt\": null,\n \"lte\": \"{{ $now.toUTC().toString() }}\"\n }\n }\n ]\n}" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant", | |
| "typeVersion": 1.3, | |
| "position": [ | |
| -1120, | |
| 1344 | |
| ], | |
| "id": "bffa4bff-2a82-486d-8ab7-7e57980e6ef5", | |
| "name": "Qdrantで興味に近い記事を検索" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "qwen/qwen3-235b-a22b-thinking-2507", | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter", | |
| "typeVersion": 1, | |
| "position": [ | |
| -400, | |
| 1488 | |
| ], | |
| "id": "3769c8ef-c430-4962-bd11-40fb15c045aa", | |
| "name": "OpenRouterチャットモデル1", | |
| "retryOnFail": false, | |
| "waitBetweenTries": 3000 | |
| }, | |
| { | |
| "parameters": { | |
| "model": "deepseek/deepseek-r1-0528:free", | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter", | |
| "typeVersion": 1, | |
| "position": [ | |
| -464, | |
| 1280 | |
| ], | |
| "id": "b581fa16-6080-45db-9be6-dd32ec12fca2", | |
| "name": "OpenRouterチャットモデル2" | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "d082ada8-de92-4857-9c30-e062a252fba3", | |
| "name": "article.title", | |
| "value": "={{ $json.document.metadata.title }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "b627ca31-e6b4-4cd3-95af-d98846f7f981", | |
| "name": "article.link", | |
| "value": "={{ $json.document.metadata.link }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "f03ed28f-6be3-441d-a13b-8e750abe8309", | |
| "name": "article.publishDate", | |
| "value": "={{ $json.document.metadata.publishDate }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "fd7df136-054a-40f2-97fd-0f3eb83ca141", | |
| "name": "article.pageContent", | |
| "value": "={{ $json.document.pageContent }}", | |
| "type": "string" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.set", | |
| "typeVersion": 3.4, | |
| "position": [ | |
| -1056, | |
| 1056 | |
| ], | |
| "id": "ffe822a0-a2cd-4d27-aefa-400cab1c60ce", | |
| "name": "フィールドを再設定2" | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "43641bd4-444e-408d-9f7a-5e6bdab931c1", | |
| "name": "title", | |
| "value": "={{ $('値が存在しているフィールドのみ抽出').item.json.title }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "6ea03c7d-24c1-48de-8684-dcbcc3bc22f9", | |
| "name": "content", | |
| "value": "={{ $('値が存在しているフィールドのみ抽出').item.json.content }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "96c16c7a-49e3-4f33-84a1-afa9b42e54f3", | |
| "name": "date", | |
| "value": "={{ $('値が存在しているフィールドのみ抽出').item.json.date }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "f8624ed8-d45a-4e1b-983f-2a5b7f1c5c9e", | |
| "name": "link", | |
| "value": "={{ $('値が存在しているフィールドのみ抽出').item.json.link }}", | |
| "type": "string" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.set", | |
| "typeVersion": 3.4, | |
| "position": [ | |
| 0, | |
| 624 | |
| ], | |
| "id": "89d95af3-0616-4606-9c0e-963713ffd953", | |
| "name": "フィールドを再設定1", | |
| "notes": "Default Data LoaderがPrevius nodeを見に行くのでFieldsをセットしなおす" | |
| }, | |
| { | |
| "parameters": { | |
| "fieldsToAggregate": { | |
| "fieldToAggregate": [ | |
| { | |
| "fieldToAggregate": "article", | |
| "renameField": true, | |
| "outputFieldName": "articles" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.aggregate", | |
| "typeVersion": 1, | |
| "position": [ | |
| -768, | |
| 1056 | |
| ], | |
| "id": "2ff01506-8757-422f-8571-808c748079bf", | |
| "name": "記事を集約" | |
| }, | |
| { | |
| "parameters": { | |
| "schemaType": "manual", | |
| "inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"articles\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"link\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"publishDate\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"content\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"link\",\n \"publishDate\",\n \"content\"\n ]\n }\n }\n },\n \"required\": [\n \"articles\"\n ]\n}", | |
| "autoFix": true | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.outputParserStructured", | |
| "typeVersion": 1.3, | |
| "position": [ | |
| -336, | |
| 1280 | |
| ], | |
| "id": "3fcf4092-0dfe-4f82-aaeb-6a6815ced4b0", | |
| "name": "Structured Outputパーサー" | |
| }, | |
| { | |
| "parameters": { | |
| "conditions": { | |
| "options": { | |
| "caseSensitive": true, | |
| "leftValue": "", | |
| "typeValidation": "strict", | |
| "version": 3 | |
| }, | |
| "conditions": [ | |
| { | |
| "id": "971f383c-c181-4574-9732-cb41a730e429", | |
| "leftValue": "={{ $json.output.articles.map(article => article.link).join() }}", | |
| "rightValue": "example.com", | |
| "operator": { | |
| "type": "string", | |
| "operation": "contains" | |
| } | |
| }, | |
| { | |
| "id": "ee9af3e7-d7bf-40fa-9244-261a97db3f89", | |
| "leftValue": "={{ $json.output.articles.length }}", | |
| "rightValue": "={{ $('興味のある話題と出力する記事の数を設定').item.json['Number of news items to include'].toNumber() }}", | |
| "operator": { | |
| "type": "number", | |
| "operation": "lt" | |
| } | |
| } | |
| ], | |
| "combinator": "or" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.if", | |
| "typeVersion": 2.3, | |
| "position": [ | |
| 32, | |
| 1056 | |
| ], | |
| "id": "2d9b7ab5-ec88-4939-b167-3b415505094a", | |
| "name": "もし出力がハルシネーションしているなら" | |
| }, | |
| { | |
| "parameters": { | |
| "errorMessage": "出力がハルシネーションしている可能性があります" | |
| }, | |
| "type": "n8n-nodes-base.stopAndError", | |
| "typeVersion": 1, | |
| "position": [ | |
| 256, | |
| 960 | |
| ], | |
| "id": "5a28b57c-64c4-4de4-888a-24f8ae57142e", | |
| "name": "実行を失敗させる" | |
| }, | |
| { | |
| "parameters": { | |
| "promptType": "define", | |
| "text": "=Topics of interest: {{ $('興味のある話題と出力する記事の数を設定').item.json.Interests }}\n\nSelect from the following articles.\n\n---\n\n{{ $json.articles.toJsonString() }}\n", | |
| "hasOutputParser": true, | |
| "needsFallback": true, | |
| "messages": { | |
| "messageValues": [ | |
| { | |
| "message": "=You are a technical news curator for Software engineers. Select and summarize articles in Japanese based on the user's interests.\n\n## Article Selection Criteria\n\nSelect the top {{ $('興味のある話題と出力する記事の数を設定').item.json['Number of news items to include'] }} articles. Prioritize in this order:\n\n1. **Recency**: Published within the last 7 days from {{ $now.format(\"yyyy-MM-dd\") }}\n2. **Actionability**: Practical content engineers can apply immediately — new tools, tutorials, best practices, or working code examples\n3. **Impact**: Industry-wide significance — major product releases, critical vulnerabilities, or paradigm shifts\n4. **Depth**: Articles reflecting real hands-on experience or deep expertise; exclude thin content, listicles without substance, or purely promotional material\n5. **Diversity**: Avoid selecting multiple articles on the same specific topic\n\n## Output Rules\n\nFor each selected article:\n\n- `title`: Translate the original title into natural Japanese\n- `link`: Copy the original URL exactly — do NOT modify or fabricate\n- `publishDate`: Copy the original date exactly — do NOT alter\n- `content`: Write a 2–3 sentence Japanese summary covering: what it is and the key takeaways or conclusions\n\n**Strict constraints:**\n\n- Use ONLY articles provided in the input; never invent articles\n- Base summaries solely on provided content; no external facts or speculation\n" | |
| } | |
| ] | |
| }, | |
| "batching": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.chainLlm", | |
| "typeVersion": 1.7, | |
| "position": [ | |
| -544, | |
| 1056 | |
| ], | |
| "id": "acc71211-e297-48e4-afe2-664ad33c9c85", | |
| "name": "LLMで記事を選定・翻訳・要約", | |
| "retryOnFail": true, | |
| "waitBetweenTries": 5000 | |
| }, | |
| { | |
| "parameters": { | |
| "operation": "upload", | |
| "bucketName": "technews-feed", | |
| "fileName": "feed.json", | |
| "binaryData": false, | |
| "fileContent": "={{ $json.output.toJsonString() }}", | |
| "additionalFields": {} | |
| }, | |
| "type": "n8n-nodes-base.s3", | |
| "typeVersion": 1, | |
| "position": [ | |
| 256, | |
| 1152 | |
| ], | |
| "id": "1a6a41b0-a850-4392-a793-012f71a38a8d", | |
| "name": "S3互換ストレージにJSONをアップロード" | |
| }, | |
| { | |
| "parameters": { | |
| "operation": "copy", | |
| "sourcePath": "/technews-feed/feed.json", | |
| "destinationPath": "=/technews-feed/archive/feed-{{ $now.format('yyyy-MM-dd') }}.json", | |
| "additionalFields": {} | |
| }, | |
| "type": "n8n-nodes-base.s3", | |
| "typeVersion": 1, | |
| "position": [ | |
| 480, | |
| 1152 | |
| ], | |
| "id": "6ef9c950-d198-4b1e-a03e-4661ac743bf8", | |
| "name": "archiveフォルダにJSONをコピー" | |
| }, | |
| { | |
| "parameters": { | |
| "method": "POST", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.httpRequest", | |
| "typeVersion": 4.3, | |
| "position": [ | |
| 928, | |
| 1152 | |
| ], | |
| "id": "c8dd24d4-cb30-451b-95d4-510757e37bda", | |
| "name": "Cloudflare PagesのDeploy Hookを叩く" | |
| }, | |
| { | |
| "parameters": { | |
| "resource": "collection", | |
| "operation": "deleteCollection" | |
| }, | |
| "type": "n8n-nodes-qdrant.qdrant", | |
| "typeVersion": 1, | |
| "position": [ | |
| 704, | |
| 1152 | |
| ], | |
| "id": "d2c7f5cc-dfa2-48a7-bfa2-efb24bcc1274", | |
| "name": "QdrantのCollectionを削除", | |
| "credentials": {} | |
| }, | |
| { | |
| "parameters": { | |
| "resource": "point", | |
| "operation": "scrollPoints" | |
| }, | |
| "type": "n8n-nodes-qdrant.qdrant", | |
| "typeVersion": 1, | |
| "position": [ | |
| 0, | |
| 208 | |
| ], | |
| "id": "f6e90a4f-01bc-49c0-88e5-cfbb37ffbe91", | |
| "name": "Qdrantで同じURLの記事を検索", | |
| "alwaysOutputData": false, | |
| "credentials": {} | |
| }, | |
| { | |
| "parameters": { | |
| "path": "c2f41cfa-c277-45b0-accb-7ae7c2c2f28b", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.webhook", | |
| "typeVersion": 2.1, | |
| "position": [ | |
| -2016, | |
| 352 | |
| ], | |
| "id": "571f96cd-01f2-424c-9636-c6a8e06db375", | |
| "name": "収集用Webhookトリガー", | |
| "webhookId": "c2f41cfa-c277-45b0-accb-7ae7c2c2f28b" | |
| }, | |
| { | |
| "parameters": { | |
| "path": "7454ecd2-cc7c-457d-91b4-655605e8a879", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.webhook", | |
| "typeVersion": 2.1, | |
| "position": [ | |
| -2016, | |
| 1248 | |
| ], | |
| "id": "08125531-86b6-4d33-a0f5-5d7547958b60", | |
| "name": "要約用Webhookトリガー", | |
| "webhookId": "7454ecd2-cc7c-457d-91b4-655605e8a879" | |
| } | |
| ], | |
| "pinData": {}, | |
| "connections": { | |
| "テック系ニュースのRSSフィードをセット": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "リストを分割", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "リストを分割": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "RSSフィードを読み取り", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "RSSフィードを読み取り": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "フィールドを正規化", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "フィールドを正規化": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "値が存在しているフィールドのみ抽出", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "値が存在しているフィールドのみ抽出": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "QdrantのCollectionを作成済みか確認", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "QdrantのCollectionを作成済みか確認": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "もしQdrantのCollectionを作成済みなら", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "もしQdrantのCollectionを作成済みなら": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "記事ごとにループ", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ], | |
| [ | |
| { | |
| "node": "フィールドを再設定1", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "記事ごとにループ": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "重複しているものを除外", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ], | |
| [ | |
| { | |
| "node": "Qdrantで同じURLの記事を検索", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "重複しているものを除外": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "記事をベクトル化してQdrantに保存", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "もし検索結果が空なら": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "重複フラグをtrueに設定", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ], | |
| [ | |
| { | |
| "node": "重複フラグをfalseに設定", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "重複フラグをtrueに設定": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "記事ごとにループ", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "重複フラグをfalseに設定": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "記事ごとにループ", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "記事をチャンク化": { | |
| "ai_document": [ | |
| [ | |
| { | |
| "node": "記事をベクトル化してQdrantに保存", | |
| "type": "ai_document", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "再帰的に文章を分割": { | |
| "ai_textSplitter": [ | |
| [ | |
| { | |
| "node": "記事をチャンク化", | |
| "type": "ai_textSplitter", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Ollama埋め込みモデル1": { | |
| "ai_embedding": [ | |
| [ | |
| { | |
| "node": "記事をベクトル化してQdrantに保存", | |
| "type": "ai_embedding", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Ollama埋め込みモデル2": { | |
| "ai_embedding": [ | |
| [ | |
| { | |
| "node": "Qdrantで興味に近い記事を検索", | |
| "type": "ai_embedding", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "興味のある話題と出力する記事の数を設定": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "JavaScriptで興味リストをフォーマット", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "JavaScriptで興味リストをフォーマット": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "興味ごとにループ", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "興味ごとにループ": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "フィールドを再設定2", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ], | |
| [ | |
| { | |
| "node": "Qdrantで興味に近い記事を検索", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Qdrantで興味に近い記事を検索": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "興味ごとにループ", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "OpenRouterチャットモデル1": { | |
| "ai_languageModel": [ | |
| [ | |
| { | |
| "node": "LLMで記事を選定・翻訳・要約", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| }, | |
| { | |
| "node": "Structured Outputパーサー", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "OpenRouterチャットモデル2": { | |
| "ai_languageModel": [ | |
| [ | |
| { | |
| "node": "LLMで記事を選定・翻訳・要約", | |
| "type": "ai_languageModel", | |
| "index": 1 | |
| } | |
| ] | |
| ] | |
| }, | |
| "フィールドを再設定2": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "記事を集約", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "フィールドを再設定1": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "記事をベクトル化してQdrantに保存", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "記事を集約": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "LLMで記事を選定・翻訳・要約", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Structured Outputパーサー": { | |
| "ai_outputParser": [ | |
| [ | |
| { | |
| "node": "LLMで記事を選定・翻訳・要約", | |
| "type": "ai_outputParser", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "もし出力がハルシネーションしているなら": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "実行を失敗させる", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ], | |
| [ | |
| { | |
| "node": "S3互換ストレージにJSONをアップロード", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "LLMで記事を選定・翻訳・要約": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "もし出力がハルシネーションしているなら", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "S3互換ストレージにJSONをアップロード": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "archiveフォルダにJSONをコピー", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "archiveフォルダにJSONをコピー": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "QdrantのCollectionを削除", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "QdrantのCollectionを削除": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Cloudflare PagesのDeploy Hookを叩く", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Qdrantで同じURLの記事を検索": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "もし検索結果が空なら", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "収集用Webhookトリガー": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "テック系ニュースのRSSフィードをセット", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "要約用Webhookトリガー": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "興味のある話題と出力する記事の数を設定", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| } | |
| }, | |
| "active": false, | |
| "settings": { | |
| "executionOrder": "v1", | |
| "binaryMode": "separate", | |
| "availableInMCP": false | |
| }, | |
| "versionId": "d54cff1f-86ea-4b92-9f8a-8999b4b184b0", | |
| "meta": { | |
| "instanceId": "4b4255fcbdfddf89d2c8e40ac72451a561f538d8f8d11193bcd53083c785fbb0" | |
| }, | |
| "id": "RFAA946wO5Yod3wo", | |
| "tags": [] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment