KOL Pipeline Swimlane
架構文件 •
Swimlane 的價值在於讓隱形的工作變得可見。
與其把工作流程埋在腳本和檔案名稱裡,不如用 swimlane 展示內容從哪裡進入、如何被轉換、以及最終如何成為有操作意義的東西。
KOL Pipeline 流程
Phase 1 — Collection (Automated)
Facebook (Apify scraper) YouTube (yt-dlp) RSS feeds
| | |
└─────────────────────────┴────────────────────┘
|
raw_posts table (D1)
Phase 2 — Processing (LangGraph)
raw_posts
→ NotebookLM analysis (key themes, signals, price levels)
→ Haiku/DeepSeek classification (sentiment, consensus strength)
→ structured JSON output
Phase 3 — Content Generation (Automated)
structured JSON
→ MDX template rendering
→ kol-daily-brief.md (daily)
→ kol-weekly-report.md (weekly, aggregates 7 daily briefs)
Phase 4 — Publish (Semi-automated)
MDX files
→ Astro build (NQIO site)
→ Cloudflare Pages deploy
→ week.nqio.dev live
Swimlane 給非工程師帶來的價值
對於非技術背景的操作者,pipeline 往往感覺不透明。Swimlane 透過把實作步驟轉換為人類可讀的流程來解決這個問題。
這很重要,因為問題很少只是「它有沒有在跑?」,通常是:
- 這個流程符合我原本的意圖嗎
- 意義是在哪個環節被加入的
- 哪些地方需要我介入審查,而不是交給自動化
人工判斷仍不可或缺的地方
KOL pipeline 中並非所有事情都應該自動化。目前的 HITL 節點:
| 步驟 | 自動化程度 | 人工角色 |
|---|---|---|
| KOL 來源選擇 | 手動(夏哥親自篩選) | 新 KOL 加入前必須審批 |
| 情緒校準 | LLM(Haiku) | 每週審查是否有系統性偏差 |
| 關鍵價位準確性 | LLM(Haiku) | 抽查價位是否有錯誤 |
| 發布決策 | 自動(pipeline) | 若內容品質過低可手動覆寫 |
| 績效追蹤 | 計畫中(eval script) | 每月審查 |
Pipeline 目前停在哪裡
截至 2026-03-14,KOL Pipeline(NQIO)處於開發狀態。完整的端到端流程已設計完成,但並非所有階段都已上線運作:
- 已運作:Facebook Apify scraper、基本 RSS 收集
- 已運作:NotebookLM 手動分析
- 進行中:LangGraph 自動化處理 pipeline
- 計畫中:從結構化輸出自動生成 MDX
- 計畫中:Cloudflare Pages 全自動 deploy
為何這屬於 Agentic
即使一個工作流程是技術性的,對它的理解仍然是編輯性的。Swimlane 不只是開發者的產物,它同時是一個學習產物,最終也是一個寫作資產。
當 pipeline 完成後,swimlane 將成為向非技術受眾解釋 AI 輔助金融情報如何運作的基礎——而這正是 agentic.superportia.dev 和 week.nqio.dev 所需要的那種內容。
LangGraph 節點詳細
| 節點 | 功能 | 輸入 | 輸出 |
|---|---|---|---|
fetch_sources | 從 D1 raw_posts 表拉取原始內容 | date range, source filter | raw post array |
transcribe | NotebookLM STT 轉錄(YouTube 音訊) | audio URL | full transcript text |
analyze | Gemini Flash 結構化分析 | transcript + prompt template | 6-section structured report |
extract_levels | 提取價位和方向標記 | analysis text | key_levels[] with direction |
aggregate | 跨 KOL 共識比對 | all KOL analyses | consensus_strength, divergence score |
output | 輸出到 daily-feed.json + Cloud UB | aggregated data | JSON file + UB entries |
目前狀態
| 階段 | 狀態 | 負責人 | 阻塞項 |
|---|---|---|---|
| YouTube 抓取 (yt-dlp) | ✅ 運作中 | SS1 cron | — |
| NotebookLM STT | ✅ 運作中 | Google API | — |
| Gemini 分析 | ✅ 運作中 | Gemini API | — |
| daily-feed.json 輸出 | ❌ 未建 | Mac CLI 小克 | KOL Pipeline V3 spec |
| Cloud UB 入庫 | ✅ 運作中 | ingest_fragment | — |
| week.nqio.dev 前端 | ❌ 未建 | — | blocked by daily-feed.json |
錯誤處理
| 失敗情境 | 處理方式 |
|---|---|
| yt-dlp 抓取失敗 | 重試 3 次,間隔 30 秒。失敗後記錄到 UB,跳過該來源 |
| NotebookLM API 逾時 | 降級為 Gemini Flash 直接分析文字稿 |
| Gemini 分析品質過低 | confidence < 0.6 時標記為 review-needed |
| D1 寫入失敗 | 本地 JSON 檔備份,下次批次補寫 |