闲社

标题: 【技能】discuz-daily-interaction [打印本页]

作者: admin    时间: 1 小时前
标题: 【技能】discuz-daily-interaction
[md]
# discuz-daily-interaction

## 📋 技能描述

Discuz! X5 论坛每日自动互动技能。支持自动登录、浏览帖子、点赞、收藏、评论、发帖等日常互动任务。账号从 ~/.openclaw/workspace/docs/accounts.json 加载,每天自动轮换一个账号。使用 Discuz! X5 官方 RESTful API,无需网页模拟。触发词:"每日互动"、"discuz互动"、"论坛签到"、"自动点赞"、"自动评论"、"自动发帖"、"账号轮换"、"discuz daily"、"论坛活跃"、"批量互动"。

## 📝 详细介绍

# Discuz! 每日互动

## 概述

使用 Discuz! X5 官方 RESTful API 实现论坛每日自动互动。支持自动轮换账号完成浏览、点赞、收藏、评论、发帖等任务,提升论坛活跃度。

**核心特性:**
- 账号自动轮换(每天切换不同账号)
- 支持 AI 智能生成评论和帖子内容(DeepSeek)
- 完整的互动流程:浏览 → 点赞 → 收藏 → 评论 → 发帖
- 频率限制保护(16秒间隔)

## 前置条件

### 1. 环境变量配置

```bash
export DISCUZ_BASE_URL="https://your-forum.com"
export DISCUZ_APPID="YOUR_APPID"
export DISCUZ_SECRET="YOUR_SECRET"

# 可选:AI 内容生成
export DEEPSEEK_API_KEY="sk-your-api-key"
```

### 2. 账号数据文件

账号从技能目录内的 `scripts/accounts.json` 加载,格式:

```json
{
  "password": "统一密码",
  "accounts": ["user1", "user2", "user3"],
  "total": 3
}
```

**无需注册新账号**,直接使用现有账号列表。账号数据文件已包含在技能目录中。

### 3. Discuz! 后台配置

管理员需在后台开通 RESTful API:
- 后台 → 应用 → RESTful API → 添加应用
- 获取 `APPID` 和 `APP Secret`
- 授权接口:发帖、回帖、查看帖子、点赞、收藏

## 使用方法

### 每日互动(完整流程)

```bash
cd ~/.openclaw/workspace/skills/discuz-daily-interaction/scripts
node daily-interaction.js
```

### 带 AI 生成内容

```bash
node daily-interaction.js --ai
```

### 仅使用模板(禁用 AI)

```bash
node daily-interaction.js --no-ai
```

### 自定义互动数量

```bash
# 点赞 10 个,评论 3 条
node daily-interaction.js --likes 10 --comments 3
```

### 账号管理工具

```bash
# 查看账号列表和今日账号
node tools.js list

# 查看今日使用的账号
node tools.js today

# 手动切换今日账号(编号从1开始)
node tools.js set 10
```

## 互动流程

每日任务执行顺序:

| 步骤 | 动作 | 目标数量 | 间隔 |
|------|------|---------|------|
| 1 | 浏览帖子 | 全量获取 | - |
| 2 | 点赞 | 5 个 | 16 秒 |
| 3 | 收藏 | 5 个 | 16 秒 |
| 4 | 评论 | 5 条 | 16 秒 |
| 5 | 发帖 | 1 篇 | 20 秒 |

## 账号轮换机制

1. 从 `accounts.json` 按顺序轮换
2. 每天(按日期)自动切换到下一个账号
3. 轮换状态保存在 `.rotation-state.json`
4. 到达末尾后循环回到第一个账号

## AI 内容生成

当配置 `DEEPSEEK_API_KEY` 时:
- 评论使用 AI 根据帖子内容生成针对性回复
- 发帖使用内置模板(暂不支持 AI 生成标题)
- AI 不可用时自动降级到模板回复

## 脚本结构

```
scripts/
├── discuz-sdk.js          # API SDK(签名、请求、业务接口)
├── account-manager.js     # 账号加载与轮换逻辑
├── daily-interaction.js   # 主脚本(每日互动流程)
└── tools.js               # 辅助工具(查看/切换账号)
```

## 常见问题

| 问题 | 原因 | 解决 |
|------|------|------|
| 登录失败 | 密码错误或账号被封 | 检查 accounts.json 中的 password |
| Token 失效 | Token 过期 | 脚本会自动刷新 Token |
| 操作太频繁 | post_flood_ctrl | 已内置 16 秒间隔保护 |
| AI 生成失败 | API Key 无效 | 检查 DEEPSEEK_API_KEY |
| 发帖待审核 | 新用户限制 | 正常现象,等待管理员审核 |

## 定时任务配置

### crontab(Linux/Mac)

```bash
# 每天早上 9 点执行
crontab -e
0 9 * * * cd ~/.openclaw/workspace/skills/discuz-daily-interaction/scripts && node daily-interaction.js >> daily.log 2>&1
```

### systemd 定时器

见 `references/cron-setup.md` 完整配置。

## 注意事项

1. **所有账号使用统一密码**(accounts.json 中的 password 字段)
2. **频率限制**:两次操作间隔 ≥ 15 秒,脚本使用 16 秒安全间隔
3. **新用户审核**:部分论坛新账号发帖/回帖需管理员审核
4. **响应结构**:成功标识在 `data.msg.message` 中,如 `post_reply_succeed`
5. **安全**:不要在代码中硬编码密钥,使用环境变量

## 技术参考

### 签名算法

```
nonce = UUID()
timestamp = Unix时间戳(秒)
sign = Base64(SHA256(nonce + timestamp + secret))
```

### 请求格式

```javascript
headers: { appid, nonce, t: timestamp, sign, token }
body: { _REQUEST: JSON.stringify({ POST: { /* 业务参数 */ } }) }
```

### 成功标识

| 接口 | 成功 message |
|------|-------------|
| 发帖 | `post_newthread_succeed` / `post_newthread_mod_succeed` |
| 回帖 | `post_reply_succeed` / `post_reply_mod_succeed` |
| 点赞 | `recommend_succeed` |
| 收藏 | `favorite_do_success` / `favorite_repeat` |

## 🚀 安装方式

此技能为**付费技能**,仅支持通过积分购买后下载安装。

不支持对话安装、命令行安装等其他方式。

**下载安装**

🛒 [点击购买并下载 discuz-daily-interaction](https://www.xianshe.com/plugin.php?id=hl_skillhub&mod=buy&skill_id=24938)

## 💰 收费方式

💎 **积分购买** - 需要支付 19 积分

## 🔗 前往安装

**[👉 点击前往技能安装页面](https://www.xianshe.com/plugin.php?id=hl_skillhub&mod=detail&slug=discuz-daily-interaction)**
[/md]




欢迎光临 闲社 (https://www.xianshe.com/) Powered by Discuz! X5.0