毎日のテックニュースの概要:RSS、GPT-4o-Mini、そしてGmailの配信

中級

これはMultimodal AI分野の自動化ワークフローで、11個のノードを含みます。主にSet, Code, Gmail, SplitOut, Aggregateなどのノードを使用。 毎日のテックニュースピックアップ:RSS、GPT-4o-Mini、Gmail で配信

前提条件
  • Googleアカウント + Gmail API認証情報
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "7888501fe66f93847229a4fe1e4efd9754bf14b1b98634200b2ff2090b5002a3",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "69394736-5c78-420e-9f03-ac18501cb377",
      "name": "デイリーニュースレットトリガー",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "⏰ Triggers daily at 8 AM UTC\n\nCustomize:\n- Change triggerAtHour (0-23)\n- Add timezone settings\n- Set weekday-only schedule",
      "position": [
        624,
        1040
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 8
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1ee57ce6-d7aa-49d5-bac7-814bde5b0a65",
      "name": "RSSソース設定",
      "type": "n8n-nodes-base.set",
      "notes": "📡 Premium tech news RSS feeds\n\nSources:\n• TechCrunch AI\n• The Verge AI\n• MIT Tech Review\n• Wired AI\n• VentureBeat\n• ZDNet\n• Towards Data Science\n• NY Times Tech\n• Guardian Tech\n• BBC Tech",
      "position": [
        864,
        1040
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "53097a16-a525-4c89-828e-a36c5e0c3742",
              "name": "urls",
              "type": "array",
              "value": "[\n  \"https://techcrunch.com/tag/artificial-intelligence/feed/\",\n  \"https://www.theverge.com/artificial-intelligence/rss/index.xml\",\n  \"https://www.technologyreview.com/feed/\",\n  \"https://www.wired.com/feed/category/science/artificial-intelligence/latest/rss\",\n  \"https://venturebeat.com/category/ai/feed/\",\n  \"https://www.zdnet.com/topic/artificial-intelligence/rss.xml\",\n  \"https://towardsdatascience.com/feed\",\n  \"https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml\",\n  \"https://www.theguardian.com/uk/technology/rss\",\n  \"https://feeds.bbci.co.uk/news/technology/rss.xml\"\n]"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "6477cbf0-790d-41ce-8b45-a273e03c9247",
      "name": "RSS URL分割",
      "type": "n8n-nodes-base.splitOut",
      "notes": "🔄 Splits URL array for parallel processing\n\nCreates individual execution paths\nfor each RSS feed URL",
      "position": [
        1088,
        1040
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "urls"
      },
      "typeVersion": 1
    },
    {
      "id": "37cfed68-0740-4e77-a1ab-827f8f1eec28",
      "name": "RSS記事取得",
      "type": "n8n-nodes-base.rssFeedRead",
      "notes": "📰 Fetches articles from RSS feeds\n\nExtracts:\n• Title\n• Content snippet\n• Article URL\n• Publication date\n\nContinues on errors to prevent\nsingle feed failures",
      "onError": "continueErrorOutput",
      "position": [
        1296,
        1040
      ],
      "parameters": {
        "url": "={{ $json.urls }}",
        "options": {}
      },
      "retryOnFail": false,
      "typeVersion": 1.2
    },
    {
      "id": "d7f56edb-cd31-4a53-b390-e910b7c50ce8",
      "name": "記事フィルタリング",
      "type": "n8n-nodes-base.code",
      "notes": "⚖️ Balances article sources\n\n• Max 5 articles per domain\n• Prevents single-source domination\n• Ensures diverse coverage\n• Groups by domain, then flattens",
      "position": [
        1504,
        1040
      ],
      "parameters": {
        "jsCode": "// Limit articles per domain for balanced coverage\nconst input = $input.all();\nconst grouped = {};\n\nfor (const item of input) {\n  const link = item.json.link;\n  const domainMatch = link.match(/\\/\\/([^\\/]+)/);\n  const domain = domainMatch ? domainMatch[1].replace(/^www\\./, '') : 'unknown';\n\n  if (!grouped[domain]) grouped[domain] = [];\n  if (grouped[domain].length < 5) {\n    grouped[domain].push(item.json);\n  }\n}\n\n// Flatten results\nconst result = [];\nfor (const domain in grouped) {\n  result.push(...grouped[domain]);\n}\n\nreturn result.map(i => ({ json: i }));"
      },
      "typeVersion": 2
    },
    {
      "id": "14562212-87cc-4321-8277-bd8519c1adcf",
      "name": "データクレンジング",
      "type": "n8n-nodes-base.set",
      "notes": "🧹 Standardizes article structure\n\nMaps to clean format:\n• title → headline\n• content → summary\n• link → article URL\n• pubDate → timestamp",
      "position": [
        1712,
        1040
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "568b89e0-be16-4977-8c2a-882563174c9b",
              "name": "title",
              "type": "string",
              "value": "={{ $json.title }}"
            },
            {
              "id": "dfbf5a07-d66a-434e-8208-5a14946193de",
              "name": "content",
              "type": "string",
              "value": "={{ $json.contentSnippet }}"
            },
            {
              "id": "b3f87e87-2f95-4d84-a03d-f44f3f206db4",
              "name": "link",
              "type": "string",
              "value": "={{ $json.link }}"
            },
            {
              "id": "74e93f7a-908b-486c-bb2f-02e4f5ff204c",
              "name": "pubDate",
              "type": "string",
              "value": "={{ $json.pubDate }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "6769221a-1d99-4c17-9828-46ee92be5926",
      "name": "記事結合",
      "type": "n8n-nodes-base.aggregate",
      "notes": "📊 Aggregates all articles\n\nCombines filtered articles from\nall sources into single dataset\nfor AI processing",
      "position": [
        1920,
        1040
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "6c430d53-cbd3-4881-b86b-48707c9e32a5",
      "name": "AIニュースレット作成",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "🤖 AI-powered article curation\n\nAnalyzes all articles and:\n• Selects top 10 most relevant\n• Creates HTML newsletter\n• Provides article summaries\n• Focuses on trending topics\n\nRequires: OpenAI API key",
      "position": [
        2176,
        1040
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "You are an AI Tech News Curator. Analyze the provided articles and create an HTML newsletter with the top 10 most relevant AI/tech articles.\n\nFormat as clean HTML starting with <!DOCTYPE html>\nInclude: article title, brief summary, and link for each article.\nFocus on trending AI, machine learning, and technology topics.\n\nArticles data: {{ JSON.stringify($json.data) }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "MViSj0jQLBUcuA6t",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fb8881bc-7831-43f8-97f7-4a604a4a9806",
      "name": "ニュースレット送信",
      "type": "n8n-nodes-base.gmail",
      "notes": "📧 Sends HTML newsletter via Gmail\n\nSetup:\n1. Enable Gmail API\n2. Create OAuth2 credentials\n3. Update recipient email\n\nFeatures:\n• HTML email format\n• Dynamic date in subject\n• Professional newsletter style",
      "position": [
        2528,
        1040
      ],
      "webhookId": "2f333782-f060-4720-9bb9-b1f23c27f780",
      "parameters": {
        "sendTo": "your.email@example.com",
        "message": "={{ $json.message.content }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "=Daily AI Tech Digest - {{ $now.toFormat('EEEE, MMMM d, yyyy') }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "ObKdXRExIEHrpaND",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b43da764-1c99-4cdd-8b9c-338753c68826",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -208,
        384
      ],
      "parameters": {
        "color": 5,
        "width": 736,
        "height": 1136,
        "content": "# AI Tech News Aggregator & Newsletter\n\n### 🎯 Key Features\n- **Premium Sources** - Curates from 14 top-tier tech publications\n- **AI Quality Control** - Intelligent article selection and summarization\n- **Balanced Coverage** - Prevents source bias with smart filtering\n- **Professional Format** - Clean HTML newsletter design\n- **Scheduled Automation** - Daily delivery at customizable times\n- **Error Resilience** - Continues processing even if some feeds fail\n\n## Setup Steps\n\n### ⚙️ Workflow Configuration\n1. **Import the workflow** into your n8n instance\n2. **Update node configurations**:\n   - **Google Vertex AI Model**: Set your Google Cloud Project ID\n   - **Send Newsletter Email**: Update recipient email address\n   - **Daily Newsletter Trigger**: Adjust schedule time if needed\n3. **Verify credentials** are properly connected to respective nodes\n\n### 📰 RSS Sources Customization (Optional)\nThe workflow includes 14 premium tech news sources:\n- TechCrunch (AI & Startups)\n- The Verge (AI section)\n- MIT Technology Review\n- Wired (AI/Science)\n- VentureBeat (AI)\n- ZDNet (AI topics)\n- AI Trends\n- Nature (Machine Learning)\n- Towards Data Science\n- NY Times Technology\n- The Guardian Technology\n- BBC Technology\n- Nikkei Asia Technology\n\n**To customize sources:**\n- Edit the \"Configure RSS Sources\" node\n- Add/remove RSS feed URLs as needed\n- Ensure feeds are active and properly formatted\n\n### 🚀 Testing & Deployment\n1. **Manual Test**: Execute the workflow manually to verify setup\n2. **Check Email**: Confirm newsletter arrives with proper formatting\n3. **Verify AI Output**: Ensure articles are relevant and well-summarized\n4. **Schedule Activation**: Enable the daily trigger for automated operation\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c96013fe-cde1-4ef2-b833-683fb6269d67",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        400
      ],
      "parameters": {
        "color": 3,
        "width": 2192,
        "height": 848,
        "content": "## Workflow\n\n### 💡 Customization Options\n\n**Newsletter Timing:**\n- Default: 8:00 AM UTC daily\n- Modify \"triggerAtHour\" in the Schedule Trigger node\n- Add multiple daily sends if desired\n\n**Content Focus:**\n- Adjust the AI prompt in \"AI Tech News Curator\" node\n- Specify different topics (e.g., focus on startups, enterprise AI, etc.)\n- Change output language or format\n\n**Email Recipients:**\n- Update single recipient in Gmail node\n- Or modify to send to multiple addresses\n- Integrate with mailing list services\n\n**Article Limits:**\n- Current: Max 5 articles per source\n- Modify the filtering logic in \"Filter & Balance Articles\" node\n- Adjust total article count in AI prompt\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "14562212-87cc-4321-8277-bd8519c1adcf": {
      "main": [
        [
          {
            "node": "6769221a-1d99-4c17-9828-46ee92be5926",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6477cbf0-790d-41ce-8b45-a273e03c9247": {
      "main": [
        [
          {
            "node": "37cfed68-0740-4e77-a1ab-827f8f1eec28",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d7f56edb-cd31-4a53-b390-e910b7c50ce8": {
      "main": [
        [
          {
            "node": "14562212-87cc-4321-8277-bd8519c1adcf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6769221a-1d99-4c17-9828-46ee92be5926": {
      "main": [
        [
          {
            "node": "6c430d53-cbd3-4881-b86b-48707c9e32a5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "37cfed68-0740-4e77-a1ab-827f8f1eec28": {
      "main": [
        [
          {
            "node": "d7f56edb-cd31-4a53-b390-e910b7c50ce8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6c430d53-cbd3-4881-b86b-48707c9e32a5": {
      "main": [
        [
          {
            "node": "fb8881bc-7831-43f8-97f7-4a604a4a9806",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1ee57ce6-d7aa-49d5-bac7-814bde5b0a65": {
      "main": [
        [
          {
            "node": "6477cbf0-790d-41ce-8b45-a273e03c9247",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "69394736-5c78-420e-9f03-ac18501cb377": {
      "main": [
        [
          {
            "node": "1ee57ce6-d7aa-49d5-bac7-814bde5b0a65",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

中級 - マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
中級
ノード数11
カテゴリー1
ノードタイプ9
難易度説明

経験者向け、6-15ノードの中程度の複雑さのワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34