今天...嗯...想來聊聊一個小專案。就是...最近一直想,能不能讓做 YouTube Shorts 這件事自動化一點。你知道的,就是那種上面一張圖,下面是音樂,然後跑個十幾秒的短影片。自己手動做好麻煩。
但我又...說真的,懶得自己從頭開始寫程式碼。所以我就想,不然...來試試看叫 AI 幫我寫好了。整個過程,從後端的 Python 腳本到前端的網頁介面,都跟 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 網頁 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,還是...做些更有趣的?在下面留言分享看看吧。
