构建 promobot:# 从代码到内容:Buildi...
Source: Dev.to
问题
作为开发者,我们倾注心血打造出色的项目。
但代码写完后,往往会迎来一个新的、常让人头疼的挑战:营销。
为 Reddit、Dev.to、Twitter (X) 和 Peerlist 分别撰写独特的发布公告——每个平台都有各自的语调和受众——这是一件既耗时又令人沮丧的事。
如果你的项目能够自行营销呢?
如果只需要你的README.md就能启动针对各平台受众的多渠道发布活动呢?
这就是我创建 PromoBot 想要解决的问题。
什么是 PromoBot?
PromoBot 是一个为开发者专门设计的自主 “营销代理”。它通过自动 生成 并 发布 跨多个平台的发布帖子,弥合了代码库与社区之间的鸿沟。
核心工作流
- 代码 → 内容 – PromoBot 读取项目的源代码,或更常见的是读取你的
README.md。 - AI 驱动的语调适配 – 利用 Google Gemini,它创作出符合每个平台特定语调和风格的独特内容。
- 多平台发布 – 然后将这些帖子发布到 Reddit、Dev.to、Twitter (X) 和 Peerlist。
- 无 API 集成 – 对于没有强大公共 API 的平台(如 X 和 Reddit),PromoBot 使用 浏览器自动化 (Playwright) 来无缝操作网页界面。
本质上,PromoBot 将项目文档转化为动态的营销活动,让你可以专注于最擅长的事:构建。
架构概览
PromoBot 采用 事件驱动、类微服务架构,实现了模块化、可扩展性和弹性。
1. Gemini 1.5 Flash(AI 引擎)
自定义 REST 客户端将项目上下文(来自 README.md)和平台需求发送给 Gemini,Gemini 负责:
- 理解项目上下文 – 分析提供的文本,掌握项目目的、功能和目标受众。
- 语调适配 – 动态调整语气、风格和结构,以适配 Reddit、Dev.to、X 和 Peerlist。
- 草拟帖子 – 为每个平台生成发布帖的初稿。
2. Playwright(浏览器自动化)
对于缺乏完善公共 API 的平台,Playwright(Python)充当 PromoBot 的 “双手”,在无头浏览器中模拟真实用户交互:
- 导航网站 – 登录、定位提交表单、与 UI 元素交互。
- 规避限制 – 模拟人类浏览行为,以避免被检测为机器人。
- 发布内容 – 粘贴 AI 生成的内容并以编程方式提交帖子。
3. Celery + Redis(任务队列 & 消息中间件)
向多个平台发布——尤其是涉及浏览器自动化的操作——可能耗时且易受瞬时故障影响。Celery 与 Redis 构成 PromoBot 的 “神经”,确保可靠执行:
- 解耦操作 – 每个发布任务(如 “发布到 Reddit”、 “发布到 X”)都是独立的 Celery 任务。
- 可靠投递 – 失败的任务(网络错误、平台临时问题)会自动重试。
- 并发执行 – 多个任务并行运行,加速整体活动进程。
4. PostgreSQL + SQLAlchemy(持久层)
为跟踪活动、用户会话和配置,PromoBot 使用 PostgreSQL 作为关系型数据库。SQLAlchemy 对原始 SQL 查询进行抽象:
- 会话管理 – 安全存储加密的会话 Cookie,以实现统一认证。
- 活动历史 – 记录每次发布的细节,包括目标平台和帖子状态。
- 配置管理 – 保存平台特定设置和用户偏好。
5. Strategy Pattern(可扩展平台支持)
PromoBot 采用 策略模式,让新增平台变得轻而易举:
- 基于插件的架构 – 每个平台(Reddit、X、Dev.to、Peerlist)都是一个独立的 “策略” 或插件。
- 解耦逻辑 – 主发布调度器只需调用相应策略的
publish方法,屏蔽平台细节。 - 易于扩展 – 添加新平台只需实现一个新的
PublisherStrategy类。
关键特性
| 功能 | 描述 |
|---|---|
| Universal Auth | 一次登录 Reddit/X/Peerlist。PromoBot 将会话状态安全地保存到 secrets/ 目录,允许后续运行时无需重新认证。 |
| Context‑Aware | PromoBot 自动导航到当前项目文件夹,读取 README.md,并将其作为内容生成的主要依据。无需复制粘贴! |
| Stealth Mode | 使用 Playwright 的高级浏览器标志和细微交互模式,绕过 X 和 Reddit 的机器人检测,确保帖子成功发布。 |
| Dynamic Tone Matching | AI 根据平台定制语气: • Reddit – 轻松、谦逊的 “我做了这个,你怎么看?” 风格。 • Dev.to – 技术、教程式,分享见解或问题解决方案。 • Twitter (X) – 简短、有冲击力、优化标签。 • Peerlist – 专业的 “Indie Hacker” 语调,聚焦解决的问题、技术栈和创业历程。 |
Tech Stack
- 语言: Python 3.11(利用异步功能)
- 框架: Celery(任务管理),SQLAlchemy(ORM)
- 基础设施: Docker Compose(启动 Redis 与 PostgreSQL)
- 自动化: Playwright(Python)用于浏览器交互
- AI: Google Gemini 1.5 Flash(通过自定义 REST 客户端)
入门
以下是一个最小的 Docker‑Compose 设置,用于启动所需的服务:
# docker-compose.yml
version: "3.9"
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
postgres:
image: postgres:15-alpine
environment:
POSTGRES_USER: promobot
POSTGRES_PASSWORD: secretpassword
POSTGRES_DB: promobot_db
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
-
克隆仓库
git clone https://github.com/yourname/promobot.git cd promobot -
启动支持服务
docker compose up -d -
安装 Python 依赖
pip install -r requirements.txt -
运行初始迁移
alembic upgrade head -
启动 Celery 工作进程
celery -A promobot.celery_app worker --loglevel=info -
执行活动(示例)
python -m promobot.run_campaign --project-path /path/to/your/project
注意:首次运行时会提示您登录每个平台。会话 Cookie 会加密存储在
secrets/下。
未来路线图
- 添加对 LinkedIn 和 Hacker News 的支持(新的策略插件)。
- 引入网页 UI 用于活动调度和分析。
- 集成 LangChain 以实现更复杂的提示工程。
- 实现每个平台的速率限制处理 以提升可靠性。
结论
PromoBot 将一个简单的 README.md 转变为 多平台发布引擎,让开发者专注于构建产品,而机器人负责处理嘈杂且重复的营销工作。通过在简洁、可扩展的架构下组合 Google Gemini、Playwright、Celery、Redis 和 PostgreSQL,PromoBot 展示了现代 Python 工具如何自动化真实的开发者工作流。
Happy coding—and happy launching! 🚀
Source:
Playwright 用于无头浏览器控制
准备好试用 PromoBot 了吗?只要 Docker Compose 已经启动了 Redis 和 Postgres,并且你的 Python 环境已配置好,使用 PromoBot 非常简单。
快速开始
- 进入你想要推广的任意项目的根目录。
- 运行:
promobot all
命令的作用
- 读取 当前项目的
README.md。 - 生成 针对各平台的内容(使用 AI)。
- 发布 到所有已配置的平台(Reddit、Dev.to、X、Peerlist)。
如果只想针对特定渠道,也可以单独运行相应平台的发布器。
为什么使用 PromoBot?
PromoBot 不仅是一个自动化工具,更是开发者的战略伙伴,帮助你在无需额外营销投入的情况下有效分享作品。它将 AI 的强大能力与稳健的浏览器自动化、可扩展的架构相结合,使你能够将代码转化为吸引各类受众的精彩内容。
贡献 / 了解更多
想要贡献代码或深入了解内部实现?查看 GitHub 仓库(如果是真实项目,我会在这里放链接!):
🔗
祝编码愉快,推广顺利!