當靈感遇上 AI:一個上午的加速實踐

這篇文章不是遊記,而是關於這個網站與這個計畫是如何誕生的紀錄。 過去,當我們萌生一個「想去探索台灣河流」的念頭時,往往會卡在繁瑣的規劃、資料蒐集,甚至是架設網站的技術門檻上。但這次,我嘗試了一種全新的工作模式——與 Agentic AI (Antigravity) 協作規劃

以下是我們在短短時間內,從「一個想法」到「網站上線」的歷程筆記。

第一階段:從模糊到具象 (The Brainstorming)

1. 結構化龐雜資訊

一開始,我只有「想探索河流」這個模糊的概念。我請 AI 扮演研究分析師,快速梳理了台灣北部、中部、南部、東部的主要河川。

  • 關鍵產出:AI 幫我列出了一份包含 11 條主要河川的清單,並針對每一條河列出了「景觀」、「生態」與「人文」的探索重點。這份清單成為了後續所有行程的骨架。

2. 定義探索方法論

我們不只是去玩,而是希望帶入**「流域治理」「開放資料」**的視角。AI 協助我將這些硬核的知識轉化為一篇名為〈數位河流學〉的方法論文章,確立了這個部落格「知性與感性兼具」的基調。


第二階段:技術苦工的自動化 (The Infrastructure)

有了內容,需要載體。我選擇了 Hugo 這個靜態網站產生器,但技術細節往往是最磨人的。

GenAI 解決了什麼?

  • 環境建置:從 hugo.yml 的基礎設定,到 PaperMod 主題的調整。
  • 功能客製化
    • Google Maps 嵌入:解決了 Hugo 預設擋掉 iframe 的安全性設定。
    • 自動目錄 (TOC):協助開啟全站的文章導覽,解決了不同頁面顯示不一致的問題。
    • 系列分類 (Series Taxonomy):建立特殊的「Series」頁面,讓針對同一條河流(如大甲溪)的不同文章能自動聚合,並擁有專屬的介紹首頁。
  • 除錯 (Debugging):最經典的是 “Future Date” 問題。當我看不到新文章時,AI 迅速指出是因为我的文章日期設在「明天」,並教我設定 buildFuture: true 來解決。

第三階段:內容深度的擴充 (The Content)

在撰寫《大甲溪車宿攻略》與《后里環保公園指南》時,AI 扮演了編輯與資料庫的角色。

  • 它記住了我要去「后里」,並能提醒我那邊是合法的車泊點,甚至補充了「洗澡要去附近游泳池」這種在地細節。
  • 當我需要針對「歷史文化」做補充時,它能迅速生成一段關於大甲溪流域開發史的背景介紹,讓我能專注於個人體驗的書寫,而非重複查閱維基百科。

第四階段:連結真實社群 (The Connection)

最後,為了讓這個計畫落地,我們建立了一個 “Planning” (旅程規劃) 頁面。

  • 動態儀表板:我們設計了一個頁面來展示「進行中」與「未來」的計畫。
  • 意願表單:透過嵌入 Google Forms,讓這個單向輸出的部落格變成了雙向互動的社群入口。
  • 啟動 Discord 社群:我們不滿足於部落格的單向輸出,因此建立了「🧪 哈爸實驗室」Discord 伺服器。
    • 分流設計:AI 協助設計了「Onboarding (導覽)」流程,讓對「河流探索」與「GenAI 技術」感興趣的不同族群,能透過 Role (身分組) 自動分流,看到彼此想看的頻道,實現「低雜訊、高訊號」的社群體驗。

第五階段:接入開放資料 (The Data)

為了深化探索的科學性,我們決定不僅僅依賴旅遊資訊,而是直接對接政府的 Open Data。

  • 資料探勘:AI 作為研究助理,協助在「政府資料開放平臺」與「水利署資料庫」中挖掘出關鍵的圖資,例如「河川流域範圍」與「C級洪氾區域」。
  • 格式的巴別塔:面對 Shapefile (.shp) 這種專業 GIS 格式與 Google My Maps 僅支援 KML 的落差,AI 迅速找到了 ogr2ogr 轉換方案,甚至解決了編碼 (Big5) 造成的亂碼問題。

第六階段:GIS 資料的處理 (The Processing)

有了資料,下一步是將其轉化為可用的情報。這涉及到複雜的空間運算。

  • 環境部署:利用 Python Fabric 自動化腳本,將本機的 Conda 環境 (m2504) 與 GIS 工具鏈 (GDAL/SpatiaLite) 整合,讓複雜的環境設定變得一鍵可得。
  • 幾何萃取:從全國的河川資料中精準「萃取」出大甲溪流域,並進行「緩衝區 (Buffer)」分析,這些過往需要專業 GIS 軟體操作的步驟,現在透過 AI 寫好的 SQL 腳本就能自動完成。

第七階段:散步地圖的建構 (The Mapping)

最終,所有的技術與資料都匯聚成一個目標——「散步地圖 (Walking Map)」。

  • 資料庫設計:我們設計了一套基於 SQLite/SpatiaLite 的輕量級資料庫 Schema,透過 layers (圖層) 與 features (特徵) 的結構化設計,納入親水點、車泊地與風險區。
  • 公民科學的容器:這個地圖不只是給我用的,更是為了整個社群。我們引入了彈性的 meta_data 與 JSON 範本,讓未來每一位參與者都能用標準化的方式回報在地發現,共同繪製出一張活著的地圖。

結語:AI 作為催化劑

回頭看這段歷程,GenAI 並沒有取代「探險」本身——開車去大甲溪、在河邊生火、與朋友聊天的可還是我。 但它極大地降低了「啟動」的摩擦力。它接手了繁瑣的整理與編碼工作,讓我能將精力保留在最核心的「體驗」與「連結」上。

這就是這個網站的起點。