如何打造論壇:分類、主題串、搜尋與垃圾內容管控
論壇是由分類、分類內的主題串、主題串內的回覆,再加上帳號、搜尋與版主管理所組成的。它和聊天群組不同,因為對話是依主題整理的,並且能長期保持價值:有人可以透過搜尋找到三年前的主題串,並且仍然得到答案。要打造論壇,首先要把主題串頁面與搜尋做好;如果論壇是公開的,還要讓搜尋引擎能讀懂主題串;並且在第一位真正的會員註冊前,就要備妥垃圾內容與版主管理工具。
論壇需要什麼
頁面
- 分類列表:多數論壇的首頁,顯示每個分類的說明與最新活動。
- 主題串列表:分類內的主題串,依最新回覆排序,附回覆數量,以及已解決或置頂的標記。
- 主題串頁面:首篇文章與所有回覆依序排列,支援引用、表情反應與回覆框。
- 新增主題串表單:標題、分類、內文、選填標籤。
- 搜尋:涵蓋標題與貼文內容,可依分類篩選。
- 使用者個人頁:名稱、大頭照、加入日期、發文數與最近的貼文。
- 版主審核佇列:被檢舉的貼文與等待核准的貼文。
資料
| 資料表 | 關鍵欄位 |
|---|---|
| 使用者 | 名稱、大頭照、角色、信任等級、加入日期、狀態 |
| 分類 | 名稱、slug、說明、排序、誰可以發文 |
| 主題串 | 標題、slug、所屬分類、作者、是否置頂、是否鎖定、是否已解決、最後回覆時間 |
| 貼文 | 所屬主題串、作者、內文、建立時間、編輯時間、是否隱藏 |
| 表情反應 | 貼文、使用者、類型 |
| 檢舉 | 貼文、檢舉人、原因、狀態、版主的處理結果 |
| 訂閱 | 使用者、主題串(有新回覆時通知) |
把「最後回覆時間」與「回覆數」直接存在主題串上,主題串列表就能保持快速,而不必每次載入頁面都重新計算貼文數。
權限
- 訪客可以閱讀公開分類。
- 會員可以發文與回覆,並在限定時間內編輯自己的貼文。
- 版主可以隱藏、移動、鎖定、置頂與合併主題串,並停權使用者。
- 管理員管理分類與角色。
私人分類必須在伺服器端、每一次請求都進行檢查。主題串頁面、搜尋結果、RSS 與通知都需要同樣的檢查,否則私人貼文會從旁門洩漏。參見如何加入角色型存取控制。
決策與取捨
平面式或巢狀回覆。 平面式主題串(依時間順序排列回覆,並以引用標示)比較好讀,也是多數論壇的標準做法。巢狀回覆(Reddit 式的樹狀結構)適合辯論,但在手機上很難追蹤。除非有特殊理由,否則建議採用平面式。
問答模式。 對於支援與求助類論壇,讓發問者可以把其中一則回覆標示為採納答案,並顯示在問題正下方。這項單一功能就能讓舊主題串更有價值。
為了 SEO 而公開,還是私密。 公開的主題串頁面能帶來穩定的搜尋流量,但前提是搜尋引擎能讀取它們。這表示每個主題串都要有獨立乾淨的網址、真正的 <title>,而且貼文必須直接在 HTML 中,而不是之後由 JavaScript 載入。如果搜尋流量很重要,就要求伺服器端渲染或預渲染的主題串頁面。更多內容參見AI 打造網站的 SEO。
富文本或 Markdown。 附預覽的 Markdown 容易安全地儲存。視覺化編輯器對非技術會員比較友善。無論採用哪種,顯示前都要清理 HTML,確保沒有人能在貼文中注入腳本。
搜尋。 對論壇的前幾年來說,Postgres 全文搜尋已經足夠。只有在規模很大時,專用的搜尋服務才值得導入。參見如何為應用程式加入搜尋。
上線前就要處理垃圾內容與管理
論壇吸引自動化垃圾內容的速度,幾乎比任何其他網站都快,因為每篇貼文都是可能帶有連結的公開頁面。從一開始就要規劃:
- 信任等級。 新帳號不能張貼連結或圖片,前兩三篇貼文需等待審核。之後才能自由發文。
- 頻率限制。 替新帳號設定每分鐘與每天的發文上限。
- 發文前需完成 Email 驗證。
- 每篇貼文都有檢舉按鈕,並送入審核佇列。
- 對使用者連結加上 nofollow,讓垃圾發文者無法從搜尋引擎獲得好處。
- 管理紀錄,讓版主能看出誰做了什麼、為什麼。
- 清楚的版規,釘在每個分類中。
範例第一個提示
為家用義式咖啡愛好者打造一個公開的問答論壇。分類:機器、磨豆機、沖煮技巧、咖啡豆、買賣。任何人都可以閱讀;會員以 Email 與密碼註冊,並在發文前完成 Email 驗證。主題串頁面位於 /t/[slug],必須伺服器端渲染,並有獨特的標題與 meta 描述,讓搜尋引擎能讀取。回覆採平面式,依時間排列,支援引用與拇指向上的表情反應。發起主題串的人可以把其中一則回覆標示為採納答案,並顯示在問題下方。新會員的前三篇貼文需等待版主核准,核准前不能張貼連結。版主可以隱藏、鎖定、置頂與移動主題串,查看被檢舉貼文的佇列,而且每個操作都會記錄下來。加入可搜尋標題與貼文、並可依分類篩選的搜尋功能,以及我追蹤的主題串有新回覆時的應用程式內通知。所有資料存入資料庫。
建置步驟
- 先做主題串頁面。 建立幾個分類與五十個貼近真實的主題串。在手機上把閱讀、引用與回覆都做好。
- 分類與主題串列表。 依最新活動排序、置頂主題串在最上方、已解決標記。
- 帳號與驗證。 參見如何為應用程式加入登入。
- 版主管理與信任等級。 審核佇列、檢舉、隱藏、鎖定、移動、紀錄。以全新帳號試著張貼連結來測試。
- 搜尋。 試試會員真的會輸入的關鍵字。
- SEO。 發布後打開一個主題串,檢視原始碼,確認貼文都在 HTML 中。加入主題串的網站地圖。
- 放入真實內容。 自己寫下前二十個有用的主題串,或邀請幾位專家加入。空白的論壇沒有人會發第一篇文章。
常見錯誤
- 空著就上線。 沒有人願意率先發文。請先放入真實的問題與答案。
- 分類太多。 五個熱門分類勝過二十個冷清的分類。等之後再拆分。
- 新帳號不需審核。 垃圾機器人很快就會找到新論壇。
- 未經過濾的貼文 HTML。 貼文中的腳本可能接管其他使用者的工作階段。一定要清理使用者內容。
- 私人分類外洩。 要檢查搜尋結果與通知,而不只是主題串頁面。
- 每次載入頁面都計算回覆數。 把數量存在主題串上,並在貼文變動時更新。
- 沒有刪除帳號的方式。 請先決定離開的會員其貼文要如何處理。
什麼時候論壇軟體是較好的選擇
開源與代管的論壇軟體(例如 Discourse)已經花了多年改進信任等級、防垃圾、Email 整合、版主管理與行動版排版。如果你想要通用型論壇,而且不需要它成為其他應用程式的一部分,安裝或訂閱其中一套通常比自己打造更快、更穩妥。聊天工具適合快速交談,但不利於讓答案被找到。
當論壇是你產品的一部分(例如 SaaS 內的支援論壇、市集中的問答區)、當你需要把自訂資料附加在主題串上(機器型號、訂單、課程單元),或是希望論壇的設計與網址完全屬於你時,就適合自己打造。如果你需要更完整的會員空間,包括個人檔案與活動,請參見如何打造社群平台。
用 Mythex 打造
在 Mythex 中,你用對話描述論壇,在即時預覽中試用,然後發布到公開網址;使用 Pro 方案則可以設定自訂網域。當應用程式需要時,Mythex 會為使用者、主題串與貼文加入專用的 Postgres 資料庫,並為頭像與圖片提供檔案儲存。預設的技術架構是瀏覽器端渲染的 Vite 與 React 應用程式,因此若是公開論壇,建議要求伺服器端渲染的主題串頁面(Next.js 是一個選項),並遵循 SEO 食譜。會員登入與 Email 需要自行帶入:選擇做法與服務商,把金鑰存為專案祕密,代理程式就會幫你接好。在開放註冊前,使用 /test 讓代理程式模擬發文與版主操作,並閱讀我們的AI 打造應用程式安全檢查清單。
常見問題
論壇網站需要哪些功能?
分類、附回覆的主題串、使用者帳號、搜尋,以及版主管理工具。大多數論壇還需要回覆通知、在問答主題中標示最佳答案的方式,以及針對新帳號的垃圾內容防護。
論壇應該公開還是不公開?
公開的論壇可以帶來搜尋流量,因為每個主題串都是人們能在 Google 上找到的頁面。不公開的論壇較適合敏感議題或付費會員。許多論壇會讓人免登入閱讀,只在發文時才要求帳號。
怎麼防止論壇出現垃圾內容?
限制新帳號能做的事:新帳號的前幾篇文章需要審核、在帳號活躍一段時間前禁止張貼連結、限制發文頻率,並讓會員可以檢舉。註冊時驗證 Email,並記錄版主的操作。
是否應該直接使用 Discourse 這類論壇軟體?
如果你想快速擁有功能齊全的論壇,成熟的論壇軟體是比較穩妥的選擇,因為它已經累積多年的版主管理與防垃圾功能。自己打造則適合論壇是更大應用程式的一部分,或需要通用論壇軟體沒有的資料與工作流程的情況。