[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fCBZOcRy5_-_GCmKT_VMGsl79QTlEfFrUfYaqksqUrxE":3},{"slug":4,"title":5,"body":6,"excerpt":7,"tags":8,"maturity":12,"meta":13,"plantedAt":14,"tendedAt":15,"shouldIndex":16,"resolvedLinks":17,"backlinks":24,"authorName":39},"rootnote-origin","Rootnote：這座花園本身就是一件作品","你現在看的這個網站，是我為了學 **SSR 與 SEO 實務**而種下的專案——與其做一個假想的部落格範例，不如讓「學習的載體」直接變成「學習的成果」。所以這座花園的每一個功能，背後都對應一段真實的取捨。\r\n\r\n## 為什麼叫 Rootnote\r\n\r\nroot × note——根與筆記，諧音 footnote（註腳）。個人網站說到底就是一個人的註腳集。logo 是一枚圓章：一顆發芽的節點，莖上分出枝椏，對應知識圖譜裡「筆記是節點、連結是枝」的世界觀。\r\n\r\n## 萬物皆 Note\r\n\r\n這裡刻意**不區分**部落格文章、專案介紹、隨手筆記——全部都是同一種東西：Note。作品集？那只是撈 `project` 標籤的一個視圖。部落格？那是長到成熟的筆記。這個決定讓後端只有一個 aggregate，卻讓前台可以長出列表、圖譜、標籤雲、[[wikilinks-backlinks|雙向連結]]各種形狀。\r\n\r\n## 成熟度光譜：種子 → 扎根 → 常青\r\n\r\n數位花園（digital garden）的核心信念是：**想法不必等到完美才發表**。每則筆記在光譜上生長：\r\n\r\n- 🌱 **種子**——粗略的隨手記，可能只有幾行。對搜尋引擎 noindex（未熟的內容不該被索引），列表上整卡降對比、掛「種子」膠囊提醒你別用成品的標準讀它。\r\n- 🌿 **扎根**——被持續照顧、連結慢慢長出來的中間態。\r\n- 🌳 **常青**——打磨完成、隨時可讀。只有這個階段會出現在 [[newsletter-double-optin|常青通知]]裡。\r\n\r\n重要的紅線：成熟度**只由作者手動照顧**，訪客的[[throttle-429-404|澆灌與到訪]]是溫度，不是 metrics——這裡不做排行榜。\r\n\r\n## 技術骨架\r\n\r\n前台是 Nuxt SSR（[[ssr-rendering-modes|逐路由混搭渲染策略]]、[[seo-foundations|SEO 基本盤]]），後台管理與 API 站在我的 [[forge-monorepo|monorepo 平台基底]]上——auth、稽核、jobs queue、信件系統都是現成積木，這個站真正新寫的業務程式碼其實很薄。這正是我想驗證的事：**基底夠好，延伸專案就能把力氣花在產品本身。**","你現在看的這個網站，是我為了學 SSR 與 SEO 實務而種下的專案——與其做一個假想的部落格範例，不如讓「學習的載體」直接變成「學習的成果」。所以這座花園的每一個功能，背後都對應一段真實的取捨。 為什麼叫 Rootnote root × note——根與筆記，諧音 footnote（註腳）。個人網站說到底就是一個人的…",[9,10,11],"project","rootnote","心路","evergreen",null,"2026-07-14T06:54:13.532Z","2026-07-14T06:54:14.006Z",true,{"wikilinks-backlinks":18,"newsletter-double-optin":19,"throttle-429-404":20,"forge-monorepo":21,"ssr-rendering-modes":22,"seo-foundations":23},"Wikilinks 與 backlinks：用算的，還是落表？答案是一半一半","結緣、澆灌與一封確認信：匿名網站的信任設計","一場 429 假扮 404 的偵探記：限流的讀寫分道","把散落的專案熔成一座鍛造廠：monorepo 遷移記","SSG、ISR、SSR：一個站三種渲染，逐路由挑","SEO 基本盤：在 Lighthouse 100 之前要做完的每件事",[25,28,30,33,36],{"slug":26,"title":19,"maturity":27},"newsletter-double-optin","budding",{"slug":29,"title":23,"maturity":12},"seo-foundations",{"slug":31,"title":32,"maturity":27},"code-use-note-stats","程式碼走讀：一個 composable 裡的樂觀更新與回滾",{"slug":34,"title":35,"maturity":27},"code-atomic-upsert","程式碼走讀：計數器為什麼不能 load–mutate–save",{"slug":37,"title":38,"maturity":27},"claude-design-handoff","與 AI 設計師協作：交接包、拍板權與閱後即焚","AI助理"]