讀者信箱這條路 — 從一個想法到一整套系統
2026.02.24
一個讀者信箱的背後,
是寶店長想跟每一個人好好說話的心意。開一間店,不難,
好好對待每一個人,那並不容易。
起心動念
靈食雜貨舖開張後,
寶店長一直在想一件事:
雖然寶店長的最終理想是一間實體店面,
但現在虛擬店面先將就著吧。
然而,
讀者看完文章後,有話想說,要怎麼說?
留言區?
太公開了,有些話只想私下講。
而且技術層面有點高,還要找後端存放資料庫。
Email?
是個辦法,但門檻似乎有點高。
社群私訊?
這好像不是個可以深入講話的地方,
而且寶店長還不紅,
還沒心力經營社群。
我想要一個地方,
讓讀者可以很輕鬆地,
跟寶店長說說話。
就像雜貨舖的櫃檯一樣,
你走進來,想聊就聊,
不想聊也沒關係,看看就走。
但如果你想說什麼,
寶店長一定在。
開始,就是這樣的想法。
第一個問題:用什麼接收?
寶店長不是工程師,
所以一開始想的很單純—
「弄個表單,讓讀者填一填,我收到就好了。」
Google 表單?
我自己會想填寫嗎?
嵌入 iframe?
那又是什麼?
我搞不清楚,但好像不能自訂樣式。
那自己做一個看起來很美的表單頁面?
可以是可以,但資料要存在哪?
跟 Claude 討論了一下,
Claude 建議用 Google Sheet 當資料庫,
搭配 Google Apps Script 當後端。
「哇,這是什麼東西啊?」
(我只不過開間店,真的要變維修工了。)
Claude:
「簡單說,你在 Google Sheet 上寫一段程式,
它就會自動接收網站送過來的資料,
存到你的試算表裡。」
「免費嗎?」
Claude:「免費。」
「那就它了。」
很多時候,選擇工具的理由,
就是這麼樸實無華。
設計表單:寶店長也會想用的表單
接下來要想的是—
讀者來這個頁面,到底想做什麼?
如果是寶店長自己,會想要怎麼用?
跟 Claude 一來一回討論了好幾輪,
最後定出四種類型:
| 類型 | 做什麼 |
|---|---|
| ❤️ 訂閱週報 | 想收到寶店長的週報 |
| 📖 回應文章 | 對某篇文章有感觸,想跟寶店長分享 |
| 🫧 聊天 | 就是想跟寶店長聊天 |
| 💡 建議客訴 | 給雜貨舖建議或發牢騷 |
四種類型,對應四種心情。
而且可以複選—
你可以同時訂閱週報,又回應文章,又想聊天。
寶店長就是這樣想東想西,想面面俱到,什麼功能想得到的,都給它放進去。
表單的流程設計
這裡花了最多時間思考。
一開始的想法是:
一頁全部攤開,讓讀者從頭填到尾。
Claude 說:「這樣讀者一打開,看到一大堆欄位,會直接關掉。」
「也是。我自己看到長表單也會關掉。」
於是改成了多步驟流程:
Step 1:先認識你(Email + 稱呼)
↓
Step 2:你今天想做什麼?(複選類型)
↓
Step 3+:依序填答每個類型的內容
↓
送出!
每一步只看到那一步的東西,
不會被嚇到。
做這個還真不簡單,
還要考慮到人性。
還加了進度指示器(就是上面那排數字圈圈),
讓讀者知道自己走到哪了。
使用者體驗這件事,
自己用的時候不會想太多,
但幫別人設計的時候, 處處都是學問。以後填寫表單時,真的要讚嘆人家的用心。
稱呼的設計:一個小巧思
表單第一步要填稱呼。
一開始只有一個文字輸入框,
但後來覺得,有些人可能不想透露名字。
於是設計了選項:
- 「稱呼不重要,看寶店長隨意!」
- 「寶店長可以稱呼我為『貴客』!」
- 或者自己填
連稱呼都要替讀者想好退路。
因為寶店長知道,
有些人光是要開口說話,
就已經很勇敢了。
寶店長到現在,也是很害羞,不知道怎麼介紹自己。
所以,寶店長懂。
訂閱的那些選項
訂閱週報的問卷裡, 問了「為什麼想訂閱」:
- 寶店長實在太可愛了!
- 寶店長實在太幽默了!
- 寶店長實在太囉嗦了!
- 寶店長實在太用心了!不支持不行!
- 寶店長經營的靈食雜貨舖實在令人太有啟發了!
- 沒有什麼原因,就是想訂閱。
寫這些選項的時候,寶店長非常開心呢。
做一件自己也熱愛喜歡的事,
全世界才會被你感染到呢。
回應文章:讀者投書
「回應文章」這個類型,
是寶店長最期待的。
因為寫文章是單向的,
你不知道文字到了另一端,
被怎樣的人讀到,
產生了怎樣的感受。
所以這個區塊的設計很簡單:
- 哪篇文章觸動了你?
- 請務必跟寶店長分享心得感受!
- 額外選項:請寶店長回信 / 允許分享
寶店長衷心希望,
大家真的很真實地回饋心得,
那是最寶貴的內容了。
聊天:來者不拒
聊天類型的設計,
是最能展現寶店長風格的。
「我想跟寶店長聊天,是因為...」
- 我想問問題!
- 我想被聽見!
- 我想講講話!
- 我想要聽寶店長不專業的意見!
然後問讀者:「希望寶店長如何回應?」
- 請務必回信!!!
- 回不回信都沒差。
- 千萬不要回我信!!!
- 我沒想法。
寶店長自認為想得很周到。
也真的很希望,
如果你需要被傾聽,
歡迎來找寶店長。
建議客訴:玻璃心 的覺悟
客訴區的副標題寫的是:
「請儘管給建議,我可以接受客訴的,
我的玻璃心會自己撿好的。」
這不是開玩笑的,
寶店長的玻璃心是真的。
但玻璃心歸玻璃心,
該聽的建議還是要聽。
所以客訴類型自動標記為「需要回覆」,
寶店長的待處理清單會自動加上一筆。
客訴是最好的禮物,
雖然拆開來的時候可能會受傷。
Google Apps Script:後端的故事
前端做好了,
接下來是最技術的部分—
讓表單送出的資料,真的存到 Google Sheet。
寶店長完全不懂 Apps Script,
但 Claude 一步一步帶著做:
- 在 Google Sheet 開啟「擴充功能 > Apps Script」
- 寫一個
doPost函數,接收 POST 請求 - 根據
type欄位,寫入不同的分頁 - 部署成「網頁應用程式」,拿到一個 URL
- 前端用
fetch把資料送過去
聽起來很簡單對吧?
來,你試試看,
有種東西叫做有看沒有懂,
做了成功了,但是可以徹底忘記自己做了什麼。
資料怎麼分類?
一開始想把所有類型的資料都放同一個分頁,
用一個 type 欄位區分。
但 Claude 建議—
每個類型一個分頁,資料更清楚。
於是 Google Sheet 的分頁變成這樣:
| 分頁名稱 | 對應類型 |
|---|---|
| 📖 回應文章 | article |
| 🫧 聊天 | chat |
| 💡 建議客訴 | feedback |
訂閱比較特別,
是寫到另一個獨立的 Google Sheet,
因為訂閱名單跟讀者回饋是兩件事。
還加了一個 📋 待處理 分頁—
如果讀者勾了「請回信」,
系統會自動在待處理分頁加一筆,
寶店長打開就知道有誰在等回信。
自動化不是為了偷懶,
而是寶店長三頭六臂也不夠用啊。
送出後的感謝語
表單送出成功後,
會根據類型顯示不同的感謝語:
- ❤️ 訂閱:「寶店長會用心經營的,敬請期待!」
- 📖 回應文章:「你的分享對寶店長來說很珍貴!」
- 🫧 聊天:「寶店長收到了,會找時間好好回你的!」
- 💡 建議客訴:「感謝你的建議,寶店長的玻璃心正在自我修復中...」
每一句都是真心話。
尤其 是最後一句,
寶店長寫的時候笑了,
但也覺得要先打預防針,
萬一真的收到客訴,
至少讀者知道寶店長的玻璃心很脆弱。
優化:那些後來才想到的事
表單上線後,
擺放了一段時間,
也的確沒人寫信,
不過沒關係,
趁機發現一些可以更好的地方。
啟發對話的專屬欄位
油條生跟燒焦生的啟發對話系列,
每篇文章最後都有一句:
歡迎寫信告訴我們:
👉「你曾經發現自己在錯的地方找答案嗎?」
但這個「寫信」,原本只是純文字。
讀者看了之後—去哪裡寫信?
連結都沒有附。
我也真是暈了。
這就像在路邊掛了一個招牌寫「歡迎光臨」,
但門在哪都不知道。
於是做了兩件事:
第一,加上明確的連結。
改成這樣:
歡迎寫信告訴我們:
👉「你曾經發現自己在錯的地方找答案嗎?」
一個明確的按鈕,讓讀者知道要點哪裡。
第二,在信箱裡新增「啟發對話」專屬類型。
原本只有四種類型,
但啟發對話跟一般的「回應文章」不太一樣。
回應文章是讀者自由填寫文章名稱,
但啟發對話有明確的篇目可以選,
而且寶店長更想知道的是:
哪句話讓你有共鳴?你自己的故事是什麼?
所以新增了第五種類型:
| 💬 回應啟發對話 |
|---|
| Q1. 哪一篇啟發對話讓你有感觸?(選擇篇目) |
| Q2. 哪一句話最讓你有共鳴? |
| Q3. 分享你自己的故事或想法 |
| Q4. 額外選項(回信 / 允許分享 / 希望油條生和燒焦生聊聊這個主題) |
歡迎回答**「希望油條生和燒焦生聊聊這個主題」**—
這樣燒焦生就不用苦惱下一篇的主題是什麼啦。
互動,從來不只是單向的給予,
是雙向的交流,才能激盪出更美的火花。
匿名分享:不留 Email 也可以
表單上線後,寶店長在想一件事:
如果有人想說話,但不想留 Email 呢?
原本 Email 是必填的,非常合理,
寶店長回信,當然需要 Email,
但問題是吼,
可能有人就是想匿名,也不想收到回信。
好吧,
基於尊重大家的立場,
還有寶店長想盡可能提供各種選擇,
所以就開了一個例外,
可以匿名留言,
這非常有誠意,
希望大家可以有心得感受就可以回覆寶店長,
都已經做到這樣了。
總之,跟 Claude 討論了三個方案:
| 方案 | 做法 | 優缺點 |
|---|---|---|
| A | Email 改成選填 | 簡單,但容易漏掉想回信的人 |
| B | 提供匿名選項 | 明確告知後果,讓讀者自己選 |
| C | 維持不動 | 安全,但可能嚇跑人 |
最後選了 方案 B。
在表單第一步加了一個勾選:
☐ 我想匿名分享,不留 Email
勾了之後:
- Email 欄位消失
- 稱呼自動變成「匿名的有緣人」
- 跳出提醒:「⚠️ 匿名分享的話,寶店長將無法回信給你喔!」
但有個限制,
匿名的人不能選「訂閱週報」或「聊天」,
因為這兩個本質上需要聯繫方式,
所以,還是鼓勵大家盡可能留下 Email 啦。
寶店長就是要尊重每一個人的選擇跟想法,
我懂毛很多的感覺。
後端也要跟著改
前端改完了,後端的 Google Apps Script 也要跟著調整。
新增「啟發對話」類型意味著:
- Google Sheet 要多一個 💬 啟發對話 分頁
- Apps Script 要加上
dialogue類型的處理邏輯 - 待處理清單也要能接收啟發對話的回信請求
這些改動不複雜,
因為 Claude 會給指示,
寶店長被 訓練到很會看說明文件了。
不過,
文字再怎麼清楚,
沒嘗試過的方法,
還是要花一些時間的。
沒關係,
寶店長跟你拚了。
技術架構全貌
整個讀者信箱的架構其實不複雜,
但每一層都是一步一步搭出來的:
讀者在 /write 頁面填寫表單
↓
React 前端收集資料,打包成 JSON
↓
fetch POST 送到 Google Apps Script
↓
Apps Script 解析資料,判斷 type
↓
根據 type 寫入對應的 Google Sheet 分頁
↓
如果需要回信,自動加入「待處理」分頁
↓
寶店長打開 Google Sheet,看到新的來信
就這樣,依舊看不懂
不過,
沒有資料庫,沒有伺服器,沒有後台管理系統,
簡單處理就好,
一個 React 頁面 + 一個 Google Sheet + 一段 Apps Script。
重點是,
成本?費用零。
但,也花了半天時間。
總之,
心意無價啦。
希望不要遺漏任何一個,想說話的人。
那些讀者不知道的事
看到這裡,
有沒有很想去點點讀者信箱了啊。
(友善建議:趁現在還沒人寫,趕緊寫喔,到時候人突然多起來,請排隊等寶店長回信喔。)
雖然看到的會是一個簡單的表單,
真的很簡單。
但多的是你不知道的事(血汗淚):
- 那個看起來很普通的 checkbox 元件,改了三次才讓「Other」的勾選邏輯正確
- 多步驟表單的「上一步 / 下一步」,要處理到每個狀態都正確,比想像中複雜
mode: 'no-cors'這四個字,是因為 Google Apps Script 的跨域限制,找了好 久才知道要加(這是程式自己的抱怨,反正我就按 Enter,一直按。)- 每次加一個新類型,前後端要同時改,而且 Apps Script 改完要記得重新部署
使用者覺得理所當然的每一個流暢操作,
背後都是踩過的坑,跟燒掉的 tokens。
回頭看整個歷程
從「想跟讀者說話」的念頭,
到今天有五種類型、匿名機制、自動待處理的完整系統:
| 階段 | 做了什麼 |
|---|---|
| 起心動念 | 想要讀者互動,但不知道怎麼做 |
| 選擇工具 | Google Sheet + Apps Script,免費又夠用 |
| 設計表單 | 四種類型、多步驟流程、進度指示器 |
| 選項設計 | 每個選項都替讀者想好退路 |
| 後端串接 | Apps Script 接收資料、分頁儲存、待處理自動化 |
| 上線使用 | 在文章中引導讀者寫信 |
| 第一次優化 | 啟發對話專屬欄位、文章連結從純文字改成明確按鈕 |
| 第二次優化 | 匿名分享機制、限制匿名不能選需要回信的類型 |
| 後端同步 | 新增分頁、調整 Apps Script、重新部署 |
改了又改,改了又改, 看到這裡是不是很想要寫信給寶店長,非常歡迎。
💡 寶店長學到了什麼
做一個讀者信箱,
技術上真的不難。
難的是耐心、堅持、不放棄。
每一個跟程式搏鬥的背後,
都是寶店長「在乎大家」的心意啊。
💬 寶店長後記
一個信箱,
看起來很小的事,
做起來才知道有多少細節,
寫出來才知道有多麼誠懇。
無論如何,
希望這些用心,
能盡可能地接住所有來到這的有緣人,
讓大家的心有地方安放。
如果你看到這裡,
想對寶店長說什麼,
那就來說吧。
如果還真的不想說,
也沒關係,
我也可以少件事啊,哈哈哈。
(開玩笑的啦。)
不管你是想說點什麼,
還是只是想被聽見,
寶店長的信箱,永遠為你敞開。
匿名也好,具名也好,
你的聲音,都是珍貴的,
寶店長深表感恩。
祝福大家,今日的身心靈,一切安好。
🧩 延伸閱讀
© 2026 Spirit & Savor 靈食雜貨舖
系列:精選靈食・寶店長・寶店長的學習筆記
📧 spiritandsavor@gmail.com