News Sources AI Provider Post-Processing Output
┌─────────────┐ ┌─────────────────┐ ┌──────────────┐ ┌──────────────┐
│ 6551 API │───┐ │ DeepSeek (默认) │ │ │ │ │
│ (OpenNews) │ │ │ OpenAI │───────▶│ Humanizer │─────▶│ Binance │
│ │ ├───▶│ Claude │ │ (去AI化) │ │ Square │
│ RSS Feeds │───┘ │ │ │ │ │ │
│ (可选) │ └─────────────────┘ └──────────────┘ └──────────────┘
└─────────────┘
所有新闻源的文章统一收集后,由 AI 整合生成一篇高质量市场分析内容,经过去 AI 化处理后发布到币安广场。每次运行只产出 1 篇帖子,确保内容质量和阅读体验。
- 多源聚合:6551 API + RSS 订阅,自动收集高分新闻
- 智能整合:AI 将多条新闻合并为一篇有深度的市场分析
- 去 AI 化:24 条规则消除 AI 写作痕迹,让内容更自然
- 自动去重:基于文章 ID 的去重机制,避免重复发布
- Web 面板:四个功能 Tab + macOS 风格终端实时日志
- 一键自动:面板内运行全流程,支持中途停止
- OpenClaw 集成:通过 Telegram 等聊天平台远程控制
├── src/
│ ├── index.ts # CLI 入口(定时任务模式)
│ ├── server.ts # Web 服务端(Express)
│ ├── config/index.ts # 环境变量配置
│ ├── providers/ # 多 Provider 抽象层
│ │ ├── ai-provider.ts # AI Provider 接口 + 工厂
│ │ ├── openai-compatible.ts # DeepSeek / OpenAI
│ │ ├── anthropic.ts # Claude (Anthropic)
│ │ ├── news-source.ts # News Source 接口 + 工厂
│ │ ├── opennews-source.ts # 6551 API 封装
│ │ └── rss-source.ts # RSS Feed 支持
│ ├── modules/
│ │ ├── news-fetcher.ts # 多源新闻获取
│ │ ├── content-generator.ts # AI 内容生成
│ │ ├── humanizer.ts # 中文去AI化处理
│ │ └── publisher.ts # 币安广场发布
│ ├── types/index.ts # TypeScript 类型定义
│ └── utils/
│ ├── fetch.ts # HTTP 请求(支持代理)
│ ├── forward-log.ts # 转发去重记录
│ ├── logger.ts # 日志工具
│ └── rate-limit.ts # 发帖频率限制
├── web/
│ ├── index.html # Web 界面
│ ├── app.js # 前端逻辑(中英双语)
│ ├── styles.css # Glassmorphism 样式
│ ├── login.html # 登录页
│ └── favicon.svg # 图标
├── skills/
│ └── autobinancesquare/ # OpenClaw 技能定义
│ └── SKILL.md
├── .env.example # 环境变量模板
├── render.yaml # Render 部署配置
├── package.json
└── tsconfig.json
- Node.js >= 18
- npm >= 9
- 以下 API Key(至少需要一个 AI Provider)
# 1. 克隆项目
git clone https://github.com/gunksd/AutoBinanceSquare-contexts.git
cd AutoBinanceSquare-contexts
# 2. 安装依赖
npm install
# 3. 创建环境变量文件
cp .env.example .env编辑 .env 文件:
| Provider | 环境变量 | 默认模型 |
|---|---|---|
| DeepSeek (默认) | DEEPSEEK_API_KEY |
deepseek-chat |
| OpenAI | AI_PROVIDER=openai + OPENAI_API_KEY |
gpt-4o |
| Claude | AI_PROVIDER=anthropic + ANTHROPIC_API_KEY |
claude-sonnet-4-20250514 |
不设置
AI_PROVIDER时默认使用 DeepSeek,完全向后兼容。
# 方式 A — DeepSeek(默认,无需设置 AI_PROVIDER)
DEEPSEEK_API_KEY=your_key
# 方式 B — OpenAI
AI_PROVIDER=openai
OPENAI_API_KEY=your_key
# 方式 C — Claude
AI_PROVIDER=anthropic
ANTHROPIC_API_KEY=your_key
# 可选:覆盖模型名称
AI_MODEL=deepseek-chat# 6551 API (必需)
OPENNEWS_TOKEN=your_6551_token
# RSS 订阅(可选,逗号分隔多个 URL)
RSS_FEED_URLS=https://cointelegraph.com/rss,https://coindesk.com/arc/outboundfeeds/rss/# Binance Square (X-Square-OpenAPI-Key)
BINANCE_SQUARE_API_KEY=your_binance_square_key用于获取加密货币新闻数据(OpenNews 服务)。
- 访问 6551.io/mcp
- 注册账号并登录
- 在个人设置或 API 管理页面获取 Token
用于 AI 内容生成(使用 deepseek-chat 模型)。
- 访问 platform.deepseek.com
- 注册账号并登录
- 进入「API Keys」页面,创建新的 API Key
- 确保账户有余额(DeepSeek 按 token 用量计费,价格很低)
- 访问 platform.openai.com
- 创建 API Key,确保账户有余额
- 访问 console.anthropic.com
- 创建 API Key,确保账户有余额
用于发布内容到币安广场。
- 登录 Binance 账号
- 进入币安广场创作者后台
- 在 OpenAPI 设置中生成 API Key(即
X-Square-OpenAPI-Key)
注意:需要先成为币安广场创作者才能使用发布 API。
# 设置后需要密码才能访问 Web 界面(留空则无需登录)
AUTH_PASSWORD=your_password设置 AUTH_PASSWORD 后,访问 Web 界面会跳转到登录页。Cookie 有效期 7 天,无需反复输入。
# 新闻最低评分过滤(默认 50,范围 0-100)
MIN_SCORE=50
# 每日发帖上限(默认 100)
DAILY_POST_LIMIT=100
# 两次发帖间隔,单位毫秒(默认 30000,即 30 秒)
POST_INTERVAL_MS=30000
# Web 服务端口(默认 3000)
PORT=3000
# 日志级别:error | warn | info | debug(默认 info)
LOG_LEVEL=info
# HTTP 代理(如需翻墙访问 API)
HTTPS_PROXY=http://127.0.0.1:7890启动 Web 服务:
npm run dev # 开发模式(热重载)
# 或
npm start # 生产模式打开浏览器访问 http://localhost:3000,界面包含四个功能 Tab:
手动将 6551News 文章转发到币安广场(适合精选转发)。
- 点击 「获取 6551News」 加载最新文章
- 点击文章卡片展开详情,可编辑中英文内容后转发
- 或点击 「转发全部新内容」 批量转发
三步式内容创作流程,支持整合模式和单条模式。
- 选择新闻:获取高分新闻,点击选中/取消
- 生成内容:AI 整合生成 + 去 AI 化处理
- 编辑发布:编辑器修改内容,一键发布到广场
一键运行完整自动化流程,附带 macOS 风格终端实时日志。
- 点击 「运行自动发布」 启动 pipeline
- 终端实时显示:新闻收集 → AI 生成 → 发布结果
- 运行中可点击 「停止运行」 中止流程
- 完成后显示收录文章数和发布状态
自动发布流程:
- 收集 6551News 高分文章(score >= 80)和上所公告
- 收集 OpenNews 高分文章
- 所有文章统一 AI 整合生成一篇高质量内容
- 去 AI 化处理后发布到币安广场
查看历史发布的内容,点击可复制到剪贴板。
页面顶部显示:
- 6551 API / AI Provider / Binance Square:绿点 = 已配置
- 发帖额度:今日已用 / 每日上限
右上角 EN / 中文 按钮切换界面语言。
适合定时任务(cron)或自动化脚本。
# 正式运行:收集新闻 → AI 整合 → 去AI化 → 发布
npm run cli
# 试运行:完整流程但不发布,内容保存到 output/ 目录
npm run generateCLI 执行流程:
- 收集 6551News 文章(score >= 80 或上所公告)
- 收集 OpenNews 高分文章
- 合并所有文章,AI 生成整合内容 + 去 AI 化
- 发布到币安广场(或 dry-run 保存到本地)
所有已处理的文章 ID 会记录到
.forwarded.json,下次运行自动跳过,不会重复发布。
每 2 小时自动运行一次:
crontab -e添加:
0 */2 * * * cd /path/to/AutoBinanceSquare-contexts && npm run cli >> /var/log/autosquare.log 2>&1Web 服务提供以下 REST API(所有响应均为 JSON):
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/status |
各 API 配置状态和发帖额度 |
| GET | /api/news |
获取高评分新闻列表 |
| GET | /api/6551news |
获取 6551News 文章(含转发状态) |
| GET | /api/history |
最近 20 条发布记录 |
| POST | /api/generate |
基于文章生成 AI 内容 |
| POST | /api/publish |
发布内容到币安广场 |
| POST | /api/6551news/forward |
转发单篇 6551News 文章 |
| POST | /api/6551news/forward-all |
批量转发所有未转发文章 |
| POST | /api/auto-run |
全自动流程(流式响应) |
| POST | /api/login |
登录认证 |
全自动流程端点,返回 chunked 流式响应(text/plain),每行一个 JSON 事件:
客户端断开连接时,服务端会自动终止 pipeline。
- 支持多源聚合:6551 API + RSS 订阅
- 并行拉取所有配置的新闻源
- 按
aiRating.score过滤,只保留高分文章 - 自动去重(按文章 ID,基于
.forwarded.json)
- 统一接口:所有 AI Provider 实现相同的
AiProvider接口 - DeepSeek(默认):使用 OpenAI 兼容 API
- OpenAI:直接调用 OpenAI API
- Claude:使用 Anthropic Messages API
- 通过
AI_PROVIDER环境变量切换,无需改代码
- System Prompt 设定角色为加密货币技术分析师
- 输出要求:技术分析为主、客观中立、不做收益承诺、800-1500 字符
- 自动附加风险提示和币种/话题标签
- 总长度限制 2100 字符(币安广场限制)
基于 Humanizer-zh 的 24 条 AI 写作痕迹检测规则,包含:
- AI 高频词替换:删除「值得注意的是」「毋庸置疑」等 AI 常用语
- 结构模式修复:打散「首先...其次...最后...」三段式结构
- 套路化总结删除:移除「综上所述」类公式化结尾
- 口语化注入:将「认为」替换为「觉得」、「可能会」替换为「也许会」等
- 格式清理:多余空行、重复标点等
- 调用币安广场 OpenAPI(
/content/add,仅支持发布,不支持编辑/删除) - 内置频率限制:每日上限 + 发帖间隔
- 发布失败时自动保存到本地
output/目录 - 完整的错误码映射(敏感词、长度超限、API Key 过期等)
如果你的网络环境需要代理才能访问外部 API,设置以下环境变量:
HTTPS_PROXY=http://127.0.0.1:7890
# 或
HTTP_PROXY=http://127.0.0.1:7890项目使用 undici 的 ProxyAgent 实现代理,所有 HTTP 请求都会走代理通道。
| 错误码 | 含义 | 解决方式 |
|---|---|---|
| 220003 | API Key 未找到 | 检查 BINANCE_SQUARE_API_KEY 是否正确 |
| 220004 | API Key 已过期 | 重新生成 API Key |
| 220009 | 今日发帖次数已达上限 | 等待次日重置,或调整 DAILY_POST_LIMIT |
| 20002 | 检测到敏感词 | 修改内容中的敏感词后重试 |
| 20013 | 内容长度超限 | 缩短内容至 2100 字符以内 |
| 20020 | 不支持发布空内容 | 确保内容非空 |
| 30008 | 因违反平台规则被封禁 | 联系币安客服 |
- 在 Render 创建 Web Service
- 连接 GitHub 仓库
- 配置:
- Build Command:
npm install - Start Command:
npm start
- Build Command:
- 在 Environment 面板添加环境变量(
AUTH_PASSWORD、OPENNEWS_TOKEN、DEEPSEEK_API_KEY、BINANCE_SQUARE_API_KEY等) - 部署完成后通过 Render 分配的 URL 访问
设置
AUTH_PASSWORD后,只有知道密码的人才能访问。
docker build -t autobinancesquare .
docker run -d -p 3000:3000 --env-file .env autobinancesquarenpm install
npm start # 或配合 pm2: pm2 start npm -- start通过 OpenClaw 在 Telegram 等聊天平台远程控制 AutoBinanceSquare。
先将服务部署到公网(Render / VPS / Docker),确保有一个可访问的 URL,例如 https://your-app.onrender.com。
将 skills/autobinancesquare/ 目录复制到 OpenClaw 技能目录:
cp -r skills/autobinancesquare ~/.openclaw/skills/在 OpenClaw 的配置中添加服务地址:
export AUTOBINANCE_URL=https://your-app.onrender.com在 OpenClaw 连接的聊天平台中发送命令:
| 命令 | 说明 |
|---|---|
/autobinancesquare login |
登录(输入密码) |
/autobinancesquare status |
查看 API 状态和发帖额度 |
/autobinancesquare news |
获取高分新闻摘要 |
/autobinancesquare 6551 |
获取 6551News 文章 |
/autobinancesquare auto |
全自动:收集 → AI 整合 → 发布 |
/autobinancesquare generate |
基于新闻生成 AI 内容 |
/autobinancesquare publish |
发布到币安广场 |
/autobinancesquare forward-all |
批量转发所有新 6551 文章 |
/autobinancesquare history |
查看发布历史 |
在 OpenClaw 中设置定时自动发帖:
帮我设置一个 cron,每 2 小时自动执行 /autobinancesquare auto
OpenClaw 会自动创建定时任务,按周期调用完整的收集 → 整合 → 发布流程。
- 首次使用需要先
/autobinancesquare login登录 - 发布前 OpenClaw 会展示内容并请求确认(除非你明确指示跳过)
- 需要 OpenClaw 已安装并运行,详见 OpenClaw 文档
CC BY-NC 4.0 — 允许个人学习和非商业使用,禁止商业用途。
{"type":"log","msg":"Fetching 6551News..."} // 日志 {"type":"curated","success":true,"postUrl":"..."} // 发布结果 {"type":"done","articleCount":8,"curatedOk":true} // 完成 {"type":"error","msg":"..."} // 错误