一个基于 AI 的趋势发现和内容发布系统,支持多源数据采集、智能总结和自动发布到微信公众号。
🌰 示例公众号:AISPACE科技空间
即刻关注,体验 AI 智能创作的内容~
-
🤖 多源数据采集
- Twitter/X 内容抓取
- 网站内容抓取 (基于 FireCrawl)
- 支持自定义数据源配置
-
🧠 AI 智能处理
- 使用 DeepseekAI Together 千问 万象 讯飞 进行内容总结
- 关键信息提取
- 智能标题生成
-
📢 自动发布
- 微信公众号文章发布
- 自定义文章模板
- 定时发布任务
-
📱 通知系统
- Bark 通知集成
- 任务执行状态通知
- 错误告警
TrendPublish 提供了多种精美的文章模板。查看 模板展示页面 了解更多详情。
- 微信公众号文章发布
- 大模型每周排行榜
- 热门AI相关仓库推荐
- 添加通义千问(Qwen)支持
- 支持多模型配置(如 DEEPSEEK_MODEL="deepseek-chat|deepseek-reasoner")
- 支持指定特定模型(如 AI_CONTENT_RANKER_LLM_PROVIDER="DEEPSEEK:deepseek-reasoner")
- 热门AI相关论文推荐
- 热门AI相关工具推荐
- FireCrawl 自动注册免费续期
- 内容插入相关图片
- 内容去重
- 降低AI率
- 文章图片优化
- ...
- 提供exe可视化界面
- 运行环境: Node.js + TypeScript
- AI 服务: DeepseekAI Together 千问 万象 讯飞
- 数据源:
- Twitter/X API
- FireCrawl
- 定时任务: node-cron
- 模板引擎: EJS
- 开发工具:
- nodemon (热重载)
- TypeScript
- Node.js (v22+)
- npm
- TypeScript
- 克隆项目
git clone https://github.com/OpenAISpace/ai-trend-publish
- 安装依赖
npm install
- 配置环境变量
cp .env.example .env
# 编辑 .env 文件配置必要的环境变量
在 .env
文件中配置以下必要的环境变量:
# ===================================
# 基础服务配置
# ===================================
# LLM 服务配置
# OpenAI API配置
OPENAI_BASE_URL="https://api.openai.com/v1"
OPENAI_API_KEY="your_api_key"
OPENAI_MODEL="gpt-3.5-turbo"
# DeepseekAI API配置 https://api-docs.deepseek.com/
DEEPSEEK_BASE_URL="https://api.deepseek.com/v1"
DEEPSEEK_API_KEY="your_api_key"
# 支持配置多个模型,使用 | 分隔
DEEPSEEK_MODEL="deepseek-chat|deepseek-reasoner"
# 讯飞API配置 https://www.xfyun.cn/
XUNFEI_API_KEY="your_api_key"
# 通义千问API配置 https://help.aliyun.com/zh/dashscope/developer-reference/api-details
QWEN_BASE_URL="https://dashscope.aliyuncs.com/api/v1"
QWEN_API_KEY="your_api_key"
QWEN_MODEL="qwen-max"
# 自定义LLM API配置(需要兼容OpenAI API格式)
CUSTOM_LLM_BASE_URL="your_api_base_url"
CUSTOM_LLM_API_KEY="your_api_key"
CUSTOM_LLM_MODEL="your_model_name"
# 默认使用的LLM提供者
# 可选值: OPENAI | DEEPSEEK | XUNFEI | QWEN | CUSTOM
# 也可以指定具体模型,格式为 "提供者:模型名称",例如 "DEEPSEEK:deepseek-reasoner"
DEFAULT_LLM_PROVIDER="DEEPSEEK"
# ===================================
# 模块功能配置
# ===================================
# 注意:使用以下配置前,请确保已在上方正确配置了对应的 LLM 服务参数
# 内容排名和摘要模块LLM提供者配置
# 可选值: OPENAI | DEEPSEEK | XUNFEI | QWEN | CUSTOM
# 也可以指定具体模型,格式为 "提供者:模型名称",例如 "DEEPSEEK:deepseek-reasoner"
AI_CONTENT_RANKER_LLM_PROVIDER="DEEPSEEK:deepseek-reasoner"
AI_SUMMARIZER_LLM_PROVIDER="DEEPSEEK"
# 模板配置
# 文章模板类型配置,可选值: default | modern | tech | mianpro | random
ARTICLE_TEMPLATE_TYPE="default"
# HelloGitHub模板类型配置,可选值: weixin | random
HELLOGITHUB_TEMPLATE_TYPE="default"
# AIBench模板类型配置,可选值: default | random
AIBENCH_TEMPLATE_TYPE="default"
# 数据存储配置
ENABLE_DB=true
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=password
DB_DATABASE=trendfinder
# 微信公众号配置
WEIXIN_APP_ID="your_app_id"
WEIXIN_APP_SECRET="your_app_secret"
# 微信文章配置
NEED_OPEN_COMMENT=false
ONLY_FANS_CAN_COMMENT=false
AUTHOR="your_name"
# 数据抓取配置
# FireCrawl配置 https://www.firecrawl.dev/
FIRE_CRAWL_API_KEY="your_api_key"
# Twitter API配置 https://twitterapi.io/
X_API_BEARER_TOKEN="your_api_key"
# ===================================
# 其他通用配置
# ===================================
# 通知服务配置
ENABLE_BARK=false
BARK_URL="your_key"
在使用微信公众号相关功能前,请先将本机IP添加到公众号后台的IP白名单中。
- 查看本机IP: IP查询工具
- 登录微信公众号后台,添加IP白名单
- 启动项目
# 测试模式
npm run test
# 运行
npm run start
详细运行时间见 src\controllers\cron.ts
- 在服务器上安装 Node.js (v20+) 和 PM2
# 安装 PM2
npm install -g pm2
- 构建项目
npm run build
- 使用 PM2 启动服务
pm2 start dist/index.js --name ai-trend-publish
- 拉取代码
git clone https://github.com/OpenAISpace/ai-trend-publish.git
- 构建 Docker 镜像:
# 构建镜像
docker build -t ai-trend-publsih .
- 运行容器:
# 方式1:通过环境变量文件运行
docker run -d --env-file .env --name ai-trend-publsih-container ai-trend-publsih
# 方式2:直接指定环境变量运行
docker run -d \
-e XXXX=XXXX \
...其他环境变量... \
--name ai-trend-publsih-container \
ai-trend-publsih
项目已配置 GitHub Actions 自动部署流程:
- 推送代码到 main 分支会自动触发部署
- 也可以在 GitHub Actions 页面手动触发部署
- 确保在 GitHub Secrets 中配置以下环境变量:
SERVER_HOST
: 服务器地址SERVER_USER
: 服务器用户名SSH_PRIVATE_KEY
: SSH 私钥- 其他必要的环境变量(参考 .env.example)
本项目支持自定义模板开发,主要包含以下几个部分:
查看 src/modules/render/interfaces
目录下的类型定义文件,了解各个渲染模块需要的数据结构
在 src/templates
目录下按照对应模块开发 EJS 模板
在对应的渲染器类中注册新模板,如 ArticleTemplateRenderer
:
npx ts-node -r tsconfig-paths/register src\modules\render\test\test.weixin.template.ts
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature
) - 提交更改 (
git commit -m 'Add some amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 提交 Pull Request
感谢以下贡献者对项目的支持:
本项目采用 MIT 许可证 - 详见 LICENSE 文件