問題
作為一個經營雙語個人品牌(英文 + 繁體中文)的人,我每週都花好幾個小時在重複的迴圈裡:掃描科技新聞、找有趣的話題、為 Threads/LinkedIn/Instagram 寫草稿,然後翻譯成另一種語言。核心洞察是,這個過程大部分都是模式識別和綜合——正好是 LLM 擅長的事。
架構概覽
Pipeline 有兩個主要階段:
1. 靈感發掘管線 (Ideation)
# 簡化流程
sources = fetch_all_sources() # 100+ 來源平行抓取
items = deduplicate(sources) # URL hash + Notion 去重
scored = claude_score(items) # 五維度評分
ideas = generate_angles(scored) # 雙語角度生成
write_to_notion(ideas) # 結構化 Notion 資料庫評分系統從 5 個維度評估每個項目:
- →相關性 (0.25 權重) — 與我的內容定位吻合度
- →病毒性 (0.20) — 社群討論潛力
- →時效性 (0.15) — 有多即時、多有時效壓力
- →獨特性 (0.20) — 角度有多新穎
- →品牌契合 (0.20) — 我能否從獨特視角來寫
2. 內容創作管線 (Creation)
ideas = fetch_picked_ideas() # Notion 中 Status = "Picked"
drafts = generate_drafts(ideas) # 平台專屬 (Threads/LinkedIn/IG)
validated = quality_check(drafts) # 分數 < 6 自動重新生成
final = transcreate(validated) # EN → ZH-TW 文化轉譯
write_to_pipeline(final) # 準備好審閱關鍵區別:這是文化轉譯 (trans-creation),不是翻譯。中文版本會調整文化引用、為台灣科技社群調整語氣,並重組句子讓閱讀更自然。
關鍵設計決策
Claude CLI 作為主要後端
我使用 Claude CLI(透過 Max 訂閱)作為主要 LLM 後端,Anthropic API 作為備用。這讓我在評分和生成上基本上有無限使用量,不需要按 token 付費。
class ClaudeClient:
def __init__(self):
self.use_cli = os.getenv("CLAUDE_USE_CLI", "true") == "true"
async def generate(self, prompt: str) -> str:
if self.use_cli:
return await self._cli_generate(prompt)
return await self._api_generate(prompt)分層來源架構
不是所有來源都一樣重要。系統使用 4 層級架構:
| 層級 | 例子 | 篩選 | 加分 |
|---|---|---|---|
| 1 | 直接信號 | 無 | +2.0 |
| 2 | OpenAI/Anthropic 部落格 | 無 | +1.5 |
| 3 | Google AI、LangChain | 無 | +0.5 |
| 4 | HackerNews、Reddit | 關鍵字 | +0.0 |
第 4 層來源會通過 AI_KEYWORDS 關鍵字篩選來過濾噪音。
我學到的事
- →
評分優於篩選。 早期版本用簡單的關鍵字匹配。加入 Claude 多維度評分後,內容品質大幅提升。
- →
文化轉譯 > 翻譯。 直接翻譯會產生彆扭的內容。讓 Claude 理解兩種文化並調整訊息,才能產出聽起來自然的文章。
- →
來源健康很重要。 靜默的來源失敗是最糟的 bug。我加了健康追蹤,連續 3 次空值抓取後會發出警告。
- →
成本控制很關鍵。 每次評分上限 300 個項目,優先使用 CLI,讓成本可預測。
下一步
Pipeline 目前在草稿生成就停了——我還是手動審閱和發布。下一步包括建立個人網站(你正在看的就是!)來放更完整的長文版本,以及最終自動化發布步驟。