在構思還有什麼是 blog 新增元件的時候,第一個想到的就是作者卡片這個元件,因為 Medium 把作者欄發揮很成功,讓我覺得這個東西是必須的。

滑到文章最下面,乾淨的版面裡只出現一個精準的作者欄:大頭貼、簡短介紹、追蹤按鈕。讀者剛讀完文章、情緒在最高點,往下一滑就遇到你——這個設計讓「閱讀完畢 → 認識作者 → 追蹤」變成一個無縫的動作。Medium 是第一個把這個做成功的平台,也定義了之後所有 blog 的標準。

所以在規劃 blog 功能的時候,AuthorCard 是第一個想到的元件。作者欄之外,還需要一個 About 頁讓人能去更完整地認識你——兩個功能一起做,概念上是同一件事。

另外還有一個細節要先處理掉:瀏覽器標籤頁的 favicon。總不能讓人看到一個灰色的地球 icon 一直在那邊,不夠乾淨也沒有識別感。


第一版:先用 favicon 佔位

favicon 和 AuthorCard 都需要一張「代表自己的圖」,但那張圖還沒有。正在想要不要去找圖庫或生成器的時候,AI 直接說:「我用 SVG 做一個就好,建議用 J 當符號。」

favicon 做好之後,AuthorCard 的頭像還沒著落。靈機一動——favicon 是 SVG,拿來套 border-radius: 50% 不就是圓形頭像了?

意外地好看。J monogram 在圓框裡很乾淨,整個 AuthorCard 可以先上線,之後換圖只需要改一行路徑,不影響其他結構。

這個「先佔位、結構不動、後換內容」的思路,跟 React component 的設計邏輯是一樣的。


生成一張數位識別圖

favicon 做好之後,開始討論 AuthorCard 和 About 頁要用什麼圖——個人照片、不同風格的插圖,還是做一個 logo?

AI 建議走「數位分身」的方向:生成一個有自己風格的虛擬形象,比照片更有品牌感,也不用真的對著鏡頭。選圖和生成的過程另外有一篇文章,這裡只說結果:最後用 ChatGPT 生成的兩張圖做為識別。

後來我把這段過程另外整理成 〈打造數位分身:為什麼圖片生成 AI 很難駕馭?〉。那篇主要記錄實際踩坑:同一個意圖丟給 Gemini 和 ChatGPT,為什麼一開始很有生命力,越加規格卻越失控;以及為什麼「用文字駕馭圖片」比想像中更像一個工程問題。


About 頁:從名片排版到 Hero

About 頁需要一段自介文案。突發奇想:AI 同時連著我的 OpenMemory 和 Obsidian 筆記,它到底認識我到什麼程度?不如讓它直接從記憶和筆記裡推論,幫我生一版看看。

生出來的確很認識我——但全部都是公司專案的內容,不適合拿來做公開的個人介紹。還是手動寫了一個草稿,再請 AI 潤稿。

版面的部分,原本是傳統的小頭像 + 名字 + 職稱排版。有了生成圖之後改成:

[場景圖,全寬橫幅]
Jasper Hung
Software Engineer...
...bio...
GitHub

讓圖片佔滿整個寬度,文字接在下方——比名片排版更有個人品牌感,也更像你在認識一個人,而不是在看履歷。


iOS Safari 捲動 Bug

AuthorCard 加完上手機測試,發現頁面無法往下捲動,author card 被截斷。

根本原因:body 用了 height: 100vh,但 iOS Safari 的 100vh 計算包含 browser toolbar 高度,<main> 的可捲動區域就被 toolbar 擠掉了。

修法一行:100vh100dvh(dynamic viewport height,動態排除 browser toolbar)。

之後凡是需要全高版面,直接用 100dvh


心得

搭建自己的 blog,其實跟開發一個系統很像——先找到最基礎的共同元件,把那個問題解決掉,後面就會很順。favicon 就是那個起點:有了 J monogram,AuthorCard 拿去用,About 頁再從 AuthorCard 延伸出去。一步一步搭起來,每一步都不大,但加起來就是一個完整的個人識別系統。

About 頁的文案那段也是,讓 AI 試著從我的記憶裡推論出自介,雖然最後還是自己手動寫,但這個過程蠻有趣的——有點像照鏡子,看看 AI 眼中的你長什麼樣子。