我用 Python + Claude Code 打造了一個全自動 YouTube 財經頻道

從零開始用 AI 工具鏈打造全自動影片生產系統,每週產出台股財經 Shorts,完全不需要手動剪輯

一、為什麼想做這個?

我本業不是 YouTuber,沒有那個時間。但我最近迷上了用Claude Code做各種有可能產生收益的專案!

於是我開始想:如果每一個環節都能自動化,讓系統從「收到主題字串」到「影片上架」全部自己跑完,那會是什麼樣子?兩週後,Stocks500 這個頻道發出了第一支影片。這篇文章就是記錄這個過程。

-–

二、系統架構

整個 pipeline 分成四個 Stage,每個 Stage 各自獨立,方便單獨測試和替換:

一行指令就能啟動整個流程:

1
python main.py "台積電 2025 Q4 財報分析"

約 3-5 分鐘後,output/<timestamp>/final.mp4 就是一支 60 秒、帶燒錄字幕的直式短影音,可以直接上傳。

-–

三、技術選型與原因

Gemini API — 免費額度大,中文腳本品質好

腳本生成是整個系統的靈魂。我測試過幾個模型,最後選 Gemini 2.5 Flash,主要原因是:繁體中文財報旁白品質穩定,而且免費 tier 的 quota 對週更頻道完全夠用。

Prompt 設計的核心是強迫模型輸出具體數字,不接受「大幅成長」這種模糊描述。同時要求輸出 JSON 格式,包含旁白、視覺搜尋詞、圖表資料、hashtag 全部一次生成,方便後面各 Stage 直接取用。

Edge TTS — 完全免費,繁中發音自然

TTS 是我選最久的環節。Elevenlabs 聽起來很好,但費用不低;Google Cloud TTS 要綁信用卡;Kokoro 是離線模型但繁中支援還在早期。最後選了 edge-tts,使用 zh-TW-HsiaoChenNeural 聲線,語速設 +5%,效果意外地自然,而且完全免費。

更重要的是字幕同步。我用 ffprobe 量測每一句的實際音訊時長(不是估算),再逐句累計建 SRT 時間軸。這個做法讓字幕和配音幾乎零誤差。

Claude Code — 讓非全職工程師也能建出複雜系統

這個要特別說。我自己會寫 Python,但沒有系統性學過影片處理、FFmpeg 濾鏡語法、matplotlib 財經圖表這些領域。如果沒有 Claude Code,我大概會卡在「FFmpeg 怎麼做 letterbox + subtitle burn-in 同時不破壞畫質」這個問題上三天。

有 Claude Code 之後,我把問題描述清楚,它直接給我可以跑的程式碼,遇到錯誤也能直接丟 traceback 讓它分析。整個系統從零到能跑,大概用了兩週,以副業標準來說算很快。

FFmpeg — 影片處理最穩定的選擇

FFmpeg 是整個 pipeline 裡最底層的工具,負責:影片縮放、片段串接、字幕燒錄、音訊混合、最終編碼。它的 filter_complex 語法很詭異,但一旦寫對就非常穩定,不會因為版本升級突然壞掉(咳咳,moviepy)。

WSL2 — Windows 上的 Linux 環境

本機開發環境是 Windows,但整個 pipeline 依賴 Linux 工具鏈(FFmpeg、Noto CJK 字體、venv 路徑)。WSL2 讓我不用切機器,直接在 Windows 裡跑 Ubuntu,Claude Code 也能直接操作 WSL 路徑。部署的時候打算換成 Mac mini M4 常開,但開發階段 WSL2 已經夠用。

-–

四、遇到的坑和解決方式

坑一:中文字體亂碼(matplotlib)

matplotlib 預設字體不支援 CJK,圖表裡的中文標籤全都變豆腐方塊。解法是安裝 fonts-noto-cjk 並在 Python 裡明確指定字體路徑:

1
2
3
4
import matplotlib.font\_manager as fm
font\_path = "/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc"
prop = fm.FontProperties(fname=font\_path)
plt.title("台積電季營收", fontproperties=prop)

字體快取有時候不會自動更新,要手動 fc-cache -fv 刷新。

坑二:moviepy 1.x vs 2.x 語法不相容

一開始用 moviepy 做影片串接,結果升級到 2.x 之後 API 幾乎全改,很多 Stack Overflow 的答案直接失效。後來索性把影片處理全部換成 subprocess 呼叫 FFmpeg,一行 CLI 反而比 Python API 更可靠。

坑三:字幕與配音不同步

最初用「字數 × 每字平均時長」估算每句的時間點,但中文語速不均勻,長句估算誤差可以到 0.5-1 秒,累積下來字幕會明顯落後。

解法:每句 TTS 獨立生成一個 MP3 暫存檔,用 ffprobe 量測實際時長,再用真實數字建 SRT。這樣不管那句話說多快多慢,時間軸都是精準的。

坑四:素材庫重複問題

四個素材庫(Pexels、Pixabay、Mixkit、Vecteezy)各自有搜尋 quota 和熱門影片,如果不控制,容易在同一支影片裡下載到重複片段,或是跨影片重複使用同一個畫面。解法是維護一個 seen\_ids set,下載前先比對,重複就換下一個;搜尋無結果時自動 fallback 到通用關鍵字。

坑五:多音字發音錯誤

「成長」這個詞,在財報語境下應該讀「ㄔㄤˊ」(growth),但 TTS 有時候讀成「ㄓㄤˇ」(grow up)。目前的解法是在旁白後處理階段,對幾個常見多音字做字詞替換,強迫 TTS 走正確的發音路徑。這個問題沒有完美解法,只能一個個處理。

-–

五、目前成果

頻道 Stocks500 現在每週發布台股財經分析 Shorts,內容涵蓋台積電法說會、NVIDIA 財報對台股影響、大盤週報等主題。

幾個數字:

  • 製作時間:從想法到第一支影片正式上線,約兩週
  • 每支影片製作成本:主要是 Kling AI 動態素材費用,約 NT$3-8,其他工具免費
  • 每支影片生產時間:輸入主題到 final.mp4 輸出,約 3-5 分鐘(視素材下載速度)
  • 人工介入:只需要輸入主題字串,其餘全自動

目前還在累積訂閱數,廣告收益還沒到能覆蓋成本的程度,但整個系統已經跑得很穩定,每週的時間投入大概只有 15 分鐘(選主題 + 確認輸出 + 上傳)。

-–

六、GitHub

專案已開源,歡迎取用:

https://github.com/junsu719/yt-shorts-finance

README 裡有完整的安裝步驟、API 金鑰申請說明和使用範例。如果你也想用這個系統做自己的主題頻道(不限財經),只需要修改 Stage 1 的 prompt 就能改變整個內容方向。

如果這個專案對你有幫助,歡迎 Star ⭐,也歡迎開 Issue 回報問題或提 feature request。

-–

七、下一步計畫

這個系統目前還在第一階段,還有很多可以做的事:

硬體升級:Mac mini M4 作為 24/7 常開主機,讓 pipeline 可以排程自動跑,不依賴我的 Windows 開機狀態。搭配 cron job,理論上可以做到完全無人值守。

素材多樣性:現在四個素材庫找到的影片重複率還是偏高,打算整合 Kling AI 根據視覺 prompt 生成客製化動態素材,讓每支影片的視覺風格更獨特。

觀眾互動:長期目標是讓觀眾可以在留言區留下股票代號,系統自動在 48 小時內產出那支股票的分析影片並回覆留言連結。這個需要監聽 YouTube API + 觸發 pipeline,技術上可行,等頻道訂閱數到一定規模再做。

-–

如果你也在做類似的 AI 自動化側專案,歡迎在下面留言交流。這類系統最有趣的地方不是技術本身,而是當你把幾個看起來不相關的工具串在一起,突然冒出一個以前做不到的東西——那個感覺還蠻上癮的。