運用 AI 工具打造 YouTube Shorts 自動生成流程:實作步驟與工作流程整合

Published on: | Last updated:

今天...嗯...想來聊聊一個小專案。就是...最近一直想,能不能讓做 YouTube Shorts 這件事自動化一點。你知道的,就是那種上面一張圖,下面是音樂,然後跑個十幾秒的短影片。自己手動做好麻煩。

但我又...說真的,懶得自己從頭開始寫程式碼。所以我就想,不然...來試試看叫 AI 幫我寫好了。整個過程,從後端的 Python 腳本到前端的網頁介面,都跟 AI 一起弄。嗯...有點像把 AI 當成一個初階工程師在跟他對話。蠻有趣的。

重點一句話

結論就是...可行的。但它不像電影演的那樣,你下一句指令,它就給你完美的程式。整個過程更像...嗯...來回溝通,你給個方向,它做個東西出來,你再修正它,這樣來來回回好幾次。像在帶人,不像在用工具。

AI 協作開發流程示意
AI 協作開發流程示意

怎麼做:跟 AI 一步步把東西「聊」出來

整個過程我把它分成兩塊。第一塊是核心功能,就是那個用 Python 產生影片的腳本。第二塊才是給人用的介面,我用了一個叫 Streamlit 的東西來做,也是叫 AI 寫的。

我用的 AI 工具主要是 Manus 跟 Windsurf,這在國外比較有人用。不過呢,我自己是覺得,這整個邏輯,你在台灣大概用 ChatGPT 的 Code Interpreter 或是現在的 GPT-4o,其實也能做到八九不離十。重點是那個溝通的思路。

先搞定後端:那個 Python 腳本

一開始,我的想法很單純。我給 AI 的第一個指令,嗯...現在回頭看有點囉唆,但就是盡量寫清楚。大概是這樣:

我要一個 Python 腳本,做 YT Shorts 自動化。影片是 1080x1920 直的。畫面正中間會放一張我給它的圖,然後背景...嗯...背景就用這張圖最主要的顏色去填滿,做成單色背景。然後中間那張圖要有點立體感,加個陰影之類的。所有東西都要能讓使用者自己調整...

我還特別跟它說,圖片路徑啊、音樂路徑啊、要剪音樂的開始結束時間啊,這些都要做成參數,讓使用者可以自己改。

結果...它還真的給我生出一個可以跑的 Python script。我裝了一下它說要裝的套件,像是 MoviePy 什麼的,然後...就真的跑起來了。這點真的蠻神奇的。

再來是加戲:讓音樂「動」起來

但...你知道嗎,那個影片做出來,就只是一張圖配音樂,老實說,有點單調。我看著那個成品,就覺得...嗯...少了點什麼。

突然想到,很多音樂影片不是都會有那個...音波圖嗎?對,就是 waveform,會跟著音樂節奏跳動的那個視覺效果。我覺得加了那個,質感應該會好很多。

所以我就回去繼續跟 AI「聊」。

我跟它說:「欸,我有兩個新想法。第一,你可以在影片下方加上音樂的波形動畫嗎?第二,背景除了單色之外,可不可以多一個選項,就是用同一張圖的『模糊虛化版』當背景?

這個部分就沒那麼順利了。來來回回好幾次。AI 第一次給我的音波圖,很醜...就是,不管什麼音樂,它長得都一樣,像固定的三角形在那邊抖。根本沒有跟著音樂在反應。

我又花了點時間跟它描述,說「這個波形太平了,不對,它應該要能反應音樂的起伏...高音的時候高一點,重低音的時候寬一點...」之類的。反正就是用很...很人類的語言去形容。試了兩三次吧,它總算搞懂了,做出來一個真的會跟著音樂變化的波形。

說真的,做到這裡,這個 Python 腳本的核心功能已經讓我覺得...嗯,很可以了。

最終用 Streamlit 做出來的網頁操作介面
最終用 Streamlit 做出來的網頁操作介面

接著弄前端:生一個 Streamlit 網頁 App

只有一個 Python 腳本,對不會寫程式的人來說根本沒用。所以下一步,就是幫它做一個簡單的網頁介面。我選了 Streamlit,因為它很適合快速把 Python 腳本變成網頁應用。

這部分我用了另一個叫 Windsurf 的 AI。我一樣,先把它當成一個剛報到的同事。

我的第一個指令是:「你先讀一下我這個專案裡面的 Python 腳本,然後跟我報告一下它的功能是什麼。

這招有點像是考試,看它能不能理解之前 Manus 寫的程式。因為 Manus 寫的 code 註解還算清楚,所以 Windsurf 很快就 파악 (掌握) 了整個腳本在幹嘛。

然後我就下了關鍵指令:「好,既然你看懂了,那就用 Streamlit 幫我做一個網頁介面來操作這個腳本。腳本裡面那些全域變數,你就在網頁上做出對應的輸入框給我。我要讓使用者可以在網頁上調整所有東西。

結果...它也做出來了。一個有上傳按鈕、有時間拉桿、有顏色選擇器的網頁。雖然版面一開始有點亂,我又跟它來回修了幾次,像是把某個滑桿改成單純的文字輸入框之類的。但...基本上,一個能用的工具就這樣誕生了。

這邊有個小小的...嗯...算是心得吧。我發現跟這種 AI 協作,最好是一個對話框專心做一件事。比如我要加音波圖功能,我就開一個新的 chat。我要調整 UI 版面,我也開一個新的。把任務切得越小,它好像做得越好,比較不會搞混。

前後對照:加上音波圖(右)之後,視覺上豐富很多
前後對照:加上音波圖(右)之後,視覺上豐富很多

AI 初版 vs. 來回溝通後的版本

為了讓大家更清楚那個「來回溝通」的價值,我整理了一下 AI 給的初版跟我們慢慢調整後的最終版,那個差異...嗯...還蠻明顯的。

功能項目 AI 給的第一版 (直接輸出) 來回溝通後的最終版
背景處理 就...純色。從圖片抓個主色調,有點單調。 多了選項,可以選純色,也可以用原圖的「模糊版」當背景。質感好很多。
視覺效果 只有一張圖在中間。嗯,沒了。 在圖下面加了會動的「音波圖」,整個畫面就活起來了。
音波圖細節 (一開始根本沒有這個功能) 不是固定的假動畫,是真的會跟著音樂高低起伏去變化的那種。這點改超久。
使用者彈性 參數寫死在程式碼裡,要改影片設定得動 code。 所有東西都拉出來變成網頁上的選項,上傳圖片、音樂、剪輯時間、連音波顏色都能自己選。
易用性 要會用 command line (命令提示字元) 跑 Python 才行。很麻煩。 就是個網頁,點一點、上傳檔案,按個鈕,影片就下載回來了。給誰用都可以。

一些心得...或說學到的事吧

這次弄完,我自己覺得有幾個點...嗯...蠻值得記錄一下的。

第一,一開始有個大概的想法就好。不用想得太完美、太完整。反正你跟 AI 的合作,注定就是一個不斷修改的過程。特別是最後那 10% 的細節,超級花時間。

第二,給的回饋要具體。你不能只跟它說「不好看」,你要說「我覺得背景太單調了,能不能試試模糊效果?」或「這個音波圖看起來很假,它應該要跟著節奏跳動」。你描述得越清楚,它才越可能做出你要的東西。

第三,一次只加一小塊功能。不要想著一次到位。今天先把圖放中間,明天再想辦法加陰影,後天再來弄音波圖。這樣一步一步來,比較好管理,出錯也才知道是哪裡錯了。

第四,邊做邊測。AI 給你一段 code,你就馬上跑跑看。它改了什麼,你就馬上測試。不要等到全部都做完才發現,啊,原來第一步就歪了。

最後一個是...版本控制真的很重要。雖然這次 AI 沒給我搞出什麼毀滅性的錯誤,但...說真的,我還是習慣在請它做下一步修改之前,先把目前能動的版本 commit 到 Git。美國這邊的開發者很多也強調這點,他們用的 Windsurf 工具本身有 rollback 功能,但我覺得還是自己手動存檔最保險。萬一它改到整個專案都爛掉,你至少還能退回到上一個版本。


聊聊你的想法:

如果今天也給你一個這樣的 AI 開發夥伴,你最想請它幫你自動化什麼日常瑣事?是每天整理報告、自動回覆 Email,還是...做些更有趣的?在下面留言分享看看吧。

Related to this topic:

Comments

  1. profile
    Guest 2025-10-24 Reply
    其實我自己用Streamlit湊UI那陣子,真的有點五味雜陳欸。自定義看起來超自由,但就像拿雙面膠黏東西──黏住了也拔不太掉。有些時候單純想調個色、陰影還是啥小立體感,光弄那一段就可以卡半天,到最後連漂不漂亮都還要打一個大問號。然後AI生圖這件事…坦白講啦,有時候覺得他好像根本沒聽懂我在說啥,一張比一張更離奇。 突然想到,你們團隊README那些文件,是不是很多人直接全丟給Manus去寫?Manus真的懂你們專案裡面每一顆奇怪的參數嗎?我總覺得他產出的內容有種機器人直譯感,很容易miss掉一些開發流程裡面的雷點或討論過的小細節。而且你知道嗎,遇到需要一起修正或紀錄怎麼踩坑的地方,AI生成的版本常常變得亂成一鍋粥,有問題也不知道要找誰幫忙解釋……是不是只有我會這樣? 對了,我一直很納悶,那些waveform動畫,每次花時間加進去,好像除了讓畫面多點動態效果外,到底還能幹嘛啊?有沒有什麼被大家忽略到的實際功能?欸,如果有人研究過拜託跟我說一下!
  2. profile
    Guest 2025-08-18 Reply
    學長好!剛看到這篇超有感,想請教下AIGC協作的實戰經驗。我最近在做專案,對於AI輔助開發很有興趣。可以分享一下妳/你在Prompt設計和專案整合上的心得嗎?感覺好像可以學不少
  3. profile
    Guest 2025-08-10 Reply
    嘿,看起來這是一個超級酷的 AIGC 工作坊!我在矽谷的團隊剛好也在做類似的專案,能不能交流一下你們的技術細節?特別想聽聽那個波形動畫和 Streamlit 介面客製的部分。