Skip to content

gunksd/AutoBinanceSquare-contexts

Repository files navigation

AutoBinanceSquare

自动化币安广场发帖工具 — 从加密新闻聚合到智能内容生成,再到一键发布。

Node.js TypeScript Express License: CC BY-NC 4.0


工作原理

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 文件:

AI Provider(三选一)

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

API Key 获取方式

1. 6551 API Token

用于获取加密货币新闻数据(OpenNews 服务)。

  1. 访问 6551.io/mcp
  2. 注册账号并登录
  3. 在个人设置或 API 管理页面获取 Token

2. DeepSeek API Key

用于 AI 内容生成(使用 deepseek-chat 模型)。

  1. 访问 platform.deepseek.com
  2. 注册账号并登录
  3. 进入「API Keys」页面,创建新的 API Key
  4. 确保账户有余额(DeepSeek 按 token 用量计费,价格很低)

3. OpenAI API Key(可选替代)

  1. 访问 platform.openai.com
  2. 创建 API Key,确保账户有余额

4. Anthropic API Key(可选替代)

  1. 访问 console.anthropic.com
  2. 创建 API Key,确保账户有余额

5. Binance Square API Key

用于发布内容到币安广场。

  1. 登录 Binance 账号
  2. 进入币安广场创作者后台
  3. 在 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 界面(推荐)

启动 Web 服务:

npm run dev     # 开发模式(热重载)
#
npm start       # 生产模式

打开浏览器访问 http://localhost:3000,界面包含四个功能 Tab:

Tab 1:快讯转发

手动将 6551News 文章转发到币安广场(适合精选转发)。

  1. 点击 「获取 6551News」 加载最新文章
  2. 点击文章卡片展开详情,可编辑中英文内容后转发
  3. 或点击 「转发全部新内容」 批量转发

Tab 2:内容创作

三步式内容创作流程,支持整合模式和单条模式。

  1. 选择新闻:获取高分新闻,点击选中/取消
  2. 生成内容:AI 整合生成 + 去 AI 化处理
  3. 编辑发布:编辑器修改内容,一键发布到广场

Tab 3:自动发布

一键运行完整自动化流程,附带 macOS 风格终端实时日志。

  1. 点击 「运行自动发布」 启动 pipeline
  2. 终端实时显示:新闻收集 → AI 生成 → 发布结果
  3. 运行中可点击 「停止运行」 中止流程
  4. 完成后显示收录文章数和发布状态

自动发布流程:

  1. 收集 6551News 高分文章(score >= 80)和上所公告
  2. 收集 OpenNews 高分文章
  3. 所有文章统一 AI 整合生成一篇高质量内容
  4. 去 AI 化处理后发布到币安广场

Tab 4:发布记录

查看历史发布的内容,点击可复制到剪贴板。

状态栏

页面顶部显示:

  • 6551 API / AI Provider / Binance Square:绿点 = 已配置
  • 发帖额度:今日已用 / 每日上限

语言切换

右上角 EN / 中文 按钮切换界面语言。

方式二:命令行(CLI)

适合定时任务(cron)或自动化脚本。

# 正式运行:收集新闻 → AI 整合 → 去AI化 → 发布
npm run cli

# 试运行:完整流程但不发布,内容保存到 output/ 目录
npm run generate

CLI 执行流程:

  1. 收集 6551News 文章(score >= 80 或上所公告)
  2. 收集 OpenNews 高分文章
  3. 合并所有文章,AI 生成整合内容 + 去 AI 化
  4. 发布到币安广场(或 dry-run 保存到本地)

所有已处理的文章 ID 会记录到 .forwarded.json,下次运行自动跳过,不会重复发布。

定时任务配置(cron)

每 2 小时自动运行一次:

crontab -e

添加:

0 */2 * * * cd /path/to/AutoBinanceSquare-contexts && npm run cli >> /var/log/autosquare.log 2>&1

API 接口文档

Web 服务提供以下 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 登录认证

POST /api/auto-run

全自动流程端点,返回 chunked 流式响应(text/plain),每行一个 JSON 事件:

{"type":"log","msg":"Fetching 6551News..."}         // 日志
{"type":"curated","success":true,"postUrl":"..."}    // 发布结果
{"type":"done","articleCount":8,"curatedOk":true}    // 完成
{"type":"error","msg":"..."}                         // 错误

客户端断开连接时,服务端会自动终止 pipeline。

核心模块说明

新闻获取 (news-fetcher)

  • 支持多源聚合:6551 API + RSS 订阅
  • 并行拉取所有配置的新闻源
  • aiRating.score 过滤,只保留高分文章
  • 自动去重(按文章 ID,基于 .forwarded.json

AI Provider (providers/)

  • 统一接口:所有 AI Provider 实现相同的 AiProvider 接口
  • DeepSeek(默认):使用 OpenAI 兼容 API
  • OpenAI:直接调用 OpenAI API
  • Claude:使用 Anthropic Messages API
  • 通过 AI_PROVIDER 环境变量切换,无需改代码

内容生成 (content-generator)

  • System Prompt 设定角色为加密货币技术分析师
  • 输出要求:技术分析为主、客观中立、不做收益承诺、800-1500 字符
  • 自动附加风险提示和币种/话题标签
  • 总长度限制 2100 字符(币安广场限制)

去 AI 化 (humanizer)

基于 Humanizer-zh 的 24 条 AI 写作痕迹检测规则,包含:

  • AI 高频词替换:删除「值得注意的是」「毋庸置疑」等 AI 常用语
  • 结构模式修复:打散「首先...其次...最后...」三段式结构
  • 套路化总结删除:移除「综上所述」类公式化结尾
  • 口语化注入:将「认为」替换为「觉得」、「可能会」替换为「也许会」等
  • 格式清理:多余空行、重复标点等

发布 (publisher)

  • 调用币安广场 OpenAPI(/content/add,仅支持发布,不支持编辑/删除)
  • 内置频率限制:每日上限 + 发帖间隔
  • 发布失败时自动保存到本地 output/ 目录
  • 完整的错误码映射(敏感词、长度超限、API Key 过期等)

代理配置

如果你的网络环境需要代理才能访问外部 API,设置以下环境变量:

HTTPS_PROXY=http://127.0.0.1:7890
#
HTTP_PROXY=http://127.0.0.1:7890

项目使用 undiciProxyAgent 实现代理,所有 HTTP 请求都会走代理通道。

常见错误码

错误码 含义 解决方式
220003 API Key 未找到 检查 BINANCE_SQUARE_API_KEY 是否正确
220004 API Key 已过期 重新生成 API Key
220009 今日发帖次数已达上限 等待次日重置,或调整 DAILY_POST_LIMIT
20002 检测到敏感词 修改内容中的敏感词后重试
20013 内容长度超限 缩短内容至 2100 字符以内
20020 不支持发布空内容 确保内容非空
30008 因违反平台规则被封禁 联系币安客服

部署

Render(推荐)

  1. Render 创建 Web Service
  2. 连接 GitHub 仓库
  3. 配置:
    • Build Command: npm install
    • Start Command: npm start
  4. Environment 面板添加环境变量(AUTH_PASSWORDOPENNEWS_TOKENDEEPSEEK_API_KEYBINANCE_SQUARE_API_KEY 等)
  5. 部署完成后通过 Render 分配的 URL 访问

设置 AUTH_PASSWORD 后,只有知道密码的人才能访问。

Docker

docker build -t autobinancesquare .
docker run -d -p 3000:3000 --env-file .env autobinancesquare

VPS

npm install
npm start   # 或配合 pm2: pm2 start npm -- start

OpenClaw 集成

通过 OpenClaw 在 Telegram 等聊天平台远程控制 AutoBinanceSquare。

快速开始

1. 部署 AutoBinanceSquare

先将服务部署到公网(Render / VPS / Docker),确保有一个可访问的 URL,例如 https://your-app.onrender.com

2. 安装技能

skills/autobinancesquare/ 目录复制到 OpenClaw 技能目录:

cp -r skills/autobinancesquare ~/.openclaw/skills/

3. 配置环境变量

在 OpenClaw 的配置中添加服务地址:

export AUTOBINANCE_URL=https://your-app.onrender.com

4. 使用

在 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 查看发布历史

搭配 Cron 定时任务

在 OpenClaw 中设置定时自动发帖:

帮我设置一个 cron,每 2 小时自动执行 /autobinancesquare auto

OpenClaw 会自动创建定时任务,按周期调用完整的收集 → 整合 → 发布流程。

注意事项

  • 首次使用需要先 /autobinancesquare login 登录
  • 发布前 OpenClaw 会展示内容并请求确认(除非你明确指示跳过)
  • 需要 OpenClaw 已安装并运行,详见 OpenClaw 文档

许可证

CC BY-NC 4.0 — 允许个人学习和非商业使用,禁止商业用途

About

A tool for automating the posting of Binance Square tweets —Powered by 6551 and the Binance Square API

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors