一个基于 AI 的趋势发现和内容发布系统,支持多源数据采集、智能总结和自动发布到微信公众号。
🌰 示例公众号:深巷懒猫
即刻关注,体验 AI 智能创作的内容~
-
🤖 多源数据采集
- Twitter/X 内容抓取
- 网站内容抓取 (基于 FireCrawl)
- 支持自定义数据源配置
-
🧠 AI 智能处理
- 使用 DeepseekAI 进行内容总结
- 关键信息提取
- 智能标题生成
-
📢 自动发布
- 微信公众号文章发布
- 自定义文章模板
- 定时发布任务
-
📱 通知系统
- Bark 通知集成
- 任务执行状态通知
- 错误告警
- 运行环境: Node.js + TypeScript
- 框架: Express.js
- AI 服务: DeepseekAI
- 数据源:
- Twitter/X API
- FireCrawl
- 定时任务: node-cron
- 模板引擎: EJS
- 开发工具:
- nodemon (热重载)
- TypeScript
- Jest (测试)
src/
├── controllers/ # 控制器层,处理请求
├── data-sources/ # 数据源配置
├── publishers/ # 发布器实现
├── scrapers/ # 数据采集实现
├── services/ # 业务逻辑层
├── summarizer/ # AI 总结实现
├── templates/ # 文章模板
└── utils/ # 工具函数
- Node.js (v14+)
- npm 或 yarn
- TypeScript
- Docker (可选,用于容器化部署)
- 克隆项目
git clone [repository-url]
cd trendpublish
- 安装依赖
npm install
- 配置环境变量
cp .env.example .env
# 编辑 .env 文件配置必要的环境变量
- 启动项目
# 开发模式
npm run start
# 构建
npm run build
- 在服务器上安装 Node.js (v20+) 和 PM2
# 安装 PM2
npm install -g pm2
- 构建项目
npm run build
- 使用 PM2 启动服务
pm2 start dist/index.js --name trend-finder
- 构建 Docker 镜像
docker build -t trend-finder .
- 运行容器
docker run -d -p 3000:3000 --name trend-finder trend-finder
- 启动服务
docker-compose up -d
- 查看日志
docker-compose logs -f
- 停止服务
docker-compose down
项目已配置 GitHub Actions 自动部署流程:
- 推送代码到 main 分支会自动触发部署
- 也可以在 GitHub Actions 页面手动触发部署
- 确保在 GitHub Secrets 中配置以下环境变量:
SERVER_HOST
: 服务器地址SERVER_USER
: 服务器用户名SSH_PRIVATE_KEY
: SSH 私钥- 其他必要的环境变量(参考 .env.example)
在 .env
文件中配置以下必要的环境变量:
# DeepseekAI API 配置
DEEPSEEK_API_KEY=your_api_key
# FireCrawl 配置
FIRECRAWL_API_KEY=your_api_key
# Twitter API 配置
TWITTER_API_KEY=your_api_key
# 微信公众号配置
WEIXIN_APP_ID=your_app_id
WEIXIN_APP_SECRET=your_app_secret
# Bark 通知配置
BARK_KEY=your_key
在 src/data-sources/getCronSources.ts
中配置数据源:
export const sourceConfigs = {
AI: {
firecrawl: [{ identifier: "https://example.com" }],
twitter: [{ identifier: "https://twitter.com/username" }],
},
};
在 src/templates
目录下创建新的模板文件,参考现有的模板实现。
修改 src/controllers/cron.ts
中的定时任务配置:
cron.schedule("0 18 * * *", async () => {
// 每天 18:00 执行
await workflow.process();
});
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature
) - 提交更改 (
git commit -m 'Add some amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 提交 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件