今天,我們來動手用 n8n 這款強大的自動化工具,串接 CodePen RSS、Gemini AI 和 Discord,打造一個完全客製化的前端靈感通知流程
來到儀表板,新增一個流程「Create Workflow」

初始節點選擇「RSS Feed Trigger」

裡面可以讓我們選擇時間,URL 填上 Codepen 提供的 RSS
https://codepen.io/spark/feed

下個節點選擇「Basic LLM Chain」

Prompt 填入以下內容,並把「Require Specific Output Format」打開
你是一位資深的前端開發者與技術傳教士,你的任務是分析指定的 CodePen 作品,並以「正體中文 (台灣)」提供結構化的 JSON 格式的洞見。
請根據以下資訊,進行分析:
---
作品標題:{{ $json.title }}
作品描述:{{ $json.contentSnippet }}
---
請嚴格依照以下的 JSON 格式回覆,不要有任何額外的文字或 markdown 語法 (例如 ```json ... ```)。
{
  "summary": "這裡是一句話總結這個 Pen 的核心亮點",
  "tech": "分析可能用到的關鍵技術,例如:CSS Grid、GSAP 動畫、Three.js、Vue.js 等",
  "learning": "說明從這個作品中可以學到什麼具體的技巧或設計模式",
  "tags": ["CSS動畫", "UI設計", "互動效果"]
}

Model 可以選擇自己想要的,我是用「Gemini」

選擇想要的模型

接著到「Structured Output Parser」填入底下的範例 Schema
{
  "summary": "這裡應該是一句話總結",
  "tech": "這裡應該是分析出的關鍵技術",
  "learning": "這裡應該是說明可以學到什麼",
  "tags": ["標籤一", "標籤二", "標籤三"]
}

接著點選正下方的「Execute workflow」來試跑看看會拿到什麼資料

可以看到成功拿到 JSON 格式的內容

下個節點選擇 Discord 的「Send a message」來發送訊息

「Connection Type」選擇「Webhook」,憑證的串接在之前的文章有撰寫過,這邊就不重複惹

可以用底下的「Embeds」的卡片訊息來傳送,Input Methods 選擇「Raw JSON」

Value 填入底下的 JSON 內容
{
  "title": "{{ $('RSS Feed Trigger').item.json.title }}",
  "url": "{{ $('RSS Feed Trigger').item.json.link }}",
  "description": "{{ $json.output.summary }}",
  "color": 3447003,
  "fields": [
    {
      "name": "💡 技術亮點",
      "value": "{{ $json.output.tech }}",
      "inline": false
    },
    {
      "name": "🎓 學習點",
      "value": "{{ $json.output.learning }}",
      "inline": false
    },
    {
      "name": "🏷️ 建議標籤",
      "value": "{{ '#' + $json.output.tags.join(' #') }}",
      "inline": false
    }
  ],
  "footer": {
    "text": "由 n8n + Gemini AI 自動產生"
  }
}
最後試跑看看可以在 Discord 拿到像這樣的訊息,代表成功囉

記得也要到設定裡面設定時區

Timezone 選擇台灣的時間

完整的畫布長的會像這樣,記得也要到上方切換為「Active」

你也可以自由擴充這個流程,例如將這些資料同時存到 Notion 或其他筆記軟體,打造更全面的知識管理系統哦
最後也附上完整的 JSON 內容
{
  "nodes": [
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyWeek",
              "weekday": "0"
            }
          ]
        },
        "feedUrl": "https://codepen.io/spark/feed"
      },
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "typeVersion": 1,
      "position": [0, 0],
      "id": "d0e53059-696c-442c-be02-937f49d0862e",
      "name": "RSS Feed Trigger"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=你是一位資深的前端開發者與技術傳教士,你的任務是分析指定的 CodePen 作品,並以「正體中文 (台灣)」提供結構化的 JSON 格式的洞見。\n\n請根據以下資訊,進行分析:\n---\n作品標題:{{ $json.title }}\n作品描述:{{ $json.contentSnippet }}\n---\n\n請嚴格依照以下的 JSON 格式回覆,不要有任何額外的文字或 markdown 語法 (例如 ```json ... ```)。\n\n{\n  \"summary\": \"這裡是一句話總結這個 Pen 的核心亮點\",\n  \"tech\": \"分析可能用到的關鍵技術,例如:CSS Grid、GSAP 動畫、Three.js、Vue.js 等\",\n  \"learning\": \"說明從這個作品中可以學到什麼具體的技巧或設計模式\",\n  \"tags\": [\"CSS動畫\", \"UI設計\", \"互動效果\"]\n}",
        "hasOutputParser": true,
        "batching": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.7,
      "position": [220, 0],
      "id": "dfc98ded-0af1-4541-8287-ec9cd617387d",
      "name": "Basic LLM Chain"
    },
    {
      "parameters": {
        "modelName": "models/gemini-2.5-flash-lite",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "typeVersion": 1,
      "position": [200, 220],
      "id": "17722a10-8c59-41a1-81ef-02fa855976a0",
      "name": "Google Gemini Chat Model"
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"summary\": \"這裡應該是一句話總結\",\n  \"tech\": \"這裡應該是分析出的關鍵技術\",\n  \"learning\": \"這裡應該是說明可以學到什麼\",\n  \"tags\": [\"標籤一\", \"標籤二\", \"標籤三\"]\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [368, 220],
      "id": "c195f079-5444-47e8-b1d7-be7da7c74f8f",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "authentication": "webhook",
        "options": {},
        "embeds": {
          "values": [
            {
              "inputMethod": "json",
              "json": "=\n  {\n    \"title\": \"{{ $('RSS Feed Trigger').item.json.title }}\",\n    \"url\": \"{{ $('RSS Feed Trigger').item.json.link }}\",\n    \"description\": \"{{ $json.output.summary }}\",\n    \"color\": 3447003,\n    \"fields\": [\n      {\n        \"name\": \"💡 技術亮點\",\n        \"value\": \"{{ $json.output.tech }}\",\n        \"inline\": false\n      },\n      {\n        \"name\": \"🎓 學習點\",\n        \"value\": \"{{ $json.output.learning }}\",\n        \"inline\": false\n      },\n      {\n        \"name\": \"🏷️ 建議標籤\",\n        \"value\": \"{{ '#' + $json.output.tags.join(' #') }}\",\n        \"inline\": false\n      }\n    ],\n    \"footer\": {\n      \"text\": \"由 n8n + Gemini AI 自動產生\"\n    }\n  }\n"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.discord",
      "typeVersion": 2,
      "position": [580, 0],
      "id": "a903c8bf-4e76-4acc-adf8-01eb9c3f9769",
      "name": "Discord"
    }
  ],
  "connections": {
    "RSS Feed Trigger": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Discord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": true
  }
}