為什麼我請 AI 把每份提案都做成 HTML

這篇是在說我實在懶得看 Agents 的提案,又不敢就這樣一直放行,所以拖拖拉拉延遲進度,後來終於解脫的激勵人心的故事。

為什麼我請 AI 把每份提案都做成 HTML

最近總覺得自己很廢。

我的第二個產品 innie 已經開始五個月了,砍掉重練了四次,還是沒找到我滿意的方向。而 mojo 的活躍使用者成長滿快的,但 MRR 看來已經到平台期。即使做了許多新功能、很多 user 說多棒多棒,但收入... 沒什麼變多耶!

為了讓家裡的貓咪有更多罐罐,我開始研究和 revenue 有關的策略。包含新的 business model、onboarding 優化,還有 Email 行銷自動化。我的天,為何不是第一天就最關心這個呢?

這些策略需要很多的規劃。想當然,是請 AI 做。

於是,上週我請 Claude Code 幫我規劃整套 Email 行銷自動化方案。它非常認真,認真到我懷疑它是不是偷偷喝了我桌上那杯已經冷掉的咖啡。提案丟回來那一瞬間,Claude Code 給我兩百多行的 markdown,標題、子標題、bullet points、edge cases、testing strategy,排得整整齊齊,像新兵入伍那天的內務櫃。

我盯著那片密密麻麻的字,心裡只浮現一個聲音。

幹,我不想看。

老實說真的不想看。但又不能不看。因為如果我不看就放行,那所謂 human in the loop 根本是個騙局,我只是 loop 旁邊的吉祥物,揮揮手讓程式碼一路滑下去。

每次這樣囫圇吞棗按 yes,後面就會在某個禮拜三的凌晨兩點,用一個我看不懂的 bug 來敲我的門。就像網路上大家嘲笑的 Vibe Coder 一樣丟臉。

慢性懶惰

其實 Claude Code 已經很努力在終端機顯示好讀的內容了,但我放了三天都不想看。

這種狀態維持了一陣子。

明明知道冰箱深處的優格已經過期,每天打開又關上,每天告訴自己「下次再處理」,結果下一次的我跟這一次的我一樣懶,只是老了二十四小時而已。優格依然在那裡,靜靜地、不發一語地,朝某個誰也看不見的方向慢慢壞掉。

Agent 丟過來的 proposal 也一樣。

它躺在那裡,等待我審核。它不催我,不會敲我桌子,也不會在我臉書留言或是 Line 我。它只是安靜地占據我的終端機,等待我用一個 yes 或者 no 打發它。

可我心裡很清楚,那個 yes 不是一個普通的 yes,那是一個會在未來某個時刻,從草叢裡跳出來咬我屁股的 yes。

於是我發明了一個小技巧。我請 Claude Code 把提案寫成 markdown,推到 GitHub。然後我點進去,GitHub 會把它渲染得漂漂亮亮,字級分明,code block 有 syntax highlight,看起來像一份正經的工程文件。

像這樣:

確實比 terminal 好讀。

但說真的,還是不夠。

因為它本質上還是一份文件。一份要你從頭讀到尾的文件。當你的 agent 一天丟給你五份這種文件,你還是會在第三份的時候開始恍神,第四份開始看到文字段落自動跳過,第五份直接 cmd+w 關掉它,然後對自己說「明天再看」。

殊不知,明天的我,依然跟今天一樣懶。已經這樣連續卡了三天沒有進展,產品 conversion 當然一點兒動靜都沒有。貓咪的罐罐已經快吃完了。

Markdown 已死?

就在這時候,我看到 Claude Code 的 Thariq 寫了這篇標題很欠揍的文章:「The Unreasonable Effectiveness of HTML」。

大概是說:「Markdown 曾經是 agent 跟人類溝通的預設格式,因為它簡單、可攜、好改。但隨著 agent 能做的事情越來越複雜,markdown 開始變成一種限制。我幾乎已經不寫 markdown 了,我都讓 Claude Code 直接吐 HTML artifact。」

他舉了一堆理由。HTML 可以放表格、可以放 SVG、可以放互動元件、可以放 CSS 上色、可以塞 JavaScript 做 slider、可以丟 S3 給同事看。最戳我的一句是:

「超過一百行的 markdown,我自己都讀不下去,更別說讓公司其他人讀。」

這不就是我嗎?

這篇文章出去之後,網路上立刻吵翻天。

有人說「Markdown is dead」,有人說「HTML is the new Markdown」,有人說 Anthropic 要拋棄純文字格式了。

Hacker News 上一堆人跳出來反駁,說 HTML 的 diff 太吵、原始碼太難讀、人沒辦法直接 co-author、長久看會讓人類退化成「只看 agent 產物的旁觀者」。Kurtis Redux 寫了一篇直接叫〈The Unreasonable Ineffectiveness of HTML〉,標題就是用來打 Thariq 臉的,裡面有一句話我看的冷汗直流:「If you stop reading source, you're outsourcing your thinking.」

如果你不再讀原始檔了,你也等於把思考外包了。

就在 Thariq 那邊喊著「HTML 比 markdown 好」的同時,Cloudflare 推出了一個剛好反方向的東西,叫做「Markdown for Agents」。它讓網站可以對 AI crawler 直接吐 markdown,而不是吐整包 HTML。

因為同一篇文章,HTML 大概 16,000 tokens,markdown 只要 3,000。對 agent 來說,HTML 那一堆 <nav><script>、CSS class 全部都是雜訊,吃 token 又看不懂重點。

所以,我覺得是這樣的:

  • 給 agent 讀的,markdown 比 HTML 好。
  • 給人讀的,HTML 比 markdown 好。

地圖集與導航

​我感覺 Markdown 比較像地圖集。每一頁都清清楚楚。台北、新北、桃園,山脈、河流、巷弄,每一條紅線藍線都在它該在的位置。完整、精確、可保存、可影印,你十年後翻開它依然是同一本地圖。

問題在於,當你只是想去某家咖啡店,你得自己翻目錄、找頁碼、對座標、計算路線、估算公車要轉幾次。如果你只是想喝一杯拿鐵,這套流程會直接讓你打消念頭不去也罷。

而 HTML 是 Google 導航。

你不需要把地圖讀完,才知道怎麼去那家咖啡店。你輸入目的地,它幫你把你現在需要看的那一段地理資訊即時組合出來。你可以放大看路口的紅綠燈,可以縮小看整段路花幾分鐘,可以切到 satellite 看實景,可以點公車圖層查有沒有捷運。每一個操作,都不是要你讀完整本書,而是讓你這份資訊做下一個決定。

但這不代表 markdown 就死了。

因為當 agent 跟 agent 之間在傳東西、或我自己想直接改點什麼、或我要把這東西塞進 git history 留十年,Google 導航就變成一個累贅。它太重了。它要的東西太多了。它把資訊變成介面,但也把可編輯性、可 diff、可長期維護的特性犧牲掉了。

地圖集當然沒有要消失。測量員需要它、登山客需要它、收藏家需要它、收訊不到的山溝裡你也需要它。Google Maps 背後那份資料的祖先依然是它,你看到的每一條導航路線,最深處都來自某個誰測量過、繪製過、寫進地圖集裡的真相。

這兩個東西,本來就不該比較。

Markdown 是用來思考的格式,HTML 是用來呈現的介面。一個是 source of truth,一個是 surface of consumption。

來個今日金句(Claude 幫我寫的):

Markdown 是腦內筆記,HTML 是展示面板。
不要拿展示面板取代腦子,也不要要求腦內筆記長得像 dashboard。

吵 markdown 還是 HTML,其實是在用舊問題理解新工作流。AI 時代真正重要的,不是選一個格式當神,而是知道,什麼時候需要 source,什麼時候需要 interface。

/Preview Skill

所以我做了一個 skill。

那天晚上,客廳有群朋友在玩賽駱駝玩得哈哈大笑,外面下著那種斷斷續續、像有人忘記關水龍頭的雨。我坐在書桌前,泡了第二杯乳清蛋白,腦袋裡只有一個很單純的念頭:

「我要叫 Claude Code 把每次寫的提案,自己 render 成 HTML 給我看。」

不是要它放棄 markdown。markdown 還是要存在,那是它跟自己對話、跟其他 agent 對話、跟 git 對話的方式。但當它要跟我這個血肉做的、會累、會懶、會在禮拜三凌晨被 bug 敲門的人類溝通時,請給我一條生路,不要再把整本地圖集塞到我臉上。

我把這個 skill 叫做 /preview

它做的事情很簡單:把目前的提案(不管原本是什麼形式)轉成一個強調「人類可快速理解」的 HTML。會有 tabs、cards、表格、流程圖、互動元件。如果提案是 workflow,它會畫成一張可以點的流程圖。如果是設計方案,它會 side-by-side 排出來讓你比較。如果是技術規格,它會把 code snippet 折疊起來,只露出你需要 review 的關鍵段落。

我還加了 comment 功能,像 Google Doc 那樣,可以反白一段文字、留下評論。整份 review 完之後,按一個按鈕,所有 comments 會打包成一段 markdown,貼回 Claude Code,它就知道我哪裡有意見、要它怎麼改。

很輕量。沒有任何雲端帳號、沒有 login、沒有資料庫。

如果你有設定 Vercel,它還可以一鍵部署,生一個網址給你。我在樓下排隊買黃金麵線的時候,就可以拿手機點開,看 agent 提的方案,順手留兩個 comments,用 moshi 或 Claude 官方的 remote control 貼回去。

我終於不再是個笨重的 blocker。

終於按下 Yes 了

Skill 寫完後,我把那份 Email 自動化行銷的提案,丟進去用 /preview 跑一次。

Claude Code 跑了大概三十秒,吐出一個 vercel 連結。

我點開。

整份兩百多行的 markdown,被重新組織成一個有五個 tab 的小頁面:總覽、workflow 流程圖、欄位設計、邊界條件、實作步驟。每個 workflow 都被畫成可以點開的卡片,點下去會展開更詳細的條件分支。資料表是真的表格,不是 ASCII 拼出來的那種。風險點被標成紅色的小標籤,掛在對應的步驟旁邊。

我看了大概四分鐘。

四分鐘。比我之前對著 terminal 凝視三十秒、然後關掉、然後內疚一整天,短了一輩子。

而且我真的看完了。不是假裝看完,是真的看完。我留了七個 comment,貼回 Claude Code,它改了三個地方、跟我 argue 了兩個地方、坦承忘了一個 edge case。

0:00
/0:21

/preview 成果 demo

那一刻我突然覺得,它跟我之間的溝通順暢好多。他不再是它丟一份巨大的東西過來、我假裝翻過、然後悄悄把它推到桌子角落。

雨還在下,斷斷續續的,像某個忘記關水龍頭的鄰居。我喝了一口已經涼掉的乳清,已經有點苦,但那是一種我願意承擔的苦。

後話

我把這個 skill 開源了,丟在 GitHub。是 solopreneur 的一部分,如果你跟我一樣 LLM App 開發者,可能適合你。

你也可以單獨裝 /preview skill,原始檔在這:Soloreneur: /preview

我沒有要說服任何人 markdown 應該被取代,也沒有要說服任何人 HTML 才是未來。

我只是發現,當你的同事變成 AI,文件這個東西就該長得像介面。

文字會議紀錄變成可點擊的 dashboard。spec 變成 mockup。code review 變成有圖有真相的 walkthrough。研究報告變成可以拖拉比較的 playground。這些東西不是要取代 markdown 的儲存價值,而是在 markdown 之上,多生出一層「人類可消化」的薄膜,給我們這些懶人一線希望

至於那個被我放置好幾天的 Email Marketing 規劃,我終於讀完了。現在已經實作完成並上線,花費 Claude Max 方案 5% 的 token。期待可以帶來一些轉換。

而那盒過期的優格,我終於把它丟了。

對這篇文章有什麼建議或想法嗎?請 按此在 Twitter 留言按此在 Threads 留言 ,我會回應你 :)