FengOffice

郵件、CRM、Newsletter,一條自動化鏈路——把內容營運的基礎設施收進命令行與 Docker 棧。

為甚麼做

市場操作不該散落在 Excel 和人工裡

郵件 CLI

一個命令行,收信、讀信、回信

Twenty CRM

一個 Docker 棧,客戶關係全部歸檔

Newsletter

Listmonk + Postgres,一鍵分發內容

自動化鏈路

發現 → 回覆 → 錄入 → 分發

部署

幾條命令,從零到跑起來

市場操作,不該散落在 Excel 裡

內容營運真正的基本設施,是郵件、客戶與分發。

很多內容營運團隊把功夫花在內容本身,卻讓郵件、客戶關係與 Newsletter 散落在 Excel 表和人工操作裡。FengOffice 把這三件事收進一條自動化鏈路:一個 CLI 管郵件,一個 Docker 棧跑 CRM,一個 Newsletter 系統做分發。

  • 技術交付與市場營運的交匯點:市場人理解的需求,用工程師的方式解決。
  • 全部本地可控:數據自持,不把客戶數據交給第三方 SaaS。
  • 可腳本化:每一件重複操作都能寫成命令,交給 AI 執行。

一個 CLI,管所有信箱

fengmail.py——IMAP 收信,SMTP 回信,全部輸出 JSON。

多個郵件帳號統一在一個命令行裡管理。查郵件、讀正文、發送、回覆,輸出全部是 JSON,方便被腳本和 AI 直接消費。

  • 多帳號:Gmail、Outlook 等七個帳號統一管理,OAuth 設定分離。
  • 規範回覆:reply 自動提取 Message-ID 與 References,正確串成郵件執行緒。
  • AI 友好:結構化 JSON 輸出,Agent 可以篩選、分類、起草、發送。
  • 分類體系:四級郵件分類(docs/email-classification.md),把收件箱變成工作流。
IMAP SMTP OAuth JSON

客戶關係,一個 Docker 棧

Twenty CRM——本地部署,數據自持。

  • 一鍵部署:docker-compose 啟動,本地 3002 埠訪問。
  • 完整 CRM 功能:聯絡人、公司、機會、活動,客戶全生命週期歸檔。
  • 與郵件聯動:郵件發現 → 客戶資訊 → CRM 錄入,鏈路自動完成。
  • 需求文件化:docs/requirements.md 記錄 CRM 的功能需求與演進方向。
Twenty Docker 本地部署

內容,一次性分發

Listmonk + Postgres——訂閱、退訂、campaign,全腳本化。

  • 訂閱管理:add-subscriber / remove-subscriber 腳本,AI 直接呼叫。
  • Campaign 發送:send-newsletter 一鍵建立並發送郵件。
  • 自動退訂處理:process-unsubscribes 讀取退訂郵件並同步。
  • 內容樞紐:docs/newsletter-architecture.md 定義 Newsletter 與內容的樞紐架構。
Listmonk Postgres AI 腳本

一條鏈,自動運轉

郵件發現 → 回覆 → CRM 錄入 → Newsletter 分發。

每一環的輸出都是下一環的輸入,重複勞動被一次性寫進程式碼。

  • 發現:fengmail.py 從多個信箱拉取來信,按四級分類過濾出真正需要處理的內容。
  • 回覆:AI 起草,CLI 發送,回覆保留正確的執行緒結構。
  • 錄入:聯絡人資訊進入 Twenty CRM,成為可檢索的資產。
  • 分發:Newsletter 系統把內容觸達訂閱者,退訂自動清理。

從零到跑起來

幾條命令,完整棧就在本地。

  • python fengmail.py list-accounts — 查看已設定的郵件帳號
  • docker compose up -d — 啟動 Twenty CRM(localhost:3002)
  • docker compose up -d(newsletter 目錄)— 啟動 Listmonk + Postgres
  • python newsletter/scripts/send-newsletter.py — 發送一封 Newsletter