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