---
# System prepended metadata

title: 用 n8n + OpenAI + Notion 打造自動產文系統（提供設定檔下載）
tags: [n8n, OpenAI, Notion]

---

# 用 n8n + OpenAI + Notion 打造自動產文系統（提供設定檔下載）

這篇教你從 0 建立一條自動化內容流程：

- AI 自動產生文章
- 自動寫入 Notion
- 建立自己的內容池

整個流程不需要後端開發，只用 n8n 即可完成。

---

## 一、系統架構

流程如下：

```mermaid
flowchart TD
    A[Manual Trigger] --> B[Message Model]
    B --> C[Code 解析 JSON]
    C --> D[Notion 寫入資料庫]
```

---

## 二、建立 Notion 內容池

### 1️⃣ 建立資料庫

在 Notion 建立：

- Table – Full Page
- 命名為：文章內容池

![image](https://hackmd.io/_uploads/HJivE6h_We.png)

![image](https://hackmd.io/_uploads/By-fC2n_Wg.png)

### 2️⃣ 建立欄位

| 欄位名稱   | 類型   |
|------------|--------|
| title      | Title  |
| content    | Text   |
| created_at | Date   |

完成後，即為最小可用內容資料庫。

---

## 三、建立 Notion Integration

1. 前往  
   https://www.notion.so/my-integrations

2. 建立  
   Internal Integration

3. 複製  
   Internal Integration Secret
   
![image](https://hackmd.io/_uploads/HJW96nnO-e.png)

---

### 授權資料庫

進入 Integration 的「Content access」頁面，  
將「文章內容池」加入授權清單。

完成後 n8n 才能讀寫該資料庫。

---

## 四、n8n 設定流程

### Step 1：新增 Trigger

新增：

Manual Trigger

![image](https://hackmd.io/_uploads/BJ9Pyan_bl.png)

---

### Step 2：新增 Message Model

![image](https://hackmd.io/_uploads/Hkddkp2Obl.png)

Model 建議選：

gpt-4o-mini

![image](https://hackmd.io/_uploads/SysoJTnuZl.png)

▲紅框要去 OpenAI 申請一組 API Key

---

#### System 設定

你是台灣繁體中文寫作助理。  
口吻中立資訊型。

![image](https://hackmd.io/_uploads/S1N6ka3dWx.png)

---

#### User 設定

產生一篇 社群 貼文。  
主題請自行決定，範圍包含：  
貸款、信用、理財觀念、負債管理、金融迷思。  
200~300 字。  
分段清楚。  
不要推銷。  
結尾加三個 hashtag。  
請只輸出 JSON：  
{"title":"...","content":"..."}

![image](https://hackmd.io/_uploads/BJmCJan_bx.png)

---

### Step 3：新增 Code 節點（解析 JSON）

![image](https://hackmd.io/_uploads/rJlyl63uZl.png)

將以下程式碼貼入 Code 節點：

```javascript
const text = $json.output?.[0]?.content?.[0]?.text ?? JSON.stringify($json);

const cleaned = String(text)
  .replace(/^```json\s*/i, "")
  .replace(/^```\s*/i, "")
  .replace(/\s*```$/i, "")
  .trim();

const obj = JSON.parse(cleaned);

return [{
  json: {
    title: obj.title,
    content: obj.content
  }
}];
```

▼ 輸出(左)結果，並準備將其寫回 Notion：  
![image](https://hackmd.io/_uploads/SkB4gT3_Ze.png)

---

### Step 4：新增 Notion 節點

![image](https://hackmd.io/_uploads/r1Ohxp2O-x.png)

1. 設定好在 integrations/internal 取得的 KEY（Internal Integration Secret）
2. DataBase 抓之前在 Notion 定義好的 Database
3. Resource 設為：Database Page  
4. Operation 設為：Create（寫入）

欄位對應如下：

- title 對應 `{{$json.title}}`  
- content 對應 `{{$json.content}}`  
- created_at 對應 `{{$now}}`

![Adobe Express - Video_2026-02-26_023909](https://hackmd.io/_uploads/rypiZIa_Zx.gif)

---

## 五、測試流程

點擊：

Execute workflow
![Video_2026-02-26_125516](https://hackmd.io/_uploads/SJh5G86dZe.gif)

成功後：

- Notion 會新增一筆資料
- 自動生成標題
- 自動填入內容
- 自動寫入時間

![image](https://hackmd.io/_uploads/SJmbJTnuWx.png)

---

## 六、延伸玩法

你可以進一步：

- 改成 Cron（每日自動產文）
- 加入圖片生成
- 增加主題輪動
- 避免標題重複
- 串接 API 自動發佈

---

完成結果
![image](https://hackmd.io/_uploads/rkE0R2h_bl.png)


## 七、總結

這條流程本質是一個內容引擎：

- AI 負責創作
- n8n 負責自動化
- Notion 負責儲存與管理

當架構搭好後，後續優化只是在上面疊加功能。

___
提供完整 n8n Workflow 設定檔（JSON）下載。

此檔案不包含任何 API Key、Token 或憑證資訊。
匯入後請自行設定：

OpenAI API Credential

Notion Integration Token

Notion Database ID

設定完成後即可正常執行。

<details>
<summary>📦 點我展開 n8n Workflow JSON</summary>

```json
{
  "name": "My workflow",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -752,
        -272
      ],
      "id": "c44cd9fe-1ca8-4b33-bac4-e828a19daf51",
      "name": "When clicking ‘Execute workflow’"
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "gpt-4o-mini",
          "mode": "list",
          "cachedResultName": "GPT-4O-MINI"
        },
        "responses": {
          "values": [
            {
              "content": "你是台灣繁體中文的寫作助理，擅長用中立資訊型口吻寫短文。"
            },
            {
              "content": "產生一篇可發在 Threads 的貼文。主題：貸款常見迷思。\n限制：180~260 字、繁體中文、分段清楚、不要推銷、不要提到任何品牌、結尾加 3 個 hashtag（例如 #貸款 #信用 #理財）。\n請輸出 JSON，格式：{\"title\":\"...\",\"content\":\"...\"}，不要輸出多餘文字。"
            }
          ]
        },
        "builtInTools": {},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 2.1,
      "position": [
        -544,
        -272
      ],
      "id": "8d13f3f9-9e17-4adf-a47c-69e4c13074ac",
      "name": "Message a model",
      "credentials": {
        "openAiApi": {
          "id": "m46SLUj1sLZ9v6YV",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "\nconst text = $json.output[0].content[0].text;\n\nconst cleaned = text\n  .replace(/^```json\\s*/, \"\")\n  .replace(/\\s*```$/, \"\");\n\nconst obj = JSON.parse(cleaned);\n\nreturn [{\n  json: {\n    title: obj.title,\n    content: obj.content\n  }\n}];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -192,
        -272
      ],
      "id": "f4677712-462b-42a6-9542-332473a5b301",
      "name": "Code in JavaScript"
    },
    {
      "parameters": {
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "value": "YOUR_NOTION_DATABASE_ID",
          "mode": "list",
          "cachedResultName": "你的DB",
          "cachedResultUrl": "https://www.notion.so/312d98a5912d803ba14bc737e153ccbb"
        },
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "title|title",
              "title": "={{ $json.title }}"
            },
            {
              "key": "content|rich_text",
              "textContent": "={{ $json.content }}"
            },
            {
              "key": "created_at|date",
              "date": "={{$now}}"
            }
          ]
        },
        "blockUi": {
          "blockValues": [
            {}
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        16,
        -272
      ],
      "id": "58dcc065-f936-46e8-92f6-a92800c25123",
      "name": "Create a database page",
      "credentials": {
        "notionApi": {
          "id": "RhOoR28DwPCCEhhf",
          "name": "Notion account"
        }
      }
    }
  ],
  "pinData": {},
  "connections": {
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Create a database page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate",
    "availableInMCP": false
  },
  "versionId": "bc095bbc-ecfd-4f10-b817-0c3e0beb3e03",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "343f2f704e7828be4e21cb92253659e2f14b635f53a670eb2fa4e6a6edab79f7"
  },
  "id": "TLsexfLcACljNTty",
  "tags": []
}