# 目錄 ## 1. 課程介紹與 n8n 基礎 * Introduction and Course Overview * Foundations of n8n: Nodes, Architecture, and Data Types --- ## 2. 第一個 AI Agent Workflow * Building Your First AI Agent Workflow (Chatbot / Email Agent Demo) --- ## 3. 實驗環境與雲端設定 * Free Labs Access and CodeCloud Keyspace API Setup * n8n Cloud vs. Lab Playground Differences (API / Google Auth Setup) --- ## 4. API 與驗證最佳實務 * Authentication Best Practices for HTTP Request Node * Google Drive / Sheets / Docs Authentication Setup via Google Cloud Console * Slack API Setup and Integration --- ## 5. HTTP Request Node 實戰應用 * HTTP Request Node and API Call Scenarios * Cat Facts * Weather * Web Scraper --- ## 6. AI 影音生成 Workflow * Text-to-Image Workflow with AI Prompt Generation * Text-to-Video Workflow with AI Prompt Generation * Image-to-Video Workflow with Google Drive and Telegram Integration * Vertex AI (Google V3) Integration for Text-to-Video --- ## 7. n8n 架構進階與部署選擇 * n8n Cloud vs. Self-Hosted n8n (Docker / AWS EC2) * Multi-Workflow Orchestration with Subworkflows --- ## 8. 課程總結 * Course Conclusion and Next Steps --- # 1. 課程介紹與 n8n 基礎 ## 課程定位與目標(n8n Zero to Hero) * n8n 是開源自動化平台,可整合 API、編排智慧工作流程,降低大量自訂程式碼需求 * 課程宣稱從基礎到進階,涵蓋節點架構、部署、資料流處理與 AI 整合 * 目標受眾包含 DevOps、AI 相關角色與想做流程自動化的非技術背景使用者 ## 課程大綱總覽 ![messageImage_1765654652926](https://hackmd.io/_uploads/ry3YeBizZg.jpg) * 入門:認識 n8n、環境(playground)、專案結構與學習目標 * 基礎:節點(nodes)、輸入輸出、資料型別、工作流程在底層如何執行 * AI 整合前置:設定 OpenAI、Anthropic 等服務的 API keys * 實作:Email AI agent、自動研究工作流(多工具)、HTTP Request、web scraping、資料抓取 * 多模態:文字轉圖、文字轉影片、圖轉影片等流程整合 * 協作工具:Slack 工作流讓 AI 代回覆訊息 * 選修部署:Docker 自架、Ollama 本機 LLM、AWS EC2 託管 * RAG:向量資料庫(如 Pinecone)、客服型 RAG agent、文件記憶與檢索 * MCP 與可重用性:比較 MCP 與傳統工作流,強調可擴展與可重用 * 進階編排:多工作流、多代理整合、subflows 管理複雜度 * 維運:重試、錯誤處理、最佳實務、模板市集加速開發 ## n8n 的核心概念:節點與工作流程 ![image](https://hackmd.io/_uploads/S1em-HiM-e.png) ![image](https://hackmd.io/_uploads/S1yV-riGWg.png) * n8n 以節點串接的視覺化方式建立自動化流程 ![image](https://hackmd.io/_uploads/BkfrZHof-g.png) * 流程由 Trigger node 開始(如新郵件、Webhook 被呼叫) * 後續接 Action nodes 執行工作(寄信、呼叫 LLM、呼叫 API) * 節點之間會自動傳遞資料,形成完整資料流 ## AI agent 在 n8n 的基本構成 ![image](https://hackmd.io/_uploads/HkWvWHoGZl.png) * LLM:作為 agent 的「大腦」(OpenAI、Claude、Llama 等) * Memory / Context window:提供對話或流程上下文,影響有無狀態的回應 * Tools:可供 agent 呼叫的外部能力(Gmail、web scraper、各種 API 工具) * agent 接收輸入後判斷是否需要呼叫工具,再回傳輸出給後續節點或回覆端 ## 工作流程的執行邏輯與分支 ![image](https://hackmd.io/_uploads/B1HdZrozZg.png) ![image](https://hackmd.io/_uploads/SkgoWBjzbl.png) * 預設順序執行:從 trigger 依連線往下跑,任一節點失敗可能導致整體 error * 工具型節點的使用是「由 agent 決定是否呼叫」,不一定每次都會用到 ![image](https://hackmd.io/_uploads/r1E3-BoMWe.png) * 可做分支:同一個輸入可分流到多個路徑,例如同時發 Slack 與寄 Gmail * 分支在示例中通常依序跑完各分支,達到一個觸發帶出多個動作 ## 記憶體系:短期 Context 與長期 RAG ![image](https://hackmd.io/_uploads/B1gTZrjzZx.png) * Context memory:放在 prompt 內的短期記憶,用於對話歷史與保持上下文 * 長期記憶(RAG):文件或資料存進向量資料庫,以 embedding 方式檢索相關片段 * Context 偏向連續性與狀態維持,RAG 偏向規模化與回答準確度 ## 節點輸入輸出與資料呈現方式 ![image](https://hackmd.io/_uploads/BkwC-BizZe.png) * 每個節點都有 input 與 output,上一節點 output 就是下一節點 input * 在面板可看到資料如何在流程中流動,方便除錯與理解 ![image](https://hackmd.io/_uploads/Skv1MBsfZg.png) * 同一份資料可用不同視圖呈現:schema、table、JSON * 有時也會看到 binary(檔案、圖片)等非純文字資料 ## Expressions 與動態資料綁定 ![image](https://hackmd.io/_uploads/SJNeMrozWg.png) * 節點欄位可填固定值(static)或用 expression 引用前面節點的動態資料 * expression 讓流程能依即時輸入變化,不需硬編碼 * 介面支援拖拉變數到欄位,降低綁定資料的門檻 ## 基礎資料型別(n8n 常見) ![image](https://hackmd.io/_uploads/HkuZGSjGbe.png) * String:文字資料 * Number:數值 * Boolean:true/false * Array:列表 * Object:結構化資料(可巢狀),常用點路徑與 expression 取值 ## 社群節點(Community nodes) ![image](https://hackmd.io/_uploads/SJyMMrifWe.png) * 除官方節點外,社群也提供額外 connector 擴充整合範圍 * 若找不到內建整合,常可先在社群節點尋找是否已有可用的擴充 --- # 2. 第一個 AI Agent Workflow ![image](https://hackmd.io/_uploads/SyAzGBsf-l.png) ## 建立工作流程的第一步:加入 Trigger ![image](https://hackmd.io/_uploads/SJwEzHszZe.png) * 進入 workflow 後先新增 Trigger node 作為整個流程的啟動點 * 點右上角加號選擇 Trigger 類型 * 範例使用「On Chat Message」觸發器 ![image](https://hackmd.io/_uploads/ry3HfrsGWl.png) * 在觸發器出現的終端輸入訊息(例如 hello)以產生測試資料 * 觸發器節點可用閃電圖示辨識 ## Chat Message Trigger 的輸出資料內容 ![image](https://hackmd.io/_uploads/HJmIMBjfWl.png) * Trigger 節點只有輸出資料沒有輸入資料 * 輸出底層格式是 JSON ![image](https://hackmd.io/_uploads/rJpvzHsfWe.png) * 常見欄位包含 session ID、action(例如 send message)、chat input content(例如 hello) * 可切換檢視成 JSON、Table、Schema ![image](https://hackmd.io/_uploads/H1HdfSjf-g.png) * Schema 檢視方便拖拉欄位到下一個節點 ## 加入 AI Agent 節點並接收 Trigger 輸出 ![messageImage_1765655176172](https://hackmd.io/_uploads/rJP5zrsMZe.jpg) ![image](https://hackmd.io/_uploads/BJgnfBiMZe.png) * 新增 AI Agent node 並接到 chat trigger 後會自動把上一節點輸出帶入為輸入 * User Message 通常以 JSON chat input 作為來源並以 expression 表達式表示 * 每次執行會依 chat input 的內容變動 ## AI Agent 的三個核心組成:LLM、Memory、Tool * LLM 是 AI agent 的核心模型,用來生成回應與推理 * Memory 用於保留對話上下文,讓模型能記住前幾輪訊息 * Tool 讓 AI agent 能執行外部動作,例如透過 Gmail 寄信 ## 連接 OpenAI Chat Model 與建立憑證 ![image](https://hackmd.io/_uploads/r1DAfBjzZx.png) * 在 AI agent 加入 OpenAI chat model ![image](https://hackmd.io/_uploads/HJwzdrjzbg.png) * 透過下拉選單建立新 credential,填入 OpenAI API key * 儲存後即可選擇模型清單中的 GPT 模型 * 範例選 GPT-4 mini 作為模型 ## 沒有 Memory 與有 Memory 的差異示範 ![image](https://hackmd.io/_uploads/rJxeE_HjGZg.png) * 不加 Memory 時,模型可能無法記住前一輪剛提供的資訊 * 範例先輸入「hello, my name is Mark」後再問「What is my name?」會回覆無法得知 ![messageImage_1765656632107](https://hackmd.io/_uploads/HyLHdHozZx.jpg) * 加上 Simple Memory 後再做同樣測試,模型可正確回答「你的名字是 Mark」 ![image](https://hackmd.io/_uploads/S1GLurjfbe.png) * Simple Memory 可設定 context window length(範例為 5)表示保留最近幾次互動 ## 加入 Gmail Tool 讓 AI Agent 具備寄信能力 ![image](https://hackmd.io/_uploads/BJ1_OHjfWl.png) ![image](https://hackmd.io/_uploads/r1rdOSjfWl.png) * 在 AI agent 加入 Gmail tool,設定成 message resource 與 send operation ![image](https://hackmd.io/_uploads/H1tKurjzZg.png) * Gmail tool 需要建立/選擇 Google 帳號憑證 ![image](https://hackmd.io/_uploads/BJxi_rszbe.png) * Recipient、Subject、Message 可設為由模型決定,讓 AI 從自然語言指令抽取資訊 * Email type 範例使用 text,HTML 適合需要排版與圖片的郵件 ## Fixed 與 Expression 的差異 ![image](https://hackmd.io/_uploads/HkK3ursMZl.png) * Fixed 代表固定文字,每次執行都會用同一段內容 ![image](https://hackmd.io/_uploads/HyAauriMbx.png) * Expression 代表動態變數,會依輸入資料改變 * 若要讓 AI agent 接收每次不同的聊天輸入,應使用 Expression 並引用 chat input 欄位 ## 設定 System Message 控制 AI 行為 ![image](https://hackmd.io/_uploads/SJn0_SsMbl.png) * 在 AI agent 的 Options 新增 system message * system message 用來定義模型角色與行為規則 * 範例內容是把 AI 定義成協助撰寫精簡有效郵件並在需要時使用 Gmail tool ## 寄信互動流程示範 ![messageImage_1765656833886](https://hackmd.io/_uploads/S1-GYSifWl.jpg) * 使用者提出寄信需求,模型先補問缺少的 subject 與 body * 使用者要求模型自行產生內容後,模型提供草稿 * 使用者再提供補充資訊(例如收件者稱呼)後,模型更新草稿 * 使用者確認後,模型才會真的呼叫 Gmail tool 發送郵件 ## 移除 Gmail 自動附加的 Attribution ![image](https://hackmd.io/_uploads/BJ-7FSjzWg.png) * 發送後郵件尾端可能出現「this email was sent automatically by n8n」類似字樣 * 在 Gmail node 的 Options 找到 append/edit attribution 並關閉 * 關閉後再次發送就不會自動附加該段文字 ## 節點常用操作:Execute、Deactivate、Delete、Pin ![messageImage_1765656919016](https://hackmd.io/_uploads/BkSvtroGbg.jpg) * Execute step 可單獨執行某一節點,不必重跑整條 workflow * Deactivate 可停用節點使流程不經過該節點 * Delete 可刪除節點 ![image](https://hackmd.io/_uploads/SkS9YroGZg.png) * Pin data 可固定該節點的輸入/輸出資料用於反覆測試,避免重複跑到會花費成本的步驟 ## 啟用工作流程與 Production Chat URL ![image](https://hackmd.io/_uploads/H1Astrsf-g.png) * 切換 Activate workflow 後 workflow 進入上線狀態 * 上線後不必按 execute workflow,收到訊息就會自動觸發 * 會提供 production chat URL 作為正式呼叫入口 ## 讓聊天介面公開並提供 URL ![image](https://hackmd.io/_uploads/SJzCKrjzWx.png) * 在 chat trigger 節點開啟 make chat publicly available * 系統會產生可公開存取的 URL,外部使用者可用該頁面對話 * 可設定是否需要認證與自訂初始訊息 ## 執行紀錄與 Copy to Editor 的除錯方式 ![image](https://hackmd.io/_uploads/BJLxqSiMWg.png) * Executions 頁面可查看每次執行的時間與類型 * 測試執行通常以特定圖示標記,正式上線後會以不同類型顯示 * 可用 copy to editor 把某次 production 執行的資料帶回編輯器畫面協助排查問題 * 編輯器中可看到當次 chat input 與 AI agent response 的實際資料內容 --- # 3. 實驗環境與雲端設定 ## 瀏覽器內免費 Labs 的定位與形式 * 課程提供可直接在瀏覽器使用的免費 labs,不需要自行安裝環境 * 不要求填信用卡即可開始 * labs 以挑戰題為主:給任務、要求學員自行完成 * 後續 labs 會在 n8n 環境中動手打造 AI agents ## 為 Labs 取得 LLM API Key 的方式與問題背景 ![image](https://hackmd.io/_uploads/BkUQTHof-l.png) * 使用 AI agent 需要能呼叫 LLM,因此必須準備 API key * 直接向 OpenAI 申請或用 OpenRouter 等平台可取得 key,但常需要先提供付款資訊 * CodeCloud 提供「Code Key」作為替代:在自家 AI playground 取得多家模型 API key ![image](https://hackmd.io/_uploads/SksNTHoGWx.png) * 示範提到可用模型包含 GPT-4o、GPT-4.1、Gemini 2.5、Grok 3 等(以錄製當下為準) ![image](https://hackmd.io/_uploads/rJNHTBoM-l.png) * Code Key 依不同訂閱方案提供不同程度的可用權限 ## Code Key Playground:取得 Base URL 與 API Key ![image](https://hackmd.io/_uploads/S1jraBofWe.png) * 進入指定頁面後啟動 playground,進入 dashboard * 在 dashboard 可選模型與呼叫方式,並取得對應的 base URL 與 API key * 這兩個值會被拿來設定 n8n 的模型憑證 ## 在 n8n 透過 Code Key 呼叫 GPT-4.1:方式一(OpenAI 節點) * 建立簡單流程:Chat trigger → OpenAI message/model 節點 ![image](https://hackmd.io/_uploads/Bkhvprif-g.png) * 建立新憑證時要替換 base URL 為 Code Key 提供的 base URL * API key 使用 Code Key 提供的 key * UI 可能出現紅色警示條,原因是介面原本不是設計來手動替換 base URL ![image](https://hackmd.io/_uploads/BkoFTroM-l.png) * 模型必須用「By ID」手動填入,例如 openai/gpt-4.1,不能靠清單載入 ## 在 n8n 透過 Code Key 呼叫 GPT-4.1:方式二(HTTP Request 節點) ![image](https://hackmd.io/_uploads/SJ_harsfZl.png) * 使用 HTTP Request node 以 POST 呼叫 Code Key 的 API endpoint ![image](https://hackmd.io/_uploads/B1pn6Boz-l.png) * 從文件複製 cURL 指令並用「Import curl」匯入 ![image](https://hackmd.io/_uploads/HyB6aHsM-g.png) * cURL 內已包含 endpoint 與驗證資訊(示範先用整段貼上) ![image](https://hackmd.io/_uploads/BJ4RTSjfZe.png) * JSON body 內有預設的 user prompt,可替換成流程輸入變數(例如 chat trigger 的文字) ## Code Key 與 OpenAI 原生 API Key 的差異(模型選擇) ![image](https://hackmd.io/_uploads/B1peCSszbg.png) * 使用 Code Key 時,模型清單在 UI 可能無法正確載入或不對應,需要改用 By ID * 使用 OpenAI 原生 API key 時,base URL 不用改,模型可直接從清單選擇並正常運作 * 示範對比流程:建立 OpenAI 原生 key 後,選 GPT-4.1 可直接跑通 ## Lab Playground 與 n8n Cloud:登入與介面流程差異 * Lab 進入時仍要填 email、姓名、密碼,但示範強調不需記住、每次可用不同資料 * 會出現 onboarding 問題與付費功能介紹,可略過 * 進到介面後可「Start from scratch」開始建立第一個 email AI agent ## Lab 內使用 Google 工具的差異:需要自行做 OAuth 設定 ![image](https://hackmd.io/_uploads/BySu0Hifbl.png) * 在 n8n Cloud 有時可直接用「Sign in with Google」快速建立 Gmail 憑證(視瀏覽器與環境) * 在 labs 中建立 Gmail/Google 工具憑證時,示範強調需要走 OAuth 流程自行設定 ![image](https://hackmd.io/_uploads/rkiFCBsG-e.png) * 必須到 Google Cloud Console 建立 project,並啟用對應 API(示例為 Gmail API) * 需要設定 OAuth consent screen(含 app name、支援信箱、external、聯絡信箱) * 需加入 test user(用來實際發信的帳號) * 建立 OAuth client(Web application)並填入 lab 提供的 redirect URL * 把 client ID / client secret 回填到 n8n 憑證後,使用 Google 登入並授權 * 授權頁會顯示「未驗證 app」,示範做法是自行確認後繼續授權 ## Gmail 實測:用 AI agent 透過工具寄信 * 流程可用聊天指令要求 agent 寄信(示例為寄出簡單問候信) * 執行後可在 Gmail 收到對應信件,代表工具串接成功 * 示範提到未特別設 system prompt,因此行為較簡單,重點在驗證流程可跑通 ## 環境差異的提醒範圍 * self-host、lab-host、n8n cloud 之間可能在功能支援上有差異 * 差異可能包含 community nodes 可用性、版本支援與部分功能開關 * 出現問題不一定是限制,可能只是環境差異導致需要不同作法 --- # 4. API 與驗證最佳實務 ![image](https://hackmd.io/_uploads/ByR60Sof-e.png) ## HTTP Request 節點的驗證方式概覽 ![image](https://hackmd.io/_uploads/B1VgI13f-x.png) * HTTP Request node 可快速重現 API 呼叫,特別適合從 API 文件用「Import cURL」直接匯入 * 匯入 cURL 後通常會自動把驗證資訊填到 Headers(常見是 Authorization 與 API key 格式) * 多數 API 呼叫屬於 Header-based authentication ## 直接寫 Header 與使用 Credential 的差異 * 直接在參數或 Headers 填 API key 可用,但容易變成把 key 硬寫在節點設定裡 ![image](https://hackmd.io/_uploads/SyNXIk2GZg.png) * 用 Credential(例如 Header Auth credential)是把驗證資訊抽離成可重用的憑證設定 ## 使用 Credential 的兩個主要理由 * 方便重用:建立一次憑證後,後續節點或其他 workflow 可以直接從清單選取,不用每個節點重設 * 安全性較好:避免把 API key 硬寫在 workflow 節點參數中,分享專案給多人時較符合最佳實務 ## Credential 的管理位置與好處 * 憑證會集中存放在 Credential tab * 可在同一處查看、刪除、或重新設定既有憑證 # Google Cloud Console ![image](https://hackmd.io/_uploads/BJi48ynMbg.png) ## Google Cloud Console 與 n8n 的串接目標 ![image](https://hackmd.io/_uploads/B1YrIk3GZl.png) * 目標是把 Google 服務(Drive、Gmail、Sheets、Docs 等)一次串好,後續不用每個節點重複設定 * 以 Google Drive node 示範,因為流程與其他 Google nodes 很類似 * 串好一次後,其他 Google 服務多半只需要在 Cloud Console 另外啟用對應 API ## 建立 Google 專案與 OAuth Consent Screen ![image](https://hackmd.io/_uploads/S1m8U13z-e.png) * 進入 Google Cloud Console,建立新 project * 到 APIs & Services 設定 OAuth consent screen ![image](https://hackmd.io/_uploads/rkKwUy3fZl.png) * 設定 app information(app 名稱、支援信箱) * Audience 選 internal 或 external(internal 需 Google Workspace) * 填寫 contact information 並建立 ## 建立 OAuth Client 與取得 Client ID/Secret ![image](https://hackmd.io/_uploads/ryKtUk2zbl.png) * 建立 OAuth client(Application type 選 Web application) * 從 n8n credential 視窗複製 redirect URL,回填到 Google Console 的 authorized redirect URIs * 建立後取得 client ID 與 client secret,貼回 n8n 的 credential 欄位 ## 需要補做的 Console 設定 ![image](https://hackmd.io/_uploads/SJwiLk3M-e.png) * 到 Branding → Authorized domains 加入 n8n.cloud(示範用的網域) * 到 APIs & Services 搜尋並啟用 Google Drive API(示範先啟用 Drive) * 到 Audience 將 app 發佈(publish) ## 在 n8n 完成 Google 授權與測試 Drive 觸發 ![image](https://hackmd.io/_uploads/HyS6LJ3GZx.png) * 在 n8n credential 點「Sign in with Google」完成登入與授權 * 可能出現「Google hasn’t verified this app」提示,示範情境下因為是自己建立的 app 所以繼續 * 授權時勾選需要的權限後完成連線,n8n 顯示 Connection successful * 連線後可在 Drive node 看到資料夾清單並選取 * 測試 watch trigger:先 fetch test event,若沒資料會顯示目前條件無資料 * 上傳一個檔案到指定資料夾後再測試,可成功抓到上傳檔案的事件資料 ## 其他 Google Nodes 的啟用方式 * 要用 Google Sheets / Docs 等,只要回到 Cloud Console 搜尋並啟用對應 API(例如 Google Sheets API) * 啟用後回 n8n 使用對應節點即可沿用同一套 OAuth 連線 # Workflow 2:Multi-Agent Research Workflow with Perplexity & OpenAI ![image](https://hackmd.io/_uploads/HkFJwJhGZg.png) ## AI 研究新聞 Workflow 的目標與結構 * 目標:每日抓最新 AI 新聞寄信,並把標題記錄到 Google Sheet,隔天避免重複 * 流程概念:排程觸發 → Perplexity 搜尋 → 檢查/比對既有標題 → Gmail 寄出摘要 → 寫入新標題到 Sheet ## Scheduled Trigger 設定重點 ![image](https://hackmd.io/_uploads/H1WVPJhG-g.png) ![image](https://hackmd.io/_uploads/SyhLwknMZx.png) * 使用 Scheduled Trigger node,每天固定時間觸發(示例 9:00) * 間隔設為每天一次、分鐘設為 0 * 先 execute step 產生測試資料以便後續節點引用 ## 使用 Perplexity 節點的原因與憑證建立 ![image](https://hackmd.io/_uploads/r1guv13Mbx.png) * Perplexity 有原生 node,可直接使用,省去自己手刻 HTTP Request 呼叫 API ![image](https://hackmd.io/_uploads/SJsuvJnf-e.png) * 建立 credential 只需貼入 Perplexity API key ![image](https://hackmd.io/_uploads/BJvKP1nG-e.png) * 取得 API key:到 Perplexity 帳號 settings → API keys 建立 * 需要先開 API billing,示範提到至少儲值 5 美元才能啟用 key ## Perplexity 模型選擇與輸出取向 ![image](https://hackmd.io/_uploads/SysnwknMWg.png) * 示範選用 Sonar Pro 以取得「最新標題/摘要」的適中輸出 * Deep Research / Reasoning 類型適合更長、更深入的研究,但此例不需要 ## Perplexity 的訊息順序規則 * Perplexity node 要求 system message 必須放在 user message 之前 * 需要調整訊息順序:system 先、user 後 ## System Prompt 的角色設定 * 定義為 AI 研究分析師,負責追蹤並摘要最新 AI 發展 * 聚焦新模型發布、研究突破、以及主要 AI 公司策略動態 ## User Prompt 的關鍵約束與防幻覺設計 ![image](https://hackmd.io/_uploads/ryZxd12z-e.png) * 指定搜尋範圍為最近 24 小時 * 把「今天日期」用 workflow 內建變數動態帶入,避免模型誤判日期而抓到過舊新聞 * 指定優先關注的組織(如 OpenAI、Anthropic、Google、Meta、Mistral、xAI、Hugging Face 等)以加強方向性 ## Perplexity 的 Recency Filter 設定 ![image](https://hackmd.io/_uploads/BycGOkhzZe.png) * 使用 Perplexity 提供的 recency filter,限制搜尋在「day」等級的最新範圍 ## 節點測試與 Pin Data 的成本控制 ![image](https://hackmd.io/_uploads/Sk7ruknf-l.png) * Perplexity 輸出包含 citations、搜尋結果與自然語言摘要內容 * 為避免重複測試耗用 API token,示範會把 Scheduled Trigger 與 Perplexity 節點的輸出 pin 起來 --- ## 加入 Formatter/Checking Agent 的目的 * 在 Perplexity 產生每日 AI 新聞後,再用 OpenAI 節點做「去重+格式化」 * 主要避免同一則大新聞在不同天或同一天被重複報導而反覆寄出 * 透過比對 Google Sheets 的歷史新聞紀錄(news log)來移除重複項目 ## OpenAI 節點設定重點 ![image](https://hackmd.io/_uploads/BJ7cO1hfWe.png) * Perplexity 節點輸出會成為 OpenAI 節點輸入 * Resource 選 text,Operation 選 message and model * 模型可選 GPT-4 等級作為檢查與整理用途 * 將節點重新命名為 news checking agent 方便辨識 ## User Prompt 的內容結構 ![messageImage_1765697718895](https://hackmd.io/_uploads/BJwTd1hfWl.jpg) * 先貼入「Perplexity 今日新聞清單」作為原始輸入內容 * 要求交叉比對 past AI news log sheet 並移除重複新聞 * 要求每則新聞提供 1–2 句精簡摘要 * 每則摘要後附上完整來源 URL * 使用粗體標示公司名稱或重大更新 * 每則新聞之間留空行提升可讀性 * 若 Perplexity 全部都是重複,回覆「過去 24 小時無重大 AI 新進展」類似訊息 ## System Prompt 的用途 ![image](https://hackmd.io/_uploads/S1weYknfWx.png) * 定義角色為 AI news formatter,負責處理、檢查、清理 Perplexity 結果 * 明確要求在需要時使用 Google Sheet 工具查 past AI news log 以避免重複 ## 在 Checking Agent 加入 Google Sheets Tool ![image](https://hackmd.io/_uploads/By2zK12zbl.png) * Tool description 設為 automatically,讓模型自行決定何時呼叫 * Resource 指向 sheet within document * Operation 選 get rows,用來讀取歷史紀錄而不是修改 * 在 Google Sheets tool 選取文件與工作表(例如 past AI news log → Sheet1) * 將工具重新命名成 past AI news log,讓提示詞中的工具名稱能對上 ## 建立 Past AI News Log 試算表結構 ![image](https://hackmd.io/_uploads/HyG7KJnzbx.png) * 建立一份 Google Sheet 文件命名為 past AI news log * 欄位設計為兩欄:date、headlines * date 記錄日期,headlines 記錄當日新聞摘要內容(或整理後內容) ## Checking Agent 產出格式化結果 ![image](https://hackmd.io/_uploads/H1ZBtynfZe.png) * 節點執行時會先讀取 news log(若為空則不會去除任何項目) * 輸出為已清理、已格式化的新聞清單 * 可在提示中加入規則要求「純文字輸出」與固定開頭句式 * 例:開頭加上「Here’s today’s AI development news. Today is {{today}}」 ## 為何 Gmail 用「後續節點」而不是「AI Tool」 ![messageImage_1765697880375](https://hackmd.io/_uploads/S1dwYk2MWe.jpg) * Gmail 作為 AI agent 的 tool:模型可自由決定用不用,可能誤用或漏用 * Gmail 作為 workflow 後續節點:每次 workflow 跑到該節點就一定會寄信 * 適合每日固定寄送摘要的場景,確保行為穩定可預期 ## Gmail 節點設定方式 ![image](https://hackmd.io/_uploads/SJ3Bcynz-g.png) * 操作選 send message * 收件者固定填同一個 email(每日寄送) * Subject 固定填 daily AI news digest * Email type 選 text * Message 欄位拖入 checking agent 的輸出 content ## 關閉 Gmail Attribution * Gmail 節點 Options 中找到 append attribution 並關閉 * 避免信件尾端出現「sent automatically by n8n」類似字樣 ## 把今日新聞寫回 News Log 的原因 * 讓隔天 checking agent 有資料可比對,避免重複寄送同一批新聞 * 每天跑完一次就把當日結果追加到 log,累積成歷史資料庫 ## 新增 Google Sheets「Append row in sheet」寫入 Log ![messageImage_1765698176800](https://hackmd.io/_uploads/SyZ55yhGZg.jpg) * 新增 Google Sheets 節點,操作選 append row in sheet * Document 選 past AI news log(也可用 ID/URL 綁定) * Sheet 選 Sheet1 * date 欄位拖入 today 變數 * headlines 欄位拖入 news checking agent 的 content 輸出 * 執行後會寫入下一個空白列,逐日累積紀錄 ![image](https://hackmd.io/_uploads/ByeRqJ2zZg.png) --- ## 每日 AI 新聞流程的「避免重複」機制 ![image](https://hackmd.io/_uploads/rkeJjy3zWe.png) * Perplexity 研究代理每天搜尋最新 AI 新聞 * 另一個新聞檢查代理會把新抓到的標題與 Google Sheet 既有紀錄比對 * 只把未出現過的標題送去 Gmail * 每天寄出後再把當天標題寫回 Google Sheet,供隔天比對 ## 流程可替換的元件 * Perplexity 只是搜尋工具選項之一,可換成其他搜尋或 LLM 服務 * OpenAI/Chat Model 可替換成其他模型供應商 * 通知管道不一定要 Gmail,可改成 Telegram、Slack 等常用平台 # Workflow 8:Fun Slack use case - Let AI do your job ![image](https://hackmd.io/_uploads/H1eGoknzWg.png) ## Slack 讓 AI 代回覆的前置:OAuth 權限調整 ![image](https://hackmd.io/_uploads/SJVK61nfbl.png) * 需要在 Slack API 調整 OAuth scopes 才能「以使用者身分」回覆 ![image](https://hackmd.io/_uploads/rkycpynzbl.png) * 除了 bot token scopes,還要到 user token scopes 增加必要權限 * 依使用情境加入讀取頻道、群組、私訊等訊息歷史與讀取權限 ![image](https://hackmd.io/_uploads/BJGipk3fZl.png) * 需要新增 chat.write.customize 以允許用指定身分送出訊息 * scopes 更新後需要重新安裝 app(reinstall)讓權限生效 ![image](https://hackmd.io/_uploads/SJS3ay2zZx.png) * 取得 user OAuth token,回到 n8n 建立新的 Slack credential 並貼上 token ## Slack Event Subscriptions 設定 ![image](https://hackmd.io/_uploads/rk33aynGbg.png) * 開啟「代表使用者訂閱事件」的事件訂閱 * 加入事件類型以涵蓋常見場景:message.channels、message.groups、message.im、message.mpim * 文件可查各事件與權限的對應關係 ## n8n Slack Trigger 的改法 ![image](https://hackmd.io/_uploads/rJ9Aak3fZe.png) * 觸發事件從「bot/app mention」改成「任何事件」以捕捉私訊與更多互動 * 開啟監看整個 workspace,讓任意訊息都能觸發 workflow * 設定忽略自己的訊息,避免自己回覆又觸發造成迴圈 ![image](https://hackmd.io/_uploads/HJhg0knzWg.png) * 取得自己的 Slack member ID:從個人檔案選單複製 member ID,貼到 ignore 欄位 ## 測試用 Workspace 與帳號安排 * 建立一個測試 workspace * 準備兩個帳號:一個當自己、一個當同事,用來測 direct message 的觸發與回覆 ## AI Agent 的系統訊息與模型選擇 ![image](https://hackmd.io/_uploads/H1oM0k2fWx.png) * 在 agent 加入 system message,描述要以某個身分回覆、語氣自然友善、符合職場對話 ![image](https://hackmd.io/_uploads/Hy_VCk2Mbl.png) * 切換 chat model(示範改成 GPT-5)以提升處理複雜問題與工具使用的表現 * 保留 simple memory 以維持對話上下文 ## Slack Send Message 節點的兩個關鍵改動 ![image](https://hackmd.io/_uploads/B1OLC1nfZe.png) * channel ID 改成動態值,才能回覆到實際觸發來源(頻道/群組/私訊) * 啟用 send as user,並填入自己的 username,讓訊息看起來像本人發出 ## 實際觸發與回覆示範行為 ![image](https://hackmd.io/_uploads/ByKFCk3MZl.png) * workflow 進入等待事件狀態後,從另一帳號傳訊即可觸發 * agent 會生成回覆並送回 Slack * 回覆可能帶入工作情境或自行加料,代表 system prompt 仍可再收斂 ## 為回覆補上下文:加入簡單 RAG ![image](https://hackmd.io/_uploads/SkDi0yhzZg.png) ![image](https://hackmd.io/_uploads/Syr30J3zWx.png) * 新增一個 Google Docs 節點作為工具(get operation)讀取專案狀態文件 ![image](https://hackmd.io/_uploads/HJAnRy2f-g.png) * 在 system prompt 加上規則:被問到專案更新時使用 Google doc 工具 ![image](https://hackmd.io/_uploads/B131ke3fbg.png) * 當對方問專案進度,agent 會先讀文件再回覆,能引用文件內的進度與 ETA * 回覆資訊可正確但語氣仍偏機械,需再用 prompt 調整表達方式 ## 這類 Slack + RAG 的可用場景 * 可做內部 FAQ、技術支援、HR/法務/行銷/客服等知識回覆型機器人 * 重點在於熟悉 Slack 權限、事件訂閱、動態回覆通道、以及工具取用知識的流程 --- # Slack Setup Intro ![image](https://hackmd.io/_uploads/BkGfkenz-x.png) ## Slack 觸發:On bot app mention ![image](https://hackmd.io/_uploads/Sk0Syx3G-x.png) ![image](https://hackmd.io/_uploads/rkvukxnfZx.png) ![image](https://hackmd.io/_uploads/By1iJx3zWe.png) * 在 n8n 選 Slack 觸發器並用「On bot app mention」 ![image](https://hackmd.io/_uploads/rJFn1e3zZl.png) * 建立/重建 Slack 憑證,命名後貼入 key 並儲存 * 看到 Connection tested successfully 代表連線成功 ## Slack App 設定:Event Subscriptions 與 Request URL ![image](https://hackmd.io/_uploads/SyYrxxhGZe.png) * 到 Slack App 的 API 設定頁進入 Event Subscriptions * 將 Event Subscriptions 切換為 On * Request URL 從 n8n 的 webhook URLs 取得 ![image](https://hackmd.io/_uploads/HJVUlehfZg.png) * 測試階段用 Test URL,正式上線用 Production URL ## Challenge 驗證失敗的原因與處理 ![image](https://hackmd.io/_uploads/r1hDlenfWg.png) * 貼上 Request URL 後若出現「URL didn’t respond with challenge」 * 需要回到 n8n 的 Slack trigger 先設定要監聽的 channel * 在 n8n 先 Execute step 讓 workflow 進入監聽狀態 * 回到 Slack API 頁面按 Retry,成功後會顯示 Verified ## 設定要訂閱的 Bot Events ![image](https://hackmd.io/_uploads/HyHuxe3GWg.png) * 在 Subscribe to bot events 加入 app_mention / at mentioned 事件 * 儲存變更後,Slack 才會在被提及時送事件到你的 webhook ## 把 Slack App 加入要監聽的 Channel ![image](https://hackmd.io/_uploads/rkXtxl2GWx.png) * 到目標 Slack channel 的 Members/Integrations 區 * 將你的 bot app 加入該 channel * 未加入 channel 時即使訂閱事件也可能收不到觸發 ## 測試觸發:在 Slack 提及 Bot ![image](https://hackmd.io/_uploads/H1RFlg2GWg.png) * 在 n8n 的 Slack trigger 按 Execute step 等待事件 * ![image](https://hackmd.io/_uploads/Skd9lx2fbg.png) * 回 Slack channel 以 @bot 提及並輸入訊息(例如 hello) * n8n 會收到事件並看到 payload ## Slack Trigger Payload 常用資訊 * text/content:訊息內容(例如 hello) * user ID:發訊者識別 * channel ID:所在頻道識別 * event timestamp:事件時間戳 * 其他欄位依 Slack 事件類型可能更多 ## 加入 AI Agent 讓 Slack 變成可對話機器人 ![image](https://hackmd.io/_uploads/Hy1nlenfWe.png) * 在 Slack trigger 後接 AI Agent ![image](https://hackmd.io/_uploads/HJOnlx3M-e.png) * 在 AI Agent 的輸入用 define below * 從 Slack payload 拖入 text/content 作為 user message * 加上 chat model(示範選 gpt-4 mini) * 加上 memory 以保留上下文 * session ID 可用 channel ID,讓同一個 channel 對話能延續脈絡 ## Slack 回覆:Send message 節點 ![image](https://hackmd.io/_uploads/HyXTxx2zZe.png) * 在 AI Agent 後接 Slack node * Resource 選 message,Operation 選 send * 目標選 send message to channel * Channel 可用 list 選,也可用 by ID ![image](https://hackmd.io/_uploads/S1dAllnMZe.png) * Channel ID 可在 Slack channel 詳細資訊中複製(例如 C099…) ## 把 AI Agent 回覆內容塞進 Slack Message Text ![image](https://hackmd.io/_uploads/BJUkbghz-e.png) * 先執行前面節點取得 AI Agent 的輸出 * 將 AI Agent 的回覆欄位拖入 Slack node 的 message text * 執行後回 Slack channel 可看到 bot 回覆內容 ## 關閉 Slack 訊息附帶的 Workflow 連結 ![image](https://hackmd.io/_uploads/SJRlWl2z-g.png) * Slack send message 節點的 Options 內有 include link to workflow * 將其 toggle off 後再執行 * 回覆訊息就不會附上「automated with this workflow」之類的連結提示 --- # 5. HTTP Request Node 實戰應用 # Workflow 3:HTTP Request Node Demo - Calling API - Web Scraper & other Agentic Tools ## 以 HTTP Request 串接第三方工具的方式 * 可透過 API 呼叫、MCP、Webhook 把非原生工具接入 workflow * HTTP Request node 是最通用的整合方式,可重現 API 文件中的呼叫流程 * 常見情境包含不需驗證的公開 API、需要 API Key 的服務、以及需要非同步輪詢的服務 ## 範例一:無需驗證的公開 API(Cat Facts) ![image](https://hackmd.io/_uploads/HkESLehGWg.png) * 使用 Trigger Manual 作為起點,因為不需要輸入資料 * HTTP Request 選 GET * URL 指向公開端點(catfact.ninja/fact) * 執行後直接取得隨機貓咪事實並輸出成結構化資料 ## 範例二:需要 API Key 的天氣 API(OpenWeatherMap) ![image](https://hackmd.io/_uploads/SJX8Ix2zWg.png) * 依文件使用城市名稱查詢天氣資料(例如 London) ![image](https://hackmd.io/_uploads/HyYDIl3MWl.png) * 端點需要 API Key,初始做法可把 key 放在 URL query 裡 ![image](https://hackmd.io/_uploads/SkIF8e2GZx.png) * 建議做法是把 API Key 改用 Credential 管理,避免硬編碼且可重用 ## OpenWeatherMap:用 Credential 取代把 Key 寫在 URL * Authentication 選 Generic Credential Type * 選 Header Auth(示範概念是把 key 放在 header 管理) * 建立新 credential(命名例如 open weather map demo) * Name 填對應 header key(示範為 X-API-K) * Value 填 API key * 移除 URL 裡的 API key 後再次執行,輸出結果維持一致 * 後續新增同服務節點可直接選用相同 credential ## 範例三:呼叫 Web Scraper(Firecrawl Scrape) ![image](https://hackmd.io/_uploads/BJooUlnGWg.png) * Firecrawl 的 scrape 以 POST 呼叫 * 從文件複製 curl,使用 Import Curl 快速建立 HTTP Request 設定 ![image](https://hackmd.io/_uploads/ryl0Ienz-g.png) * JSON body 填入要抓取的目標網址(示範 TechCrunch 的 GenAI 區) ![image](https://hackmd.io/_uploads/B1t1DxhzZe.png) * Authorization 採 Bearer token,建議用 Header Auth credential 管理 * 關閉重複的手動 headers(避免同一欄位出現兩份) ![image](https://hackmd.io/_uploads/SJAxPx2fWe.png) * 執行後輸出包含頁面內容(示範以 markdown 呈現)與相關連結資訊 ## Firecrawl Extract:與 Scrape 的差異 ![image](https://hackmd.io/_uploads/HJDGvxnM-l.png) ![image](https://hackmd.io/_uploads/By8VwehM-x.png) * Extract 是 AI 驅動的結構化抽取,可針對單頁、多頁或整站抽取欄位 * 呼叫 Extract 會先送出 POST,服務端需要時間處理 * 需要再用 GET 依照 request/extract ID 取回結果 ## 非同步 API:POST 後等待再 GET 的基本流程 ![image](https://hackmd.io/_uploads/H1JwDg3Mbe.png) * 先執行 Firecrawl Extract POST 取得 request ID * 加入 Wait node 等待固定秒數(示範 30 秒) ![image](https://hackmd.io/_uploads/SkZ5wg3zZg.png) * 新增 HTTP GET request 以 request ID 查詢處理結果 * GET URL 的 ID 以 expression 動態帶入前一步輸出的 request ID ## 避免流程中斷:用 If + Loop 做輪詢 ![image](https://hackmd.io/_uploads/rkThPxhzZx.png)^ * GET 回傳會帶狀態欄位(示範 completed / in progress) * If node 判斷 status 是否等於 completed ![image](https://hackmd.io/_uploads/rkeAvx2M-g.png) * True 分支代表結果已完成,可往後續節點傳遞資料(例如寄信或寫入表單) ![image](https://hackmd.io/_uploads/ryU1_ghG-g.png) * False 分支代表尚未完成,接回 Wait 再等待一段時間後重新 GET * 透過 Wait → GET → If →(False 回 Wait)形成迴圈,直到 completed 才離開迴圈 ## 成本與測試操作 * 為避免測試時反覆消耗 API 額度,可在關鍵節點 pin data * 對於會計費或有速率限制的服務,pin data 有助於反覆調整下游節點不必重打上游 API --- # 6. AI 影音生成 Workflow # Workflow 4:Text to Image Generation Agent - Bytedance ![image](https://hackmd.io/_uploads/H1K-dg2zZx.png) ## 文字轉圖片 Workflow 目標與整體流程 ![messageImage_1765702661392](https://hackmd.io/_uploads/S17m2xnzZl.jpg) ![messageImage_1765702722649](https://hackmd.io/_uploads/H1-L2x3M-x.jpg) * 以 Chat Trigger 收到使用者的簡短圖片需求 * 交給「圖片提示詞生成 AI」把簡短需求改寫成更適合影像模型的 prompt * 用 HTTP Request POST 呼叫 Wspeed AI 的文字轉圖片模型建立生成任務 * Wait 等待一段時間後用 HTTP Request GET 查詢任務結果 * 用 If 判斷 status,未完成就進入等待迴圈,完成就把圖片連結送到 Gmail ## Chat Trigger:輸入圖片需求 * 使用 Chat Trigger 作為起點,讓使用者用一句話描述要生成什麼圖 * 範例輸入:生成一隻貓飛過彩虹圈 ## 圖片提示詞生成 AI:用 LLM 產生更有效的 prompt ![image](https://hackmd.io/_uploads/rkgche2G-l.png) * 使用 OpenAI Message Model node(重命名為 image prompt generation AI) * Model 選 GPT-4.1 * User input 直接接 Chat Trigger 的輸入文字 ![messageImage_1765702772449](https://hackmd.io/_uploads/BkVK2l3zbg.jpg) * 加一段 system message,要求只輸出清晰、具體、可直接丟給影像模型的 prompt * 執行後產生包含主體、場景、風格、光線等細節的 prompt ## Wspeed AI:POST 建立文字轉圖片任務 ![image](https://hackmd.io/_uploads/HJfnnenzWx.png) * 進 Wspeed AI 選 text-to-image 模型並開啟 API 文件 ![image](https://hackmd.io/_uploads/SJBa3g2MWx.png) * 複製 curl,用 Import Curl 建立 HTTP Request(POST) * Authentication 用 Generic Credential Type + Header Auth ![image](https://hackmd.io/_uploads/S1Z03ehf-g.png) * 建 credential 時,Header Name 用 authorization,Value 用 Bearer + API key * 關閉/移除節點內重複的手動 headers,避免與 credential 重複 * JSON body 的 prompt 欄位改接「圖片提示詞生成 AI」輸出的內容 * 執行 POST 後取得 request ID 與任務狀態 ## Wait:避免立刻 GET 導致結果未就緒 ![image](https://hackmd.io/_uploads/HJsJTe2MWg.png) * 加 Wait node(示範 15 秒)讓服務端有時間生成圖片 * 為節省成本,可 pin POST 的輸出資料避免重跑消耗額度 ## Wspeed AI:GET 查詢任務結果並取得圖片 URL ![image](https://hackmd.io/_uploads/HkLM6g2zWe.png) * 從 API 文件複製 get-result 的 curl,用 Import Curl 建立 HTTP Request(GET) * 將 URL 路徑中的 request ID 改成 expression,動態帶入前面 POST 的 request ID * Authentication 使用同一組 Wspeed header credential * 成功時從輸出中取得 image URL ## If + Loop:處理「尚未完成」避免 workflow 失敗 ![image](https://hackmd.io/_uploads/r1p5-WhMZe.png) * If node 判斷 GET 回傳的 status 是否等於 completed * True 分支代表完成,可往後續節點送出圖片連結 * False 分支代表仍在處理,接一個 Wait(再等 15 秒) ![image](https://hackmd.io/_uploads/BJOyM-hfZl.png) * False 分支的 Wait 之後再連回 GET 節點形成輪詢迴圈 * 迴圈會持續直到 status 變成 completed 才會走 True 分支 ## Gmail:把圖片結果送出 ![image](https://hackmd.io/_uploads/SJdp-Z2MZx.png) * Gmail Send a message node * Subject 可用固定文字加上 now 變數當時間戳 * Email body 放圖片 URL(純文字即可) * 最終收件者點連結即可查看生成圖片 --- # Workflow 5:Text to Video Generation Agent - Veo3 ![image](https://hackmd.io/_uploads/HyWVGZ2G-e.png) ## 目標與流程概覽 ![image](https://hackmd.io/_uploads/SkkbUz3MZl.png) * 建立文字轉影片(Text-to-Video)自動化流程,邏輯類似前一節文字轉圖片,但改用影片相關節點與模型 ![image](https://hackmd.io/_uploads/ryrb8MhfWx.png) * 從 Chat Trigger 接收影片需求規格,交給 Video Prompt Agent 產生更適合模型的影片提示詞 ![image](https://hackmd.io/_uploads/SkzzLzhf-e.png) * 使用 V3 系列文字轉影片模型(示範選 V3 Fast)產生影片,完成後把結果連結輸出(示範用 Gmail) ## 節點差異:Video Prompt Agent * 與文字轉圖片流程的差異主要在於 Video Prompt Agent 的 system prompt 已預先設定 * system prompt 的目的為把 Agent 設定成「影片生成提示詞工程師」,負責把使用者描述轉成更具體可用的影片 prompt * 使用者輸入會被改寫成具體場景描述(例如鏡頭感、氛圍、動作、光線等) ## 選模型與成本提醒 * 在平台的 Explore Models 篩選 Text-to-Video 類別並搜尋 V3 * V3 會看到兩個選項:V3 Fast 與一般 V3 * 示範選用 V3 Fast,但單次成本偏高(範例提到一次請求約 $3.20) * 品質不錯但仍可能偏 3D 感,若要更高擬真可改用一般 V3,成本更高 ## HTTP Request:POST 送出生成請求 ![image](https://hackmd.io/_uploads/rkqEIfhG-e.png) ![image](https://hackmd.io/_uploads/r1UIIMhfZg.png) * 從 API 文件複製整段 curl,回到工作流用 Import curl 快速建立 HTTP POST 節點 ![image](https://hackmd.io/_uploads/ryWP8M3GWe.png) * 使用先前設定好的通用認證/憑證(沿用同一組 header credential) ![image](https://hackmd.io/_uploads/rk8KIMnfZl.png) * 關閉 Send Headers(避免重複處理),重點調整 Send Body ![image](https://hackmd.io/_uploads/ByRFIf3Gbx.png) * 若 curl 匯入後參數對應錯誤,改用 Raw JSON Body,直接貼上 curl 的 JSON body ![image](https://hackmd.io/_uploads/H1wqLG2GZe.png) * 將 body 裡的 prompt 欄位改綁定為 Video Prompt Agent 的輸出內容 * 影片設定可調:aspect ratio、duration、是否產生音訊等 ## 等待與資料固定 ![image](https://hackmd.io/_uploads/B11hUf3M-g.png) * POST 成功後先等待 15 秒,因影片生成時間可能較長 ![image](https://hackmd.io/_uploads/rk7nIfnGZe.png) * 為避免重複花費,將 POST 回傳資料 Pin 起來,後續測試不用再打一次昂貴請求 ## HTTP Request:GET 輪詢取得結果 ![image](https://hackmd.io/_uploads/ry5pIM2zWx.png) * 從 API 文件複製 GET 的 curl,Import curl 建立 HTTP GET 節點 ![image](https://hackmd.io/_uploads/HJsR8M2zWe.png) * 將 URL 或參數中的 request ID 改為綁定「影片 ID」(由 POST 回傳) * 沿用相同認證設定 * 執行 GET 檢查狀態(status),直到完成 ## If + Loop:避免未完成就中斷 ![image](https://hackmd.io/_uploads/B1rgDz3MZe.png) * 加入 If 判斷 status 是否等於 completed * 若為 true(completed)就往下走到輸出節點 ![image](https://hackmd.io/_uploads/Hk2lvf2MWl.png) * 若為 false(未完成)就 wait 15 秒後回圈接回 GET 節點重試 * 形成輪詢迴圈,直到影片狀態完成才繼續 ## 輸出:用 Gmail 傳送影片連結 ![image](https://hackmd.io/_uploads/Hk1zPfhGWx.png) ![image](https://hackmd.io/_uploads/B1ImwMhfZl.png) * 設定發送訊息節點,內容包含「影片生成」與時間戳(now 變數) * 輸出僅傳影片結果連結(示範為 email 內的可下載連結) ![messageImage_1765709617509](https://hackmd.io/_uploads/BJlSPGnGWe.jpg) * 點擊連結下載並播放生成的影片 ## 其他模型與後續章節提到的方向 * 若覺得 V3 成本太高,可改用同平台的其他影片模型(文中提到如 runway、clingan、wan 等) * 下一節將做 Image-to-Video 工作流,補齊完整流程鏈(Text-to-Video、Image-to-Video) ---- # Workflow 6:Image to Video Generation Agent - Seedance & Telegram ![image](https://hackmd.io/_uploads/HJfKvz2M-l.png) ## 工作流目標與兩個必要輸入 ![messageImage_1765710247067](https://hackmd.io/_uploads/BJHnKMnGZg.jpg) ![messageImage_1765710274978](https://hackmd.io/_uploads/BJMAKMnMWg.jpg) * 建立 Image-to-Video 工作流,需同時提供「基礎圖片」與「影片生成文字需求」 * 因為需要多輸入與互動回覆,選用 Telegram 作為集中溝通介面 ## 觸發設計與整體流程 * 觸發來源可分兩段:先由 Google Drive 上傳圖片觸發,再由 Telegram 回覆文字需求觸發後續流程 * Google Drive 觸發後先通知 Telegram:已上傳圖片,請回覆想要的影片內容 * 使用者在 Telegram 回覆影片想法後,才進入影片 prompt 生成與呼叫影片模型 ## Google Drive Trigger 設定 ![image](https://hackmd.io/_uploads/B1fWcfnMWx.png) * 節點選 Google Drive,監控指定資料夾的變更(每分鐘檢查) * 監控條件設定為「檔案建立 / 上傳檔案」 * 測試事件(Fetch test event)可取得上傳檔案的輸出 payload * 重點欄位是可公開存取的圖片連結(webContentLink) * 測試期間需將資料夾/檔案權限調整為「知道連結者可存取」以確保流程可抓到圖片 ## Telegram 通知節點用途 ![image](https://hackmd.io/_uploads/HyLNcznzZl.png) * Google Drive 偵測到新圖片後,用 Telegram 節點「Send a Photo」把圖片與提示訊息傳到聊天室 * 訊息內容包含圖片本身與一段 caption,要求使用者提供影片生成想法 ## 建立 Telegram Bot 與取得 Token ![messageImage_1765710405648](https://hackmd.io/_uploads/ryN85G3f-l.jpg) * 在 Telegram 搜尋並開啟 BotFather(需確認官方藍勾) * 使用 /newbot 建立新 bot,依流程設定 bot 顯示名稱與 bot username * BotFather 會回傳 bot 連結與 API token ![image](https://hackmd.io/_uploads/ryh89G3fbl.png) * 在工作流建立 Telegram credential,貼上 token 測試連線成功(顯示綠色連線成功提示) ## 取得 Chat ID 的方式 ![image](https://hackmd.io/_uploads/HJVOcGhz-g.png) * 需建立 Telegram Trigger(On Message)暫時用來抓聊天室的 chat id ![image](https://hackmd.io/_uploads/BJ0YcM3Mbg.png) * 執行 Trigger 後,去與 bot 對話(先 /start,再發送測試訊息) ![image](https://hackmd.io/_uploads/rJD5qG3Gbg.png) * 在觸發回傳內容中找到 chat id,複製後回填到 Telegram 發送節點的 chat ID 欄位 * 因為後續都在同一個聊天室互動,所以 chat id 可直接固定寫死不必動態取得 ## 綁定圖片 URL 與通知文字 ![image](https://hackmd.io/_uploads/rJM65MnMWx.png) * Telegram 發送照片的 photo 欄位綁定 Google Drive Trigger 回傳的 webContentLink * caption 內容設計為:告知已上傳圖片,請使用者回覆想生成的影片描述(以此圖片為基礎) ![messageImage_1765710542017](https://hackmd.io/_uploads/rJ-1sMhMZe.jpg) * 測試執行後,Telegram 會收到正確圖片與提示文字,確認第一段流程完成 --- ## 用 Google Sheets 做 Image Log(Append Row) ![image](https://hackmd.io/_uploads/HyLQif2zWx.png) * 新增 Google Sheets 節點並選擇「Append row in sheet」用來追加紀錄 * 節點可命名為 image log,表示這段是在記錄上傳的圖片資訊 ![image](https://hackmd.io/_uploads/BkQVif2zWg.png) * 先建立一個 Google Sheet 文件(例如 image to video log) * 試算表欄位設兩欄:image URL、date * 文件分享權限測試時可設為公開(至少可用連結檢視) ## 綁定目標試算表與工作表 ![image](https://hackmd.io/_uploads/S1IswVnGWl.png) * Document 從 list 選 image to video log * Sheet 選 Sheet1(範例只有一個工作表) * 節點會自動讀取欄位並顯示 image URL、date 兩個欄位可對應 ## 欄位對應方式 * image URL 欄位拖入 Google Drive trigger 的 webContentLink * date 欄位拖入 now 變數作為上傳/建立時間 * 執行 Execute step 後會把一筆新紀錄寫入下一個空白列 ## 切換到 Video Prompt Agent(OpenAI Message and Model) ![image](https://hackmd.io/_uploads/r1chwVnGbx.png) * 接著新增 OpenAI 的 message and model 節點作為影片提示詞產生器 * 模型選 GPT-4.1 * 先執行 Telegram on message 取得使用者輸入的影片想法文字 ![image](https://hackmd.io/_uploads/HJFaw42G-x.png) * 將 Telegram 訊息文字拖入 OpenAI 節點的 user prompt ## Video Prompt Agent 的 System Prompt 兩個任務 ![image](https://hackmd.io/_uploads/HkhAD4nMZe.png) * 任務一:把使用者輸入改寫成更適合影片生成模型的有效 video prompt * 任務二:輸出必須分成兩個 JSON 欄位 * 欄位一是 prompt(string) * 欄位二是 image_url(string),提供給下游影片生成 API 使用 ## 讓 Agent 從 Google Sheets 取「最新圖片 URL」 ![image](https://hackmd.io/_uploads/BJpWdE2MWl.png) * 在 Video Prompt Agent 加入 Google Sheets tool * Tool 設定為 get rows,Document 指到 image to video log,Sheet 指到 Sheet1 ![image](https://hackmd.io/_uploads/rJdfdV3zZl.png) * 在 system prompt 明確要求從該 log 的最後一列抓取 image URL 當作 image_url * 工具可命名為 Google sheet log 讓提示詞與工具名稱一致 ![image](https://hackmd.io/_uploads/HJUX_N2Mbl.png) * 節點上可切換輸出為 JSON,確保下游可直接取 prompt 與 image_url ## 呼叫影像轉影片模型:HTTP POST(Cance v1) ![image](https://hackmd.io/_uploads/S12HdE2fbl.png) * 新增 HTTP request 節點,使用 import curl 匯入 POST 範例 ![image](https://hackmd.io/_uploads/Hk0m_N2GWg.png) * 選擇 image-to-video 模型(範例為 Cance v1) * Authentication 使用既有憑證,headers 可視情況關掉避免重複 * 將 body 內的 image URL 改成上一步輸出的 image_url * 將 body 內的 prompt 改成上一步輸出的 prompt * duration 可先用 5 秒測試,其他參數可之後再調整 * Execute step 成功會回傳 request/task ID ## 等待與輪詢:Wait + HTTP GET ![image](https://hackmd.io/_uploads/ByBuOE2zWe.png) * 加入 Wait 節點先等 15 秒,避免太快輪詢拿不到結果 * 新增 HTTP GET 節點,import curl 匯入 GET 範例 * 將 request ID 替換為 POST 回傳的 ID * Authentication 同 POST,headers 同樣可關掉 * 執行 GET 後查看 status(範例為 completed) ## 用 If 節點避免未完成就中斷 ![image](https://hackmd.io/_uploads/rJk9_42f-g.png) * 新增 If 節點判斷 status 是否等於 completed * 若 completed 走 true 分支進下一步 ![messageImage_1765718178517](https://hackmd.io/_uploads/HkQ3_N3Mbl.jpg) * 若未完成走 false 分支:再 Wait 15 秒後回到 GET 重新查詢 * 形成輪詢迴圈直到完成 ## 完成後用 Telegram Send Video 回傳結果 ![image](https://hackmd.io/_uploads/S1Pk9NhGZx.png) * 在 true 分支後新增 Telegram「Send a video」節點 * chat ID 可固定硬填或從 trigger 動態帶入 * video 欄位拖入輪詢結果中提供的影片輸出(通常是影片 URL) * Execute step 後 Telegram 會收到生成影片 --- # Quick Explainer for Subworkflows ## 單一工作表 vs 拆成兩個工作流的考量 ![messageImage_1765718591305](https://hackmd.io/_uploads/Hy1I9V3Gbl.jpg) * 全部放在同一個 workflow 方便一次看完整流程但較難除錯 * 拆成兩個 workflow 可分離責任並更容易定位問題 * 一個負責上傳圖片與記錄/通知,另一個負責收影片點子與生成/輪詢/回傳 --- # Google Vertex AI Explainer ![image](https://hackmd.io/_uploads/HypAZr2z-x.png) ## 目的與方式概覽 ![image](https://hackmd.io/_uploads/r171GHnzbx.png) * 說明除了透過 wavespeed 等平台,也能直接用 Google Cloud Vertex AI 呼叫 V3(文字轉影片) ![image](https://hackmd.io/_uploads/SyAkGHnG-x.png) * 以「先跑通 API」為目標,先用手動觸發節點驗證 HTTP POST/輪詢流程可正常運作 ## 建立工作流骨架 * 使用 Manual Trigger 節點先執行一次以產生流程輸入 * 新增 HTTP Request 節點並選擇 POST 方式呼叫 Vertex AI 端點 ## Vertex AI 端點設定(Project ID / Model ID) ![image](https://hackmd.io/_uploads/H1aXMShz-e.png) * 從 Vertex AI 文件的 Sample Request 複製簡化版 endpoint URL ![image](https://hackmd.io/_uploads/r1irMHnf-e.png) * 端點需要替換兩個值:Project ID 與 Model ID * Project ID 從 Google Cloud 專案儀表板取得(不是 project number) * Model ID 從文件列出的型號中選用(示範用 VO3 Fast generate 01) ## Google OAuth 認證設定 ![image](https://hackmd.io/_uploads/BJq8MB2GWl.png) * 認證方式改用 Predefined Credential Type:Google OAuth(非一般 API Key header) ![image](https://hackmd.io/_uploads/HJTPGH2Mbg.png) * 在工作流憑證中建立 OAuth,需填入 Client ID 與 Client Secret ![image](https://hackmd.io/_uploads/SJ4uGrnGWl.png) * Redirect URL 需與 Google Cloud Console 中授權的 redirect URL 一致 * 需加入 scope,讓 token 有權限呼叫 Vertex AI 相關 API ![image](https://hackmd.io/_uploads/S1_Fzr2G-g.png) * 在 Google Cloud Console 啟用 Vertex AI API 後,於工作流進行 Google 登入授權並連線成功 ## POST Body(JSON)與生成參數 ![image](https://hackmd.io/_uploads/S1oqfSnGWg.png) * HTTP Request 的 Body 選用 JSON body * 從文件的簡化 JSON body 複製貼上作為起始範本 ![image](https://hackmd.io/_uploads/BJm2MS2zWg.png) * 可在 JSON 設定 prompt、sample count、aspect ratio、duration 等 * 若不設定 storageUri(GCS bucket),結果會以 Base64 回傳到工作流節點 * 示範移除 storageUri,改用回傳 Base64 以便在流程內轉檔下載 ## 等待與輪詢取得結果(Long-running Operation) ![image](https://hackmd.io/_uploads/SyF3MH3MZg.png) * POST 送出後先 Wait 15 秒,避免太早輪詢取不到結果 ![image](https://hackmd.io/_uploads/SkfymrnMZg.png) * 新增另一個 HTTP Request(同為 POST)呼叫「poll long-running operation」端點 * 輪詢請求只需帶入 operation name 並使用相同 OAuth 認證 ## 錯誤處理:影片時長限制 * 輪詢回傳錯誤指出不支援 5 秒影片時長 * Text-to-Video 支援的 duration 為 8 秒(示範改成 8 後再重跑) ## Base64 結果與大資料量 ![image](https://hackmd.io/_uploads/BkUF7rnfbx.png) * 輪詢成功後回傳資料量很大(示範顯示約 6MB),瀏覽器可能短暫變慢 * 因未指定輸出 bucket,回傳內容包含 Base64 影片資料 ## If Loop:確保完成才往下走 ![image](https://hackmd.io/_uploads/H1V5XH2zbl.png) * 加入 If 判斷狀態欄位(boolean)是否完成 * True 分支往後處理輸出 ![messageImage_1765720989539](https://hackmd.io/_uploads/SyTsXrhGbx.jpg) * False 分支 Wait 15 秒後回圈再 poll,直到完成 ## 轉檔與下載(Base64 → 檔案) ![image](https://hackmd.io/_uploads/SJUGmB2zbx.png) * 使用 Set/Edit Fields 節點把 Base64 輸出存成字串欄位(例如 B64) * 使用 Convert File 節點將 Base64 字串轉成檔案 * 產出檔案後可直接下載,下載的檔案即為生成影片(示範播放成功且包含音訊) ## 平台對比與使用情境差異 ![messageImage_1765721030175](https://hackmd.io/_uploads/SkU0XBnMZe.jpg) * 直接用 Vertex AI 需要處理 OAuth、scope、API 啟用、端點與輪詢流程 * VO3 成本高但品質與音訊表現佳 * 使用 wavespeed 等平台可用同一套介面接多種模型,減少各家 API/憑證設定成本 --- # 7. n8n 架構進階與部署選擇 # Self-Hosting Vs Building on n8n Cloud ![image](https://hackmd.io/_uploads/r1SeEHhG-l.png) ## n8n Cloud vs Self-host:取捨重點 ![messageImage_1765721122634](https://hackmd.io/_uploads/S1ZENHnf-g.jpg) * Cloud:註冊就能用,不用管 Docker、維運、更新與資安修補 * Cloud:有官方支援與可用性監控,但需訂閱費、環境掌控度較低、資源受平台限制 * Self-host:環境與資源可完全自訂,能放在內網或特定地區,與內部工具/資料庫整合更彈性 * Self-host:可能更省成本,但需自己維護伺服器、更新 n8n、處理安全性與故障排除 --- # Workflow 7:Calling Subworkflows ![image](https://hackmd.io/_uploads/ryxDVShMbl.png) ## nitn Cloud 與自架取捨 ![messageImage_1765722991063](https://hackmd.io/_uploads/H1CdoHhz-x.jpg) ## 為什麼要用 Sub Workflow 拆分 * 原本 Image-to-Video 工作流把兩個 Trigger 放在同一條流程,出錯時需要來回查兩段,除錯不直覺 * 透過拆成「主工作流 + 子工作流」,可以把責任分段,錯誤更容易定位與迭代 ## 主工作流的職責(Google Drive → Telegram 通知 → 記錄) * Trigger:Google Drive 偵測資料夾上傳圖片 * 立刻用 Telegram 傳圖片與提示,要求使用者提供影片想法 * 將圖片 URL 寫入 Google Sheet 作為後續流程要抓取的最新圖片來源 ## 主工作流新增 Execute Subworkflow 節點 ![image](https://hackmd.io/_uploads/SJ-KhS3Gbx.png) * 在寫入 Google Sheet 之後加入 Execute Subworkflow 節點 * 需要先建立另一個工作流(子工作流),主工作流才能在清單中選到它 * 主工作流被觸發後,會在指定節點呼叫子工作流接續處理 ## 子工作流的 Trigger 改成「Executed by another workflow」 ![image](https://hackmd.io/_uploads/B1rYnrnMZx.png) * 子工作流不再用原本的 Telegram on message 觸發 * Trigger 改為「Executed by another workflow」,代表由主工作流呼叫才會啟動 * 被主工作流觸發的子工作流不需要啟用發布也能運行(依平台顯示為不需 activation) ## 主→子資料傳遞模式:Accept all data ![image](https://hackmd.io/_uploads/H1athB3Mbg.png) * 子工作流可設定輸入資料模式為 Accept all data * 子工作流執行紀錄可看到從主工作流帶過來的 payload ![image](https://hackmd.io/_uploads/Sk122rhGWl.png) * 實際能帶過來的欄位取決於主工作流前一節點輸出內容(示範只帶 image URL 與 date) ## 主→子資料傳遞模式:Define using fields below ![image](https://hackmd.io/_uploads/SyfThSnfbl.png) * 改用 Define using fields below 可只傳指定欄位,控制子工作流的輸入結構 * 只定義 image URL 時,子工作流 payload 就只會有 image URL,不會包含 date * 定義欄位但主工作流沒傳值時,子工作流會收到空值欄位(示範看到欄位存在但內容為空) ## 子工作流加入 Telegram「Send message and wait for response」 ![image](https://hackmd.io/_uploads/SkmGpH3zWe.png) * 子工作流內新增 Telegram 節點,改為詢問並等待使用者回覆影片想法 * chat id 可直接沿用固定值硬編碼,或改成由主工作流傳入以支援多聊天室 ![messageImage_1765723618738](https://hackmd.io/_uploads/SyZeCS2Gbl.jpg) * 使用者在 Telegram 提交回覆後,子工作流取得自由文字輸入作為後續提示詞生成素材 ## 串接 Video Prompt Agent 的輸入輸出 ![image](https://hackmd.io/_uploads/rkI-RHhz-x.png) * 將 Telegram 回覆文字綁到 Video Prompt Agent 的 user prompt * system message 目的仍是把使用者想法整理成可用的影片生成 prompt * Agent 輸出要求包含 JSON:生成的 prompt + 從 Google Sheet 取得的 image URL ## 子工作流後段維持原 Image-to-Video 生成邏輯 * 使用 prompt + image URL 呼叫影片模型的 POST API(示範提到 Cance / wavespeed 等) * Wait 15 秒後進行 GET 取得狀態與結果 * 用 if loop 判斷未完成就等待再輪詢,完成後把影片結果回傳 Telegram ## 拆分後的執行體驗與除錯差異 * 主工作流負責「圖片事件與通知、記錄、呼叫子流程」 * 子工作流負責「收集文字需求、生成 prompt、呼叫模型、輪詢、回傳結果」 * 分成兩條後可分別看主/子流程各自的 execution logs,更容易定位哪段出錯與重跑驗證 ---- # Self-Hosting Locally With Docker Desktop and Ollama ## 目標:用 Docker Desktop 在本機自架 n8n ![image](https://hackmd.io/_uploads/S1a1JUnM-e.png) * 透過 GitHub 的 n8n-io/self-hosted-ai-starter-kit 快速建立本機環境 * 這個 starter kit 會一起拉起必要元件(例如 Postgres、Qdrant、n8n、Ollama) * 本機預設用 localhost:5678 存取 n8n ## 本機前置需求 ![image](https://hackmd.io/_uploads/rygbJU3M-e.png) * 安裝 Docker Desktop(從 docker.com 下載) * 安裝 Git(用來 clone repo) * 確認你知道自己的平台(範例是 Mac) ## 本機安裝流程(Mac 範例) ![image](https://hackmd.io/_uploads/B1JQy8nG-l.png) * 到 GitHub 打開 self-hosted-ai-starter-kit 文件並找到 Mac 對應步驟 * 在終端機執行 git clone 下載 repo * cd 進 repo 資料夾 * 建立/複製環境檔(.env) * 依平台選對 docker compose 指令 * Apple Silicon / CPU 情境使用對應的 compose(範例使用 CPU 版本) * 第一次啟動會下載映像:Postgres、Qdrant、n8n、Ollama 等 ## 本機啟動後如何驗證 ![image](https://hackmd.io/_uploads/B1AXyUhGZx.png) * 瀏覽器開啟 localhost:5678 * 第一次進入會要求註冊帳密(本機環境可用任意 email/password) * repo 通常會附一個 demo workflow,可直接打開測試 ## Demo workflow 與 Ollama 測試 * demo workflow 是基本 LLM chain(Ollama chat model) * 若流程需要 fallback model,就再加一個 Ollama model 當 fallback * 在測試輸入框輸入訊息後執行,應可得到模型回覆 * 回覆代表 n8n 與 Ollama 都在本機容器中正常運作 ## Docker Desktop 觀察重點 ![image](https://hackmd.io/_uploads/B1tEJL2z-l.png) * Docker Desktop 會看到一組 container stack 在跑 * stack 內包含 Postgres / Qdrant / n8n / Ollama * 若停止 container,n8n 網頁會顯示連線中斷,代表完全依賴容器運行 * Images 可查看/下載映像版本 * Volumes 代表持久化資料位置(帳密、資料庫等會存這裡) ## 需要調整設定時的入口 ![image](https://hackmd.io/_uploads/rJsOk83GZe.png) * 可直接編輯 docker-compose 或相關設定檔 * 常見調整方向:帳號持久化、資料持久化、port 對應、cookie/安全設定等 --- # n8n Hosted on AWS EC2 ![image](https://hackmd.io/_uploads/SJkLxL3Gbe.png) ## 目標與環境來源 ![image](https://hackmd.io/_uploads/r1X8eI2G-x.png) * 目標是在 AWS EC2 上用 Docker 部署 nitn * 透過 CodeCloud playground 啟動 AWS sandbox,取得 AWS Console 登入資訊 ## 進入 AWS Console 與建立 EC2 ![image](https://hackmd.io/_uploads/ry28e8hMbx.png) ![image](https://hackmd.io/_uploads/S1cvlU2zWe.png) * 從 playground 複製 AWS Console 登入連結、username、password 登入 ![image](https://hackmd.io/_uploads/rkuOgI3M-e.png) * 進入 EC2 → Instances,選 Launch instance 建立新主機 * 命名 instance(示範 nan-demo),AMI 選 Ubuntu * Instance type 選 t2.medium(考量後續會拉較大的套件/模型) ![image](https://hackmd.io/_uploads/ry4Yx82GZe.png) * 建立 key pair(RSA、.pem)並下載到本機 * Network 設定暫時允許 SSH from anywhere * Storage 調整到 30GB ## Security Group 與入站規則 ![image](https://hackmd.io/_uploads/HkBoxUhfWe.png) * 到 Instance 的 Security groups 設定 inbound rules * 保留/確認 SSH(22)可連線 * 新增自訂 TCP port 5678(nitn 預設埠),來源允許 anywhere * 儲存規則後再進行連線與測試 ## SSH 連線到 EC2 ![image](https://hackmd.io/_uploads/H1iixL3fZe.png) * 對下載的 .pem 執行 chmod 400 ![image](https://hackmd.io/_uploads/Hk22xUnf-x.png) * 使用 ssh -i 連線到 Ubuntu@Public IPv4 * 第一次連線會提示 host authenticity,輸入 yes 繼續 ## 在 EC2 安裝 Docker 與 Docker Compose v2 ![messageImage_1765724374870](https://hackmd.io/_uploads/BkLkbInzZg.jpg) * 更新系統套件後安裝 Docker * 啟用 Docker 服務並調整使用者群組權限(讓使用者可執行 docker) ![image](https://hackmd.io/_uploads/r1nlZInMZl.png) * 安裝 Docker Compose v2 並用 docker compose version 驗證 ## 下載 self-hosted 套件並準備環境檔 ![image](https://hackmd.io/_uploads/ByNZ-82z-e.png) * git clone 專案 repo * 進入 self-hosted AI starter kit 目錄 * 複製 .env 範本建立環境檔 ## 環境設定調整(示範用) * 在 .env 加入設定將 secure cookie 關閉(示範為了避免部分安全限制影響存取) * 儲存後準備啟動容器 ## 啟動服務與確認容器狀態 ![image](https://hackmd.io/_uploads/S18zWU3M-g.png) * 執行 docker compose up(或對應啟動指令)拉取映像並啟動服務 ![messageImage_1765724447047](https://hackmd.io/_uploads/HJJNZU3MZl.jpg) * 用 docker ps 確認容器都在 running 狀態 ## 透過 Public IP 開啟 nitn * 從 AWS Console 複製 EC2 Public IPv4 * 瀏覽器輸入 http://<PublicIP>:5678 開啟 nitn * 第一次登入可用任意帳密建立初始登入(示範為無持久化既有帳密) ## 驗證功能與資源觀察 ![image](https://hackmd.io/_uploads/By_HbLhMbg.png) * 進入後看到與 nitn cloud 類似的 dashboard * 預設 demo workflow 會出現,並可看到與 Ollama 相關的預設模板(套件隨 repo 一起部署) * 在 EC2 介面可查看 instance usage,git clone/拉映像時資源使用會較明顯 --- # 8. 課程總結 ## 課程收尾重點回顧 * 從抽象概念(節點、Sub Workflow)到實作出可用的自動化工作流 * 練習用 HTTP Request 節點串接外部 API 與服務 * 建立 AI Agents 自動化真實任務(回信、研究、對話處理) * 文字/媒體輸入生成圖片與影片 * 用 Sub Workflows 把複雜流程模組化、可重用、易除錯 * 部署方式涵蓋雲端與自架(Docker、AWS EC2 等) * 介紹 RAG agents(向量資料庫如 Pinecone)讓自動化具備記憶/可查詢背景資料 * 使用 MCPs 在工作流中重用與擴充可組裝的能力模組 * 強調錯誤處理、重試策略、模板市集加速搭建 ## Lab Playground 與 nitn Cloud 的差異概覽 * Lab 進入時仍需填 email/姓名/密碼,但不會被保存,可每次用不同資訊 * Lab 有 onboarding 與付費提示可跳過,進入後介面接近雲端 Admin Dashboard * Lab 與 Cloud 在「金鑰/憑證設定」與部分功能可用性上有差異 ## Lab 使用 CodeCloud Keyspace 呼叫 OpenAI 模型 * 在節點選 OpenAI chat model 後,需依左側指引開啟 CodeCloud Keyspace 取得 API Key 與 Base URL * 建立 OpenAI credential 時需貼上 Keyspace API key,並把 Base URL 換成 Keyspace 提供的 Base URL * 用「Pick from list」時清單可能對不上常見 GPT 型號,容易造成執行錯誤 * 解法是改用「By ID」,手動填入指定格式的模型 ID(例如 OpenAI/GPT-4.1)才能正常呼叫 ## 直接使用 OpenAI 官方 API Key 的差異 * 建立 credential 時只需貼上 OpenAI API key,Base URL 保持預設即可 * 模型可直接從清單選擇,列表與可用型號對應較直覺 * 測試執行可直接看到節點呼叫到正確模型 ## Lab 使用 Gmail/Google 工具需自行建 OAuth(與 Cloud 不同) * nitn Cloud 常見情況可直接用按鈕以瀏覽器登入 Google 完成授權 * Lab 環境多數需要完整走 OAuth 設定流程才能連 Google 服務(Gmail/Sheets 等) ## Google Cloud Console 建立 Gmail OAuth 的步驟 * 在 Google Cloud Console 建立新專案(Google 以專案區分 OAuth 授權配置) * 啟用 Gmail API(未啟用會無法授權或呼叫) * 設定 OAuth consent screen(App name、支援信箱、External、聯絡資訊) * 在 Audience 加入 Test user(要授權使用的 Gmail 帳號) * 建立 OAuth client ID(Web application),填入 Lab 提供的 Authorized redirect URL * 取得 client ID 與 client secret,回到 Lab 的 Gmail credential 貼上 * 點「Sign in with Google」完成授權,可能出現「未驗證應用」警告但可繼續 * 授權完成後顯示 connection successful,即可在工作流中測試 Gmail 節點 ## Lab 範例:Email AI Agent 走通流程 * 從「Start from scratch」建立 Email AI agent 工作流,trigger 用 chat trigger * AI agent 不設 system prompt 也能跑通,但內容通常較簡單 * 測試指令示範:要求寄信到指定收件人,執行後可在 Gmail 收到發出的郵件 ## 其他環境差異提醒 * 自架或 Lab 可能與雲端版在社群節點、支援版本、部分功能上不同 * 遇到流程或功能落差時,常見原因是部署環境差異而非流程本身錯誤 --- # Terminology * AI Agent(AI 代理):可推理、使用工具並完成任務的智慧單元 * AI Playground(AI 遊樂場):可即時測試與產生 API 金鑰的操作介面 * AI 代理節點(AI Agent Node):整合模型、記憶與工具的核心智慧節點 * AI 代理節點(AI Agent Node):負責處理 Slack 訊息並生成回應的智慧節點 * AI 代理(AI Agent):可根據輸入與上下文自主決策並執行任務的智慧模組 * AI 代理(AI Agent):能夠理解指令、使用工具並做出決策的智慧節點 * AI 摘要生成(AI-driven Summarization):利用 AI 自動產生重點摘要的技術 * AI 擷取(AI-powered Extraction):利用 AI 理解網頁並抽取指定資訊 * AI 研究代理(AI Research Agent):負責搜尋、整理與分析外部資訊的智慧代理 * API 呼叫錯誤(API Error):請求失敗時回傳的錯誤狀態 * API 呼叫(API Call):透過 HTTP 協定與外部服務進行資料交換的請求行為 * API 啟用(API Enablement):允許專案使用特定 API 的設定 * API 啟用(API Enablement):允許專案使用特定 Google API 的必要設定步驟 * API 啟用(API Enablement):在 Google Cloud Console 中啟用特定服務的動作 * API 存取範圍(API Scope):定義 OAuth 權限可使用服務範圍的設定 * API 整合(API Integration):將第三方服務或系統功能串接進既有流程的方式 * API 整合(API Integration):透過 API 連接不同服務 * API 文件(API Documentation):描述 API 使用方式、參數與回傳格式的說明文件 * API 端點(API Endpoint):可被呼叫以執行特定功能的 URL * API 端點(API Endpoint):對外提供服務存取的特定 URL * API 配額管理(API Quota Management):控制與節省 API 使用量的策略 * API 金鑰(API Key):用於識別與授權 API 存取的憑證 * API 金鑰(API Key):用於識別與授權應用程式存取 API 的秘密字串 * API 金鑰(API Key):用於驗證並授權存取第三方服務的密鑰 * API 金鑰(API Key):用於驗證與授權 API 存取的憑證 * API 金鑰(API Key):用於驗證與授權模型或服務存取的秘密憑證 * API 金鑰(API Key):用於驗證與識別請求來源的憑證 * API 閘道(API Gateway):統一管理與轉發 API 請求的入口 * API 驗證(API Authentication):用於確認請求合法性的驗證機制 * API 驗證(API Authentication):確保請求合法性的身分驗證機制 * API 驗證(API Authentication):確認請求身分並授權存取的安全機制 * AWS EC2(Amazon Elastic Compute Cloud):Amazon 提供的彈性虛擬伺服器服務 * AWS 主控台(AWS Console):管理 AWS 資源的網頁介面 * App Mention 事件(App Mention Event):當使用者在頻道中 @ 機器人時觸發的事件 * Base64 編碼(Base64 Encoding):將二進位檔案轉為文字格式的編碼方式 * Base64 編碼(Base64 Encoding):將二進位資料轉換為文字字串的編碼方式 * Base64 轉檔(Base64 to File Conversion):將 Base64 字串還原為實際檔案的處理 * Bearer Token(Bearer Token):常見於 Authorization Header 的權杖格式 * Bearer Token(Bearer Token):常見於 Authorization Header 的權杖驗證格式 * Bot Events 訂閱(Bot Events Subscription):指定機器人要監聽的事件類型 * Bot Token(Bot API Token):Telegram 機器人用於 API 驗證的存取金鑰 * Bot Token(Bot Access Token):Telegram 機器人與 API 溝通的驗證金鑰 * Bot Token(Bot Token):Slack 機器人用來驗證與呼叫 Slack API 的金鑰 * Bot Token(Bot Token):Telegram 機器人呼叫 API 所需的驗證金鑰 * Bot 使用者(Bot User):Slack 中由應用程式建立的自動化帳號 * Bot 權限範圍(Bot Scope):限制 Slack 機器人可執行行為的權限集合 * BotFather(BotFather):Telegram 官方用於建立與管理機器人的工具 * BotFather(BotFather):Telegram 官方用於建立與管理機器人的服務 * BotFather(BotFather):Telegram 官方用於建立與管理機器人的服務 * CPU 模式(CPU Mode):不使用 GPU、僅以處理器執行模型的運行方式 * CURL 匯入(Import CURL):直接匯入 CURL 指令來建立 HTTP 請求 * Challenge 驗證(Challenge Verification):Slack 用來驗證 Webhook 是否有效的安全機制 * Chat ID(聊天識別碼):唯一識別 Telegram 對話或群組的 ID * Chat ID(聊天識別碼):唯一識別 Telegram 對話的數值 ID * Chat Trigger(聊天觸發器):以對話輸入啟動工作流的觸發方式 * Client ID(Client ID):OAuth 驗證流程中用於識別應用程式的公開識別碼 * Client ID(用戶端識別碼):OAuth 中標識應用的公開 ID * Client Secret(Client Secret):OAuth 驗證流程中用於交換存取權杖的私密金鑰 * Client Secret(用戶端密鑰):OAuth 中用於驗證應用的私密金鑰 * Code Key(Code Key):整合多模型存取的統一 API 金鑰服務 * Define Below 模式(Define Below):手動指定 AI 代理輸入來源的設定方式 * DevOps 整合(DevOps Integration):將自動化流程納入開發與維運管線 * DevOps 自動化(DevOps Automation):自動化部署、監控與維運流程 * Docker Compose v2(Docker Compose v2):新版 Compose 指令整合於 Docker CLI * Docker Compose(Docker Compose):用於定義與啟動多容器應用的工具 * Docker Compose(Docker Compose):用於定義與管理多容器應用的工具 * Docker Dashboard(Docker 儀表板):用於監控容器狀態的視覺化介面 * Docker Desktop(Docker Desktop):在本機執行與管理 Docker 容器的工具 * Docker Desktop(Docker Desktop):在本機執行與管理 Docker 容器的桌面工具 * Docker 安裝(Docker Installation):在伺服器上部署 Docker 引擎 * Docker 容器化(Docker Containerization):將應用與其依賴封裝成可移植容器的技術 * Docker 容器(Docker Container):映像檔執行後的獨立運行實體 * Docker 映像檔(Docker Image):用來建立容器的唯讀模板 * Docker(Docker):以容器化方式封裝與執行應用程式的平台 * EC2(Elastic Compute Cloud):AWS 提供的彈性虛擬運算服務 * Firecrawl(Firecrawl):支援智慧爬取與結構化擷取的網頁爬蟲工具 * GCS 儲存桶(GCS Bucket):Google Cloud Storage 用於存放檔案的儲存空間 * GET 方法(GET Method):用於查詢任務狀態或結果的 HTTP 方法 * GET 請求(GET Request):向 API 取得已存在資源或處理結果的請求方式 * GET 請求(GET Request):向 API 查詢任務狀態或結果的請求方式 * GET 請求(GET Request):向 API 查詢任務狀態或結果的請求方式 * GET 請求(GET Request):向外部服務查詢生成結果或任務狀態的請求方式 * GET 請求(GET Request):用於取得資源資料的 HTTP 方法 * GPT-4 模型(GPT-4):具備較強推理與語意理解能力的語言模型 * GPT-4.1 Mini(GPT-4.1 Mini):兼顧效能與成本的輕量級推理模型 * GPT-4.1 Mini(GPT-4.1 Mini):適合即時對話、成本較低的語言模型 * GPT-4.1(GPT-4.1):具備高理解能力、適合複雜提示生成的語言模型 * GPT-4.1(GPT-4.1):具備高階理解與生成能力的語言模型 * GPT-4.1(GPT-4.1):適合複雜理解與生成任務的語言模型 * GPT-5 模型(GPT-5):具備強化推理與工具使用能力的最新語言模型 * Git 儲存庫(Git Repository):用於版本控制與原始碼管理的倉庫 * GitHub 儲存庫(GitHub Repository):存放原始碼與設定檔的版本控制平台 * Gmail API(Gmail API):用於讀取與發送 Gmail 郵件的介面 * Gmail API(Gmail API):用於讀寫電子郵件的 Google 服務介面 * Gmail 工具(Gmail Tool):讓 AI 能讀寫 Gmail 信件的整合工具 * Gmail 節點(Gmail Node):用於寄送電子郵件的獨立工作流程節點 * Google API 整合(Google API Integration):在工作流中使用 Google 服務 * Google Cloud Console(Google Cloud Console):管理 Google 專案、API 與 OAuth 設定的平台 * Google Cloud Console(Google 雲端控制台):管理 Google API 與專案的入口 * Google Cloud 專案(Google Cloud Project):管理雲端資源與 API 權限的單位 * Google Docs API(Google Docs API):用於操作 Google 文件內容的介面 * Google Drive API(Google Drive API):用於存取與管理 Google Drive 檔案的介面 * Google Drive 觸發器(Google Drive Trigger):當雲端硬碟資料夾發生變更時自動觸發的事件節點 * Google Drive 觸發器(Google Drive Trigger):監控指定資料夾檔案變化並啟動流程的節點 * Google Drive 觸發器(Google Drive Trigger):監聽指定資料夾檔案變化以啟動工作流程的事件節點 * Google Gmail API(Gmail API):用於自動收發與管理電子郵件的介面 * Google Sheets API(Google Sheets API):用於讀寫 Google 試算表資料的介面 * Google Sheets 工具(Google Sheets Tool):供 AI 或流程查詢試算表資料的工具 * Google Sheets 工具(Google Sheets Tool):讓 AI 或流程讀取試算表資料的整合工具 * Google Sheets 日誌(Google Sheets Log):用於記錄流程歷史資料的試算表 * Google Sheets 節點(Google Sheets Node):用於讀寫試算表資料的自動化節點 * Google Sheets 記錄節點(Google Sheets Log Node):將資料寫入試算表以供後續讀取的節點 * Google 專案(Google Project):Google Cloud 中用於管理 API 與資源的邏輯單位 * Google 文件節點(Google Docs Node):存取 Google 文件資料的整合節點 * Google 試算表日誌(Google Sheets Logging):將結構化資料寫入試算表作為長期紀錄 * HTTP 節點(HTTP Node):在工作流中發送 HTTP 請求的功能節點 * HTTP 請求節點(HTTP Request Node):在工作流中直接發送 HTTP API 請求的功能節點 * HTTP 請求節點(HTTP Request Node):用於呼叫 REST API 的通用節點 * HTTP 請求節點(HTTP Request Node):用於呼叫外部 API 並傳送或接收資料的功能節點 * HTTP 請求節點(HTTP Request Node):用於呼叫外部 API 以提交或取得生成結果的節點 * HTTP 請求節點(HTTP Request Node):用於呼叫外部 API 的通用節點 * HTTP 請求節點(HTTP Request Node):用於呼叫外部 API 的通用節點 * HTTP 請求節點(HTTP Request Node):用於呼叫外部 API 的通用節點 * HTTP 請求節點(HTTP Request Node):用於呼叫外部 REST API 的通用節點 * HTTP 請求節點(HTTP Request Node):用於發送 GET、POST 等 HTTP 請求的核心節點 * HTTP 請求(HTTP Request):透過 HTTP 與外部服務通訊 * HTTP 請求(HTTP Request):透過標準網路協定呼叫外部服務的方式 * ID 指定方式(Select by ID):以唯一識別碼指定 Slack 頻道的設定方式 * JSON 回應(JSON Response):API 回傳的結構化資料格式 * JSON 格式(JSON Format):常見的結構化資料表示方式 * JSON 結構輸出(JSON Structured Output):以固定 JSON 格式輸出模型結果的設計 * JSON 結構輸出(Structured JSON Output):將模型結果以固定 JSON 格式輸出的設計 * JSON 請求主體(JSON Body):以 JSON 格式傳送的 API 請求內容 * JSON 請求主體(JSON Request Body):以 JSON 格式傳送模型參數的請求內容 * JSON 資料結構(JSON Data Structure):以鍵值對方式表示的結構化資料格式 * JSON 輸出格式(JSON Output Format):以結構化 JSON 形式回傳模型結果 * JavaScript 表達式(JavaScript Expression):用於動態資料綁定的運算語法 * LLM 可插拔架構(Pluggable LLM Architecture):可自由替換不同大型語言模型的設計 * MCP(Modular Capability Package):可被多個工作流共用的功能模組 * Markdown 內容(Markdown Content):以 Markdown 格式呈現的文字資料 * NOW 變數(Now Variable):代表當前時間的內建動態變數 * OAuth 2.0 憑證(OAuth 2.0 Credential):用於安全存取 Google Cloud API 的授權機制 * OAuth 2.0(OAuth 2.0):Google Cloud 用於安全授權的身份驗證協定 * OAuth 2.0(OAuth 2.0):用於安全授權第三方存取帳戶的標準協議 * OAuth 2.0(OAuth 2.0):第三方應用安全存取使用者資源的標準授權協定 * OAuth 2.0(OAuth 2.0):第三方授權與存取控制的標準協定 * OAuth 同意畫面(OAuth Consent Screen):使用者授權應用存取資料時顯示的介面 * OAuth 同意畫面(OAuth Consent Screen):使用者授權應用存取資料的介面 * OAuth 同意畫面(OAuth Consent Screen):使用者授權應用的介面 * OAuth 憑證(OAuth Credential):包含 Client ID 與 Client Secret 的授權設定 * OAuth 權限管理(OAuth Scope Management):控制應用可存取資源範圍的安全機制 * OAuth(OAuth):常見的第三方授權與存取控制協定 * Ollama(Ollama):用於在本地執行與管理 LLM 的服務工具 * OpenAI 節點(OpenAI Node):在工作流中用於呼叫大型語言模型的節點 * OpenAI 節點(OpenAI Node):在工作流程中呼叫 OpenAI 模型進行推理與生成的節點 * OpenAI 節點(OpenAI Node):專用於呼叫 OpenAI 模型的節點 * OpenAI 聊天模型(OpenAI Chat Model):由 OpenAI 提供的對話型語言模型服務 * OpenAI 訊息與模型節點(OpenAI Message & Model Node):用於呼叫語言模型的處理節點 * OpenAI 訊息與模型節點(OpenAI Message & Model):用於生成文字與結構化輸出的模型節點 * OpenAI 訊息與模型(OpenAI Message & Model):用於文字生成與結構化輸出的模型節點 * POST API 呼叫(POST API Call):向外部服務提交資料以觸發處理的請求方式 * POST 方法(POST Method):用於提交資料並建立任務的 HTTP 方法 * POST 請求(POST Request):向 API 傳送資料以啟動影片生成任務 * POST 請求(POST Request):向 API 傳送資料以建立任務的請求方式 * POST 請求(POST Request):向 API 提交資料以建立或觸發處理的請求方式 * POST 請求(POST Request):向伺服器送出資料的 HTTP 方法 * POST 請求(POST Request):提交生成任務或資料給外部服務的請求方式 * POST 請求(POST Request):用於提交資料並觸發後端處理的 HTTP 方法 * POST 請求(POST Request):用於提交資料並觸發處理的 HTTP 方法 * Perplexity 節點(Perplexity Node):用於即時搜尋與彙整新聞或知識內容的來源節點 * Perplexity 節點(Perplexity Node):用於即時網路搜尋與研究型查詢的 AI 節點 * Pinecone(Pinecone):常用於 RAG 架構的雲端向量資料庫服務 * PostgreSQL(PostgreSQL):開源關聯式資料庫管理系統 * RAG 架構(Retrieval-Augmented Generation):結合檢索系統與生成模型的 AI 架構 * REST 架構(REST Architecture):以資源為核心的 API 設計風格 * SSH 連線(SSH Access):透過安全通道遠端管理伺服器 * SSH(Secure Shell):安全遠端登入伺服器的通訊協定 * Sandbox 環境(Sandbox Environment):用於測試與學習的隔離雲端環境 * Slack API(Slack API):與 Slack 平台進行程式化互動的官方介面 * Slack 事件負載(Slack Event Payload):Slack 傳送給工作流程的完整事件資料 * Slack 使用者權杖(Slack User OAuth Token):代表使用者身份進行操作的授權權杖 * Slack 應用程式(Slack App):在 Slack 平台中建立、用於整合外部服務的應用 * Slack 機器人提及觸發器(On Bot App Mention):當 Slack 頻道中提及機器人時觸發工作流程的節點 * Slack 發送訊息節點(Slack Send Message Node):用來回覆訊息到 Slack 的節點 * Slack 頻道加入(Add App to Channel):將機器人加入指定頻道以接收事件 * Starter Kit(啟動套件):快速建立特定系統或應用的預設專案組合 * Telegram Bot(Telegram 機器人):用於接收與發送訊息、串接自動化流程的 Telegram 帳號 * Telegram Bot(Telegram 機器人):負責接收與發送 Telegram 訊息的自動化帳號 * Telegram 傳送影片(Telegram Send Video):透過 Telegram 推送影片的操作 * Telegram 回傳影片(Telegram Video Delivery):透過 Telegram 傳送生成完成的影片 * Telegram 憑證(Telegram Credential):在自動化平台中儲存並使用的 Telegram 驗證設定 * Telegram 憑證(Telegram Credential):在自動化平台中設定的 Telegram API 認證資訊 * Telegram 機器人(Telegram Bot):在 Telegram 平台上用於自動收發訊息的帳號 * Telegram 發送影片(Send Video):透過 Telegram 將生成影片回傳給使用者 * Telegram 發送照片(Send Photo):透過 Telegram 節點主動推送圖片訊息 * Telegram 訊息觸發器(Telegram On Message Trigger):當機器人收到訊息時啟動流程的節點 * Telegram 通知節點(Telegram Notification Node):在 Telegram 中主動推送訊息或媒體的節點 * UI 相容性(UI Compatibility):介面與底層功能匹配的程度 * URL 指定方式(Select by URL):透過 Slack 頻道網址指定目標頻道 * Ubuntu(Ubuntu):常用於伺服器的 Linux 發行版 * V3 Fast 模型(V3 Fast):以速度優先、成本較高的文字轉影片模型 * V3 文字轉影片模型(Veo / V3 Text-to-Video Model):Google 提供的高品質文字轉影片模型 * V3 模型(Veo 3 / V3):Google 提供的高擬真文字轉影片生成模型 * Vertex AI API(Vertex AI API):Google Cloud 提供的 AI 模型呼叫介面 * Vertex AI(Google Vertex AI):Google Cloud 上用於訓練、部署與呼叫機器學習模型的平台 * Vertex AI(Vertex AI):Google Cloud 提供的機器學習與生成式 AI 平台 * Volume(資料卷):Docker 中用於保存資料的儲存空間 * Web 爬蟲 API(Web Scraper API):透過 API 擷取網頁內容的服務 * Webhook URL(Webhook URL):Slack 用來傳送事件資料至工作流程的端點 * cURL 匯入(Import cURL):將 API 文件中的 cURL 指令直接轉換為工作流設定 * cURL 匯入(Import cURL):將 API 文件中的 cURL 指令轉換為節點設定 * cURL 匯入(Import cURL):將 API 文件的 cURL 指令轉換為節點設定 * cURL 指令(cURL Command):用於測試與呼叫 API 的命令列工具語法 * cURL 指令(cURL):以指令列方式呼叫 API 的工具與語法 * compose.yaml(Compose File):描述多個服務與網路設定的設定檔 * docker ps(Docker PS):列出目前執行中容器的指令 * 上下文視窗長度(Context Window Length):模型可回顧的歷史對話數量 * 上下文視窗(Context Window):模型可同時考慮的文字範圍 * 上游節點輸出(Upstream Output):前一個節點產生並傳遞給下一節點的資料 * 主旨生成(Subject Generation):由模型自動產生郵件主旨 * 事件時間戳(Event Timestamp):Slack 事件發生的精確時間記錄 * 事件訂閱(Event Subscriptions):設定 Slack 將特定事件推送給外部系統的機制 * 事件訂閱(Event Subscription):讓應用接收特定事件通知的 Slack 機制 * 二進位轉換(Binary Conversion):將 Base64 字串還原為實際檔案的過程 * 今日變數(Today Variable):動態取得當前日期並注入流程的系統變數 * 以使用者身分發送(Send as User):讓訊息看起來像由真人帳號發送 * 任務完成狀態(Completed Status):表示外部處理已完成的狀態值 * 任務識別碼(Request ID):用於追蹤生成任務並查詢結果的唯一 ID * 任意事件觸發(Any Event Trigger):對所有符合條件事件進行監聽的觸發方式 * 低程式碼自動化(Low-code Automation):以最少程式碼建構自動化流程的方法 * 低程式碼(Low-code):以最少程式碼完成系統建構 * 作業名稱(Operation Name):識別長時間作業的唯一名稱 * 使用者 ID(User ID):發送 Slack 訊息的使用者唯一識別碼 * 使用者互動式工作流(Interactive Workflow):需要使用者中途回覆才能繼續的流程 * 使用者回覆輸入(User Text Response):由使用者在聊天中提供的文字指令 * 使用者忽略清單(User Ignore List):避免工作流回應特定使用者或自身訊息 * 使用者提示(User Prompt):提供給模型的主要任務指令與需求說明 * 使用者提示(User Prompt):由使用者提供、引導 AI 產生回應的輸入內容 * 使用者提示(User Prompt):由使用者輸入、作為生成內容基礎的文字描述 * 使用者提示(User Prompt):由使用者輸入、驅動模型生成內容的文字指令 * 使用者提示(User Prompt):由使用者輸入並驅動模型生成內容的文字 * 使用者權限範圍(User Scope):允許應用以使用者身份執行操作的權限設定 * 使用者訊息(User Message):由使用者直接輸入、驅動模型回應的指令 * 使用者註冊(User Signup):建立本地系統帳號的流程 * 來源連結附加(Source URL Attachment):在摘要後附上原始新聞連結 * 依 ID 呼叫(Call by ID):透過模型識別碼直接指定模型 * 假分支(False Branch):條件不成立時執行的流程路徑 * 傳送圖片節點(Send Photo Node):用於向聊天平台發送圖片的動作節點 * 儲存 URI(Storage URI):指定輸出檔案存放位置的路徑 * 內部系統整合(Internal Integration):與企業內部資料庫或服務進行私有整合 * 公網 IP(Public IP Address):可從網際網路存取的伺服器位址 * 公開 API(Public API):不需驗證即可存取的應用程式介面 * 公開分享權限(Public Sharing Permission):允許外部系統存取檔案的設定 * 公開存取連結(Public Access URL):可被外部系統或 API 存取的檔案網址 * 公開存取連結(Public Access URL):可被外部系統讀取的檔案網路連結 * 公開權限設定(Public Sharing Setting):允許任何人透過連結存取檔案的權限配置 * 公開聊天介面(Public Chat Interface):允許外部使用者透過網址互動的聊天入口 * 公開連結(Public Web Content Link):可供外部系統存取的 Google Drive 檔案 URL * 分支流程(Branching):工作流中同時或分別執行多條路徑 * 動作節點(Action Node):在工作流中實際執行操作的節點 * 動作類型(Action Type):描述觸發事件性質的欄位,例如送出訊息 * 動態內容生成(Dynamic Content Generation):由模型即時生成變動內容 * 動態參數綁定(Dynamic Parameter Binding):依流程輸出即時填入節點欄位 * 動態表達式(Dynamic Expression):在節點中動態引用前序資料的語法 * 動態表達式(Expression):在節點中以變數或邏輯動態產生值的機制 * 動態變數(Dynamic Variable):在工作流執行時自動變化的即時資料欄位 * 動態輸入綁定(Dynamic Input Binding):將前一節點輸出動態綁定到下一節點輸入 * 動態頻道回覆(Dynamic Channel Reply):依事件來源自動回覆對應頻道或對話 * 匯入 cURL(Import cURL):自動將 cURL 指令轉換為工作流設定的功能 * 即時互動(Real-time Interaction):Slack 與工作流程之間的即時雙向通訊 * 即時回傳(Inline Response):不經儲存直接回傳結果資料的方式 * 即時文件查詢(Live Document Query):在回應前動態讀取最新文件內容 * 即時時間變數(Now Variable):系統自動產生的當前時間值 * 即時時間變數(Now Variable):系統自動產生的當前時間參數 * 即時時間變數(Now Variable):系統自動產生的當前時間變數 * 即時資訊擷取(Real-time Information Retrieval):從網路或 API 取得最新資料的能力 * 即時通知(Real-time Notification):在事件發生時即刻通知使用者的機制 * 即時通訊整合(Messaging Integration):將輸出傳送至 Telegram、Slack 等平台 * 即時通訊整合(Messaging Platform Integration):透過 Telegram 等通訊平台作為工作流程互動入口 * 即時通輸出(Messaging Output):將結果發送至 Slack、Telegram 等平台的方式 * 原始 JSON 主體(Raw JSON Body):以完整 JSON 格式直接傳送的請求內容 * 原始碼複製(Git Clone):將遠端儲存庫完整下載至本機的操作 * 去重邏輯(Deduplication Logic):避免同一內容被重複處理或輸出的判斷規則 * 可擴展性(Extensibility):系統支援新增功能與整合的能力 * 可讀性格式化(Readability Formatting):調整段落、間距與標示以提升閱讀體驗 * 向量資料庫(Vector Database):以向量形式儲存語意資訊 * 向量資料庫(Vector Database):以向量形式儲存資料以支援語意搜尋的資料庫 * 向量資料庫(Vector Database):用於儲存與搜尋向量嵌入的資料庫 * 品質與成本取捨(Quality-Cost Tradeoff):在生成效果與執行費用之間的平衡決策 * 啟動模板(Starter Kit):快速建立標準環境的預設專案配置 * 回圈流程(Looping Flow):未完成時重複等待與查詢的流程設計 * 回寫編輯器(Copy to Editor):將歷史執行資料回填至編輯模式以便測試 * 回應自然化(Response Naturalization):讓 AI 回覆更貼近人類語言風格的調整 * 回退模型(Fallback Model):主要模型失效時替代執行的模型 * 固定模式(Fixed Mode):欄位內容為固定不變文字的設定方式 * 圖像提示代理(Image Prompt Agent):專門負責將簡單描述轉為高品質圖像提示的 AI 節點 * 圖片訊息推送(Send Photo):透過 Telegram 發送圖片給使用者的操作 * 執行個體(Instance):雲端中運行的一台虛擬主機 * 執行子工作流節點(Execute Subworkflow Node):用於呼叫其他工作流的控制節點 * 執行日誌(Execution Logs):顯示節點內部處理流程與狀態的紀錄 * 執行節點(Execute Step):手動啟動節點以回應 Slack Challenge 的動作 * 執行紀錄(Execution Log):記錄每次工作流執行狀態與資料的紀錄 * 執行記錄(Executions):保存每次流程執行輸入與輸出的歷史紀錄 * 基底網址(Base URL):API 請求的主要服務端點 * 基礎設施即服務(IaaS, Infrastructure as a Service):提供虛擬化運算資源的雲端服務模式 * 基礎設施維運(Infrastructure Maintenance):持續管理與更新伺服器環境的工作 * 多代理系統(Multi-agent System):多個 AI agent 協同完成任務 * 多模型存取(Multi-model Access):透過單一平台呼叫不同供應商模型的能力 * 多模態生成(Multimodal Generation):結合文字、影像、影片等多種資料型態的生成方式 * 多輸入工作流(Multi-input Workflow):需要同時接收多種輸入資料(如圖片與文字)的流程設計 * 多輸入觸發(Multi-input Trigger):需要同時接收影像與文字描述等多種輸入條件的觸發機制 * 多重輸入設計(Multi-input Design):同時需要圖片與文字提示作為流程啟動與處理依據的架構 * 大型語言模型(LLM, Large Language Model):能理解與生成自然語言的 AI 模型 * 大型語言模型(Large Language Model, LLM):提供語言理解與生成能力的核心模型 * 大型語言模型(Large Language Model, LLM):驅動 AI agent 的語言理解與生成核心 * 天氣 API(Weather API):提供即時或預測天氣資訊的服務介面 * 失敗防護流程(Fail-safe Loop):避免流程中斷的重試設計 * 失敗防護(Failure Guard):避免任務未完成時導致整個工作流中斷的設計 * 失敗防護(Failure Guard):避免流程因未完成結果而中斷的設計 * 媒體生成(Media Generation):利用 AI 生成影像、影片或音訊的總稱 * 子工作流觸發器(Executed by Another Workflow Trigger):專供被其他工作流呼叫的觸發方式 * 子工作流(Sub-workflow):將大型流程拆分為可重用的小型流程單元 * 子工作流(Sub-workflow):被主流程呼叫、負責特定任務的獨立流程模組 * 字串(String):文字型資料 * 安全 Cookie 設定(Secure Cookie Setting):控制 Cookie 傳輸安全性的設定 * 安全合規(Security Compliance):符合企業或法規對資料與系統安全的要求 * 安全最佳實務(Security Best Practice):避免硬編碼敏感資訊的設計原則 * 安全群組(Security Group):控制雲端主機進出流量的防火牆規則 * 完成狀態檢查(Completion Status Check):判斷影片生成是否完成的邏輯 * 完成狀態(Completed Status):表示任務已成功處理完成的狀態值 * 完成狀態(Completed Status):表示影片生成任務已完成的狀態值 * 完成狀態(Completed Status):表示生成任務已完成並可取得結果的狀態 * 完成狀態(Completed Status):表示非同步任務已處理完成的狀態值 * 完整控制權(Full Control):對系統設定、資源配置與存取權限擁有完全掌控 * 官方支援(Official Support):由平台提供的技術支援與問題排除服務 * 客服代理(Customer Support Agent):自動回應客戶問題的 AI 系統 * 容器化部署(Containerization):將應用與其依賴封裝為可攜式容器 * 容器化(Containerization):將應用與其相依環境封裝為可移植單位的技術 * 容器(Container):由映像檔啟動的執行實例 * 容錯設計(Fault Tolerance):避免因暫時錯誤導致整個流程中斷的設計 * 實驗環境差異(Environment Differences):雲端、實驗室與自託管版本的功能差別 * 專案 ID(Project ID):Google Cloud 中用於識別專案的唯一名稱 * 專案 ID(Project ID):Google Cloud 專案的唯一識別名稱 * 專案狀態文件(Project Status Document):集中記錄專案進度與資訊的文件來源 * 專案(Project):Google Cloud 中的資源與設定單位 * 對話上下文(Conversation Context):先前互動所形成的語意背景 * 對話記憶(Conversation Memory):保留上下文以維持連續對話的一致性 * 對話識別鍵(Session Identifier):用來區分不同對話上下文的識別值 * 嵌入(Embedding):將文字轉為向量表示的技術 * 工作區監聽(Workspace-wide Listening):監控整個 Slack 工作區訊息的設定 * 工作流分段(Workflow Segmentation):將複雜流程拆分成多個邏輯區段的設計 * 工作流可擴充性(Workflow Extensibility):能隨需求新增節點與邏輯的能力 * 工作流可讀性(Workflow Readability):流程結構是否清晰易懂 * 工作流執行(Workflow Execution):實際運行自動化流程 * 工作流實驗環境(Workflow Sandbox):用於測試自動化流程的隔離環境 * 工作流程分拆(Workflow Segmentation):將大型流程拆解為多個子流程的設計策略 * 工作流程啟用(Activate Workflow):將流程切換為正式對外運作狀態 * 工作流程整合(Workflow Integration):將 Slack 與 AI、記憶模組串接的整體設計 * 工作流程節點(Workflow Node):構成自動化流程的基本模組 * 工作流程連結附加(Include Workflow Link):Slack 訊息中自動附加工作流程來源連結 * 工作流穩定性(Workflow Stability):流程在錯誤或延遲情況下仍能正常運作的能力 * 工作流穩定性(Workflow Stability):確保流程在各種情況下持續運作的能力 * 工作流編排(Workflow Orchestration):協調多個節點依序或分支執行 * 工作流編排(Workflow Orchestration):協調多個節點與步驟完成複雜任務的設計 * 工作流編排(Workflow Orchestration):將多個節點依邏輯順序組合成自動化流程 * 工作流自動化平台(Workflow Automation Platform):以節點化方式建立自動化流程的系統 * 工作流自動化(Workflow Automation):以節點串接方式自動執行任務流程 * 工作流自動化(Workflow Automation):以視覺化流程將人工任務轉為自動執行 * 工作流自動化(Workflow Automation):透過節點與邏輯編排,自動執行重複性任務的技術 * 工作流迴圈(Workflow Loop):透過排程與條件檢查反覆執行相同流程的設計模式 * 工作流迴圈(Workflow Loop):透過條件與回跳實現重複執行的流程 * 工作流重用(Workflow Reusability):可在不同情境下重複使用的流程設計 * 工作表選擇(Sheet Selection):指定文件內實際要讀寫的工作表 * 工作表(Worksheet / Sheet):試算表中的單一分頁 * 工作階段 ID(Session ID):用來識別同一聊天互動流程的唯一識別碼 * 工具使用決策(Tool Calling Decision):AI 判斷是否需要呼叫外部工具的能力 * 工具可替換性(Tool Swappability):在不影響核心邏輯下更換外部工具或服務 * 工具呼叫(Tool Calling):AI 主動使用外部功能或 API * 工具掛載(Tool Attachment):讓 AI 代理可存取外部資料來源的設定方式 * 工具描述(Tool Description):提供模型判斷是否使用該工具的說明文字 * 工具節點(Tool Node):供 AI 代理呼叫外部系統或服務的功能節點 * 工具自動選擇(Automatic Tool Selection):由模型自行判斷是否呼叫工具的能力 * 工具誤用風險(Tool Misuse Risk):模型可能在不必要時使用或忽略工具的問題 * 工具附加(Tool Attachment):讓 AI 節點可存取外部資料來源的機制 * 已授權網域(Authorized Domains):允許 OAuth 流程合法運作的網域清單 * 布林值(Boolean):真或假的邏輯值 * 平台型生成服務(Generation Platform):提供多種生成模型與 API 的集中式平台 * 平台聚合(Model Aggregation Platform):整合多種模型於單一 API 的服務模式 * 幻覺(Hallucination):AI 生成看似合理但實際不正確的內容現象 * 建立時間欄位(Created Date Column):記錄影像上傳或建立時間的欄位 * 引用來源(Citations):AI 回應中所依據的新聞連結或資料來源清單 * 影像 URL 擷取(Image URL Retrieval):從資料表中讀取最新影像連結的流程 * 影像來源解析(Image Source Resolution):確定影片生成所使用的影像來源 * 影像參考輸入(Image Reference Input):影片生成模型用來參考的原始圖片 * 影像日誌表(Image Log Sheet):專門記錄影像 URL 與時間戳的資料表 * 影像日誌表(Image Log Sheet):用於記錄影像 URL 與時間的試算表 * 影像生成模型(Image Generation Model):負責產生圖片內容的深度學習模型 * 影像紀錄表(Image Log):用於保存影像來源與時間的結構化資料表 * 影像網址欄位(Image URL Column):儲存影像公開存取連結的資料欄位 * 影像轉影片工作流程(Image-to-Video Workflow):以靜態圖片為基礎並結合文字提示自動生成影片的流程設計 * 影像轉影片工作流(Image-to-Video Workflow):以靜態圖片為基礎,結合文字指令生成動態影片的自動化流程 * 影像轉影片流程(Image-to-Video Workflow):以靜態圖片與文字提示為輸入,自動生成影片的完整自動化流程 * 影片下載連結(Video URL):指向生成影片資源的存取網址 * 影片回傳節點(Send Video):將生成完成的影片透過 Telegram 傳送給使用者 * 影片完成狀態(Completion Status):表示影片生成是否已完成的狀態值 * 影片提示代理(Video Prompt Agent):專門生成影片描述提示的 AI 節點 * 影片提示代理(Video Prompt Agent):專門負責產生高品質影片提示詞的 AI 元件 * 影片提示代理(Video Prompt Agent):負責將使用者描述轉換為專業影片生成提示的 AI 節點 * 影片提示代理(Video Prompt Agent):負責生成專業影片生成提示的 AI 節點 * 影片提示代理(Video Prompt Agent):負責生成適合影片模型的結構化提示詞的 AI 節點 * 影片提示生成代理(Video Prompt Agent):專門負責產生高品質影片提示詞的 AI 節點 * 影片生成 API(Video Generation API):負責依提示與影像生成影片的外部服務介面 * 影片生成提示詞(Video Generation Prompt):用於描述影片內容、風格與動作的文字說明 * 影片生成模型(Image-to-Video Model):將影像與文字轉換為影片的模型 * 影片生成模型(Video Generation Model):專門用於產生影片內容的 AI 模型 * 影片生成模型(Video Generation Model):負責產生動態影像內容的生成模型 * 影片輸出(Video Output):模型生成的最終影片結果 * 影片長度設定(Video Duration):指定生成影片播放時間的參數 * 影片長度(Video Duration):控制生成影片播放時間的設定 * 影片長度(Video Duration):生成影片的時間長度設定 * 影片風格控制(Video Style Control):定義影片視覺風格的提示設計 * 影片風格控制(Video Style Control):透過提示詞指定畫面風格與敘事方式 * 憑證儲存區(Credential Store):系統中安全保存所有 API 與 OAuth 憑證的位置 * 憑證測試(Credential Testing):驗證 API 金鑰是否可正常使用 * 憑證管理(Credential Management):集中管理與重複使用 API 金鑰的機制 * 憑證重用(Credential Reuse):在多個節點或工作流中共用相同驗證資訊 * 憑證類型(Credential Type):集中管理與重複使用 API 驗證資訊的設定物件 * 應用重新安裝(App Reinstallation):權限變更後重新授權應用的必要步驟 * 成員管理(Channel Members):管理頻道中使用者與應用程式的設定區 * 成員識別碼(Member ID):Slack 中唯一標識使用者的系統 ID * 成本控制(Cost Control):透過資料釘選與測試避免不必要 API 呼叫的做法 * 成本控制(Cost Control):避免重複呼叫高成本模型以降低費用的策略 * 成本控制(Cost Management):依模型與使用頻率規劃 API 使用費用 * 成本計算(Cost Per Run):每次模型執行所消耗的費用 * 手動觸發器(Manual Trigger):由使用者手動啟動的工作流觸發節點 * 手動觸發器(Manual Trigger):由使用者手動啟動的流程起點 * 手動觸發器(Manual Trigger):需由使用者手動點擊才能啟動的測試用觸發節點 * 持久化儲存(Persistent Storage):在容器重啟後仍保留資料的機制 * 挑戰式學習(Challenge-based Learning):以問題驅動、實作導向的學習模式 * 授權標頭(Authorization Header):HTTP Header 中用於身份驗證的欄位 * 授權範圍(Scope):定義 OAuth 權杖可存取 API 資源範圍的設定 * 排程自動化(Scheduled Automation):依固定時間週期自動執行的工作流行為 * 排程觸發器(Schedule Trigger):依照固定時間或週期自動啟動工作流的觸發器 * 接收全部資料(Accept All Data):將上一流程的所有輸出直接傳遞 * 推理模型(Reasoning Model):強調邏輯推理與分析能力的 AI 模型類型 * 提示工程(Prompt Engineering):設計與優化提示以引導模型產生理想結果的方法 * 提示工程(Prompt Engineering):設計與優化提示詞以提升模型輸出的技術 * 提示工程(Prompt Engineering):設計高品質提示以控制模型行為的技術 * 提示工程(Prompt Engineering):設計高品質提示以提升模型輸出的技術 * 提示工程(Prompt Engineering):透過精細設計提示提升 AI 回應品質的技術 * 提示詞工程(Prompt Engineering):設計與優化提示詞以提升生成結果品質的技術 * 提示詞工程(Prompt Engineering):設計與優化輸入提示以獲得更好生成結果的技術 * 搜尋代理(Search Agent):專門負責查詢外部搜尋引擎或 AI 搜尋服務的代理 * 搜尋新鮮度(Recency Filter):限制搜尋結果只包含最近時間範圍內的資料 * 摘要內容(Summarized Content):由前置模型或工具壓縮後的重點資訊 * 操作模式(Operation):定義工具具體要執行的行為,例如傳送 * 擴展性(Scalability):系統隨需求成長而擴充的能力 * 收件者推斷(Recipient Inference):由模型自動判斷郵件接收者 * 數值(Number):整數或浮點數資料 * 文件檢索工具(Document Retrieval Tool):用於讀取與查詢文件內容的工具節點 * 文件選擇(Document Selection):指定要操作的 Google 試算表文件 * 文字內容綁定(Text Binding):將 Slack 訊息文字作為 AI 輸入的流程 * 文字轉圖片(Text-to-Image):將文字描述轉換為靜態影像的生成技術 * 文字轉影像(Text-to-Image):依據文字描述生成對應影像的生成式 AI 技術 * 文字轉影片(Text-to-Video):依據文字提示生成動態影片內容的模型能力 * 文字轉影片(Text-to-Video):將文字描述轉換為影片內容的生成技術 * 文字轉影片(Text-to-Video):將文字描述轉換為影片內容的生成技術 * 文字轉影片(Text-to-Video):根據文字提示生成動態影片內容的生成流程 * 新聞去重機制(Deduplication Mechanism):避免重複處理或發送相同新聞內容的邏輯 * 新聞摘要(News Summary):將多個資訊來源濃縮成重點敘述的結果 * 新聞日誌表(News Log Sheet):用來記錄過往新聞標題與日期的 Google 試算表 * 新聞檢查代理(News Checking Agent):負責比對歷史新聞並移除重複項目的代理 * 日期欄位(Date Column):用來標記新聞發佈或記錄時間的欄位 * 日誌比對代理(Log Comparison Agent):將新資料與歷史紀錄進行比對的 AI 或邏輯節點 * 日誌記錄(Logging):將處理過的資料永久保存以供後續比對與查詢 * 映像檔(Image):Docker 容器的唯讀模板 * 映像管理(Image Management):下載、更新與刪除 Docker 映像的作業 * 時間戳記(Timestamp):標記事件或輸出的發生時間 * 最新資料列擷取(Latest Row Fetch):取得試算表中最後一筆資料的邏輯 * 最新資料列擷取(Latest Row Retrieval):從試算表中讀取最新一筆資料的邏輯 * 最新資料擷取(Latest Record Retrieval):從資料來源中取得最新一筆紀錄的操作 * 服務啟動(Service Startup):啟動並運行容器化服務的流程 * 服務帳戶(Service Account):用於伺服器對伺服器驗證的帳戶機制 * 服務暴露風險(Service Exposure Risk):系統對外開放可能帶來的安全風險 * 本機服務埠(Localhost Port):本地端應用對外開放的連接埠 * 本機模型(Local LLM):在本地硬體上執行的大型語言模型 * 本機端部署(Local Deployment):在個人電腦上執行服務的方式 * 格式化代理(Formatter Agent):負責整理、重組與美化輸出內容的 AI 代理角色 * 條件判斷節點(If Condition Node):根據條件結果決定流程走向的控制節點 * 條件判斷節點(If Node):依條件結果分流流程走向的控制節點 * 條件判斷節點(If Node):根據條件分流流程的控制節點 * 條件判斷節點(If Node):根據條件決定流程走向的控制節點 * 條件判斷節點(If Node):根據條件結果分支流程的控制邏輯 * 條件判斷(Conditional Logic):依條件決定流程走向 * 條件回應(Conditional Response):根據是否有新資料決定輸出內容的行為 * 條件節點(IF Node):依任務狀態分流工作邏輯的控制節點 * 條件節點(IF Node):依條件判斷分支執行流程的節點 * 條件節點(If Node):根據邏輯判斷分流工作路徑的節點 * 標頭驗證(Header Authentication):將 API 金鑰或權杖放在 HTTP Header 中進行驗證 * 標頭驗證(Header Authentication):將驗證資訊放入 HTTP Header 的方式 * 標頭驗證(Header Authentication):將驗證資訊放置於 HTTP Header 的方式 * 標題欄位(Headlines Column):儲存新聞標題或摘要內容的欄位 * 模型 ID(Model ID):用於指定要呼叫的 AI 模型版本識別碼 * 模型供應商(Model Provider):提供 LLM 服務的平台或公司 * 模型清單(Model List):平台可用模型的集合 * 模型版本選擇(Model Version Selection):依品質與成本需求選擇不同模型版本 * 模型識別碼(Model ID):用於指定特定 AI 模型的唯一識別字串 * 模型識別碼(Model ID):用於指定特定模型的唯一字串 * 模型選型(Model Selection):根據品質、成本與需求選擇合適模型的過程 * 模型選擇策略(Model Selection Strategy):依品質、成本與需求選擇合適模型的決策 * 模型選擇(Model Selection):依需求選擇合適語言模型的設定流程 * 模型選擇(Model Selection):根據需求選擇合適 AI 模型的過程 * 模組化設計(Modular Design):以獨立模組組成系統以利維護與擴充 * 模組化設計(Modular Design):將系統拆分為可重用單元以降低複雜度的架構方式 * 檔案建立事件(File Created Event):當新檔案上傳時觸發的自動化事件 * 檔案建立事件(File Created Event):當新檔案上傳至資料夾時觸發的事件類型 * 檔案建立事件(File Created Event):當新檔案被上傳時觸發的特定事件類型 * 檔案權限(File Permission):控制檔案可讀寫執行權限的設定 * 檔案轉換節點(Convert File Node):用於處理檔案格式轉換的節點 * 檢查代理(Checking Agent):專門用於比對、驗證與去重資料的 AI 代理 * 檢索增強生成(RAG, Retrieval Augmented Generation):結合外部資料來源提升回應準確度 * 檢索增強生成(Retrieval Augmented Generation, RAG):先檢索資料再生成回應的架構 * 欄位定義傳遞(Define Using Fields):僅傳遞指定欄位資料以簡化介面 * 歷史資料持久化(Data Persistence):將資料長期保存以供後續查詢與比對 * 歸屬標示(Automation Attribution):顯示訊息由自動化流程產生的標記 * 歸屬標記(Attribution Footer):系統自動附加於郵件底部的來源說明 * 歸屬關閉(Disable Attribution):移除 Slack 訊息中的自動化來源標示 * 每日摘要排程(Daily Digest Scheduling):設定每日自動產生並寄送新聞摘要的機制 * 泛用憑證(Generic Credential):可重複使用的通用驗證設定 * 流程拆分(Workflow Separation):將大型流程拆成多個子流程以提升維護性與除錯效率 * 深度研究模型(Deep Research Model):適合產出長篇、結構化研究內容的 AI 模型 * 清單選擇方式(Select from List):從可用頻道清單中選擇目標頻道 * 測試 URL(Test URL):僅用於測試階段的 Webhook 接收網址 * 測試事件擷取(Fetch Test Event):用於測試觸發器是否正常運作的功能 * 瀏覽器實驗室(Browser-based Labs):無需本地安裝即可操作的線上實作環境 * 無工具聊天模式(Tool-less Chat):AI 僅進行對話、不呼叫外部工具的運作模式 * 無驗證請求(Unauthenticated Request):不需要 API Key 或 Token 的請求方式 * 版本更新(Version Updates):系統功能與安全修補的升級流程 * 物件(Object):由鍵值對組成的結構 * 狀態判斷(Status Check):依據回傳狀態值決定後續流程的邏輯 * 狀態旗標(Done Flag):表示任務是否完成的布林值 * 狀態檢查(Status Check):判斷任務是否完成的邏輯 * 狀態檢查(Status Check):確認任務是否完成或仍在處理中的判斷步驟 * 狀態警示(Change Indicator):提示節點設定已變更、需重新執行的標記 * 狀態輪詢(Status Polling):反覆查詢任務狀態以確認是否完成的模式 * 狀態輪詢(Status Polling):定期檢查任務狀態以確認是否完成的流程設計 * 環境變數檔(.env File):集中管理應用設定參數的檔案 * 環境變數(Environment Variables):用於設定應用行為的外部參數 * 環境隔離(Environment Isolation):不同部署環境之間相互獨立的設計 * 生成品質調校(Generation Tuning):透過提示與參數微調提升生成結果品質 * 生成時長(Video Duration):影片輸出的時間長度設定 * 生產 URL(Production URL):工作流程正式上線後使用的 Webhook 接收網址 * 生產環境推送(Production Deployment):將工作流程正式啟用並定期自動執行 * 生產級工作流(Production-ready Workflow):可穩定運行於正式環境、具備錯誤處理能力的流程 * 用戶測試名單(Test Users):允許存取未驗證應用的測試帳號 * 用戶端密鑰(Client Secret):OAuth 中用來驗證應用程式身份的私密金鑰 * 用戶端識別碼(Client ID):OAuth 中用來識別應用程式的公開識別碼 * 畫面比例(Aspect Ratio):定義輸出影像或影片寬高比的參數 * 畫面比例(Aspect Ratio):影片寬高比設定,例如 16:9 * 當前日期變數(Current Date Variable):系統自動提供的即時日期時間參數 * 發送操作(Send Operation):設定 Slack 節點執行傳送訊息的動作 * 真分支(True Branch):條件成立時執行的流程路徑 * 知識來源工具(Knowledge Source Tool):為 AI 提供事實依據的外部資料節點 * 短期記憶(Short-term Memory):維持對話連續性的暫存記憶 * 硬編碼參數(Hardcoded Parameter):在流程中直接固定設定、不隨輸入變化的參數 * 硬編碼參數(Hardcoded Parameter):直接寫死在節點中的固定值設定 * 硬編碼識別碼(Hardcoded ID):在流程中直接固定使用的識別碼設定方式 * 硬編碼(Hard Coding):將敏感資訊直接寫死在參數或程式碼中的不安全作法 * 確定性流程(Deterministic Flow):不依賴模型判斷、每次必定執行的流程設計 * 社群節點限制(Community Node Limitation):不同部署方式對擴充節點的支援差異 * 社群節點(Community Nodes):由社群開發的擴充節點 * 社群節點(Community Node):由社群開發並分享的非官方功能節點 * 空結果處理(Empty Result Handling):在沒有新資料時回傳替代訊息的策略 * 第三方工具整合(Third-party Tool Integration):透過 API、Webhook 或 MCP 將外部服務接入工作流 * 等待節點(Wait Node):在工作流中暫停指定時間的控制節點 * 等待節點(Wait Node):在流程中延遲執行以等待結果的節點 * 等待節點(Wait Node):在流程中暫停指定時間以等待結果的節點 * 等待節點(Wait Node):在流程中暫停指定時間再繼續執行的控制節點 * 等待節點(Wait Node):在流程中暫停指定時間再繼續執行的節點 * 等待節點(Wait Node):暫停流程以等待外部任務完成的控制節點 * 等待節點(Wait Node):讓工作流暫停一段時間以等待外部任務完成 * 等待節點(Wait Node):讓工作流暫停一段時間再繼續執行的節點 * 管理儀表板(Admin Dashboard):集中管理工作流與設定的介面 * 節點串接(Node Chaining):確保每次流程執行時固定依序執行各節點 * 節點停用(Deactivate Node):暫停節點參與流程執行的設定 * 節點執行按鈕(Execute Step):僅執行單一節點而非整個流程的功能 * 節點輸入輸出(Node Input/Output):節點之間資料流動與傳遞的基本機制 * 節點重新執行(Execute Step):單獨執行某一節點進行測試 * 節點(Node):工作流中的最小功能單元,代表一個動作或觸發 * 範例工作流程(Demo Workflow):預先載入的示範自動化流程 * 範例請求(Sample Request):官方文件提供的簡化 API 呼叫範本 * 範本市集(Template Marketplace):提供現成工作流範例以加速開發的平台 * 簡易記憶(Simple Memory):基於最近互動次數保存上下文的基礎記憶機制 * 粗體標示(Bold Highlighting):使用粗體強調公司名稱或重大更新 * 系統人格提示(Persona System Prompt):定義 AI 行為與語氣的角色設定提示 * 系統提示工程(System Prompt Engineering):設計模型角色與輸出規範的提示方法 * 系統提示(System Prompt):定義 AI 行為與角色的高優先指令 * 系統提示(System Prompt):定義模型角色、行為與輸出格式的背景指令 * 系統提示(System Prompt):定義模型角色、行為邊界與整體任務目標的高優先提示 * 系統提示(System Prompt):用來定義 AI 行為、角色與規則的高優先指令 * 系統提示(System Prompt):用於定義 AI 行為與角色的指令內容 * 系統提示(System Prompt):用於定義模型角色、規則與輸出格式的隱性指令 * 系統提示(System Prompt):用於約束與定義 AI 行為與角色的高優先級指令 * 系統更新(System Update):安裝最新安全修補與套件的作業 * 系統編排(System Orchestration):協調多個服務與流程協同運作的能力 * 系統訊息(System Message):用來定義模型角色、行為與限制的高優先提示 * 終端機(Terminal):以指令方式操作系統與程式的介面 * 結構化擷取(Structured Extraction):將非結構化內容轉為結構化資料 * 結構化資料(Structured Data):具有固定欄位與層級的資料 * 結構化輸出(Structured Output):確保模型輸出符合預期欄位與型別 * 結構描述(Schema):以結構化方式定義資料欄位,方便後續拖曳與對應 * 結構描述(Schema):將 JSON 資料以型別結構方式呈現的格式 * 維運成本(Maintenance Overhead):自行維護系統所需的人力與時間成本 * 聊天 ID(Chat ID):Telegram 對話的唯一識別碼 * 聊天模型(Chat Model):用於即時對話回應的語言模型類型 * 聊天觸發器(Chat Trigger):以即時文字輸入作為工作流啟動條件的節點 * 聊天觸發節點(Chat Trigger):透過即時文字輸入啟動工作流的觸發機制 * 聊天訊息觸發器(On Chat Message Trigger):當接收到聊天輸入時即時啟動工作流程的觸發節點 * 聊天識別碼(Chat ID):唯一標識 Telegram 對話的參數 * 聊天輸入內容(Chat Input):使用者在聊天介面中輸入的實際文字內容 * 自動化管線(Automation Pipeline):由多個節點串接而成的自動處理流程 * 自架部署(Self-hosting):由使用者自行管理伺服器、環境與安全性的部署方式 * 自然語言生成(Natural Language Generation, NLG):AI 將結構化資料轉換為人類語言的能力 * 自行託管(Self-hosting):在自有環境中部署與管理應用服務 * 自行託管(Self-hosting):將系統部署於自有伺服器或私有雲環境 * 自託管環境(Self-hosted Environment):自行部署與管理的執行環境 * 處理中狀態(Processing Status):表示任務仍在執行中的狀態值 * 表格視圖(Table View):將資料以表格形式呈現,方便快速檢視 * 表達式模式(Expression Mode):以變數或 JavaScript 表達式動態填值的設定 * 表達式(Expression):在節點中動態引用前序資料 * 表達式(Expression):用來存取、計算或組合前序節點資料的語法 * 視覺一致性(Visual Consistency):確保生成內容在風格與構圖上的一致性 * 觸發節點(Trigger Node):啟動工作流的起點事件 * 觸發節點(Trigger Node):用來啟動整個工作流的起始節點 * 觸發節點(Trigger Node):用來啟動整個工作流的起始節點 * 觸發節點(Trigger Node):用來啟動整個工作流程的起始節點,當指定事件發生時自動執行流程 * 訂閱制(Subscription Model):以月費或年費形式支付使用雲端服務的計費模式 * 訊息內容(Message Text):使用者在 Slack 中輸入的文字內容 * 訊息分發節點(Message Dispatch Node):負責將內容傳送到指定平台的節點 * 訊息與模型操作(Message & Model Operation):以單次訊息搭配模型進行回應生成的操作模式 * 訊息觸發器(On Message Trigger):當使用者發送訊息時啟動的觸發節點 * 訊息觸發器(On Message Trigger):當收到新訊息時啟動流程的事件節點 * 訊息說明文字(Caption):附加在圖片或影片下方的文字說明 * 訊息說明(Caption):附加在圖片或影片下方的文字提示 * 訊息輸出節點(Message Output Node):將最終結果發送到通訊平台的節點 * 記憶機制(Memory Mechanism):讓 AI 保留過往互動資訊 * 記憶機制(Memory Mechanism):讓 AI 工作流保留並利用歷史資訊的設計 * 記憶節點(Memory Node):用來保存對話上下文的節點 * 記憶節點(Memory Node):讓 AI 能記住先前 Slack 對話內容的模組 * 試算表文件(Spreadsheet Document):Google Sheets 中的資料容器 * 試算表查詢工具(Google Sheets Tool):供 AI 節點查詢試算表資料的工具 * 試算表讀取工具(Google Sheets Get Rows):從 Google Sheets 讀取資料列的操作 * 試算表追加列(Append Row):將新資料新增至 Google Sheets 下一個可用列 * 認證標頭(Authorization Header):HTTP 中用於傳遞驗證資訊的欄位 * 認證標頭(Authorization Header):HTTP 標頭中專門用於傳遞身份驗證資訊的欄位 * 語言模型存取(LLM Access):透過 API 呼叫大型語言模型的能力 * 請求 ID(Request ID):用於查詢非同步任務結果的唯一識別碼 * 請求 ID(Request ID):用於識別特定 API 任務的唯一識別碼 * 請求識別碼(Request ID):用於追蹤非同步任務的唯一識別值 * 讀取列操作(Get Rows Operation):從試算表中擷取既有資料列的操作 * 變數拖放(Variable Mapping):將前一節點輸出拖入下一節點欄位的操作 * 變數插入(Variable Injection):將其他節點的輸出動態插入提示中的機制 * 資料傳遞模式(Data Passing Mode):主工作流與子工作流之間的資料交換方式 * 資料回填(Data Replay):將過往執行資料重新載入編輯器的操作 * 資料型別(Data Type):資料的基本分類 * 資料夾監控(Folder Monitoring):定期掃描資料夾以偵測新增或變更檔案的機制 * 資料契約(Data Contract):明確定義工作流之間資料格式的設計概念 * 資料持久化(Persistent Storage):容器重啟後仍能保留資料的機制 * 資料橋接(Data Bridging):在不同節點或系統間傳遞資料的設計方式 * 資料流程控制(Data Flow Control):管理資料在節點間傳遞與使用的邏輯 * 資料流(Data Flow):資料在節點之間傳遞的過程 * 資料釘選(Data Pinning):固定節點輸出以避免重複消耗 API 資源 * 資料釘選(Data Pinning):固定節點輸出以防止重複消耗 API 資源 * 資料釘選(Pin Data):固定測試資料以避免重複觸發成本操作 * 資料釘選(Pin Data):固定節點輸出以避免重複呼叫外部服務 * 資料釘選(Pin Data):固定節點輸出資料以避免重複執行與消耗 API 資源 * 資源限制(Resource Limitation):雲端平台對 CPU、記憶體或執行數量的配額限制 * 資源類型(Resource Type):指定 Slack 節點操作的對象,例如訊息 * 資源類型(Resource Type):指定工具操作的對象,例如郵件 * 身分模擬(Impersonation):AI 模擬特定使用者語氣與風格進行回應 * 身分驗證(Authentication):確認使用者或系統身分的安全機制 * 輪詢機制(Polling Mechanism):定期檢查任務狀態直到完成的流程設計 * 輪詢機制(Polling Mechanism):定期檢查任務狀態直到完成的流程設計 * 輪詢機制(Polling Mechanism):定期檢查任務狀態直到完成的設計 * 輪詢機制(Polling Mechanism):定期檢查任務狀態直到完成的設計 * 輪詢端點(Polling Endpoint):用於查詢作業狀態的 API URL * 輪詢請求(Polling Request):定期查詢任務狀態直到完成的策略 * 輸入承接(Input Binding):自動將前一節點輸出作為目前節點輸入的機制 * 輸入負載(Input Payload):節點接收到的資料內容 * 輸出管道(Output Channel):將結果傳送到 Email、Slack 等平台 * 輸出節點(Output Node):將結果傳送至外部系統的節點 * 輸出結果(Output Result):節點處理後產生的資料 * 輸出資料(Output Data):由節點產生並傳遞給下一個節點的資料 * 輸出連結(Output URL):生成完成後取得影像或影片的存取連結 * 迴圈控制(Loop Control):透過條件與等待反覆執行流程的設計 * 迴圈控制(Loop Control):透過條件與等待節點反覆執行直到滿足條件 * 迴圈機制(Loop Mechanism):重複執行流程直到條件滿足的設計 * 追加列操作(Append Row):將新資料寫入試算表下一列的操作方式 * 追加列操作(Append Row):將新資料寫入試算表下一空列的操作 * 通知管道抽象化(Notification Channel Abstraction):可替換 Gmail、Slack、Telegram 的輸出設計 * 連接埠轉發(Port Mapping):將容器服務對外開放的網路設定 * 連線測試(Connection Test):驗證第三方服務憑證是否正確設定的流程 * 進行中狀態(In-progress Status):表示任務尚未完成的狀態值 * 進行中狀態(Processing Status):表示生成任務尚未完成的狀態 * 部署彈性(Deployment Flexibility):依需求選擇不同部署環境的能力 * 郵件主旨固定化(Static Subject):使用不隨內容變動的主旨設定 * 郵件代理(Email Agent):可自動撰寫與寄送郵件的 AI 節點 * 郵件內容綁定(Message Binding):將上游節點輸出綁定為郵件本文 * 郵件固定收件者(Fixed Recipient):設定每次寄送到相同電子郵件地址 * 郵件格式(Email Format):定義郵件內容類型,如純文字或 HTML * 郵件歸屬移除(Attribution Removal):關閉系統自動附加的寄送來源標示 * 郵件節點(Gmail Node):將生成結果透過電子郵件發送的輸出節點 * 重新導向 URI(Redirect URI):OAuth 驗證完成後回傳授權結果的指定網址 * 重新導向 URI(Redirect URI):OAuth 驗證完成後的回傳位址 * 重新導向 URL(Redirect URI):OAuth 流程中回傳授權結果的網址 * 重用性(Reusability):流程或元件可在多個場景中重複使用的特性 * 重複新聞過濾(Duplicate News Filtering):透過比對歷史紀錄移除重複新聞的流程 * 重複檢查代理(Deduplication Agent):用於避免重複處理或發送相同資訊的邏輯節點 * 重試機制(Retry Mechanism):在失敗時自動重新嘗試執行的設計 * 重試機制(Retry Mechanism):失敗後自動再次嘗試 * 金鑰對(Key Pair):SSH 驗證用的公開金鑰與私密金鑰 * 錯誤處理(Error Handling):在流程發生異常時進行攔截與修復的機制 * 錯誤處理(Error Handling):流程失敗時的應對機制 * 錯誤防護(Failure Prevention):避免流程因未完成任務而中斷的設計策略 * 錯誤隔離(Error Isolation):將錯誤限制在單一模組中以降低影響範圍 * 長時間作業(Long-running Operation):需要輪詢狀態才能取得結果的 API 任務 * 長時間運作任務(Long-running Operation):需要多次查詢結果的雲端生成任務 * 長期記憶(Long-term Memory):可長期保存並檢索的知識 * 閃電圖示(Lightning Icon):用來辨識觸發節點的視覺標記 * 開源平台(Open-source Platform):原始碼公開、可自行部署與擴充 * 防火牆規則(Security Group Rules):控制伺服器進出流量的安全設定 * 附加列操作(Append Row Operation):將新資料新增到試算表底部的操作 * 陣列(Array):多個元素組成的清單 * 除錯效率(Debugging Efficiency):快速定位並修正錯誤的能力 * 集中式溝通介面(Centralized Communication Interface):統一接收與回覆使用者輸入的溝通平台 * 集中式通訊入口(Centralized Communication Channel):用單一平台(如 Telegram)作為人機互動與流程控制入口 * 雲端主機(Cloud VM):由雲端供應商提供的虛擬伺服器 * 雲端平台(Cloud Platform):提供託管與運算資源的線上服務 * 雲端虛擬機(EC2 Instance):AWS 提供的可彈性配置運算資源 * 雲端託管(Cloud Hosting):由官方平台代管基礎設施、更新與維運的部署模式 * 雲端託管(Cloud Hosting):由第三方雲端平台提供運算與維運服務的部署方式 * 雲端資源監控(Cloud Resource Monitoring):追蹤 CPU、記憶體與磁碟使用狀況 * 電子郵件節點(Gmail Node):透過 Gmail 發送通知或結果的整合節點 * 非原生整合(Non-native Integration):透過 HTTP 或 API 方式連接非內建服務 * 非同步 API 模式(Async API Pattern):先提交任務再查詢結果的 API 設計 * 非同步任務(Asynchronous Job):需要等待處理完成才能取得結果的任務模式 * 非同步任務(Asynchronous Task):需等待處理完成後才能取得結果的任務 * 非同步任務(Asynchronous Task):需要時間處理並透過狀態查詢取得結果的任務模式 * 非同步作業(Asynchronous Operation):需等待背景處理完成的長時間任務 * 非同步影片生成(Asynchronous Video Generation):需要等待處理完成的影片生成模式 * 非同步處理(Asynchronous Processing):請求提交後需等待後端完成的處理模式 * 非同步處理(Asynchronous Processing):請求提交後需等待背景處理完成的機制 * 非同步處理(Asynchronous Processing):請求提交後需等待處理完成的模式 * 非結構化資料(Unstructured Data):如文字、圖片等無固定結構資料 * 音訊生成(Audio Generation):影片中同時產生背景聲音的能力 * 音訊生成(Audio Generation):是否同時產生影片背景音或聲音的功能 * 順序執行(Sequential Execution):節點依連線順序執行 * 預設連接埠 5678(Default Port 5678):n8n 本地實例常用的服務埠 * 頻道 ID(Channel ID):Slack 頻道的唯一識別碼 * 頻道 URL(Channel URL):可用來識別或設定頻道來源的網址 * 頻道作為 Session(Channel as Session):以 Slack 頻道 ID 作為對話記憶的依據 * 頻道監聽(Channel Listening):設定工作流程僅接收特定 Slack 頻道的事件 * 頻道訊息回覆(Channel Reply):將 AI 回應直接發送到原 Slack 頻道 * 風格描述(Style Descriptor):用於指定影像或影片藝術風格的提示詞元素 * 高價值任務(High-value Tasks):需要人類判斷、創意或策略的工作內容 * 高可用性(High Availability):系統持續運作並降低停機時間的能力 * 高擬真度(High Fidelity):影片在畫面與音效上的真實程度 * 高擬真度(High Fidelity):影片畫面細節與真實感的品質指標