@clawhub-kamiguyi-e7bc2bbd34
自动监控指定关键词的TikTok热门视频评论并定时发送配置的自动回复,支持频率限制和多模板切换。
---
slug: tiktok-auto-reply
name: TikTok 自动回复
version: 1.0.0
author: dagugu
license: MIT
tags: [tiktok, auto-reply, social-media, automation]
---
# TikTok 自动回复技能
⚠️ **风险提示**:使用此技能可能导致账号被 TikTok 限制或封禁。请谨慎使用,后果自负。
## 功能
- 监控指定关键词的热门视频
- 自动获取视频评论
- 根据配置自动回复评论
## 前置条件
1. TikTok 企业开发者账号
2. TikTok API 访问令牌
3. Node.js 环境
## 安装
```bash
cd ~/.openclaw/workspace/skills/tiktok-auto-reply
npm install
```
## 配置
复制配置模板:
```bash
cp config.example.json config.json
```
编辑 `config.json`:
```json
{
"tiktok": {
"accessToken": "YOUR_ACCESS_TOKEN",
"clientKey": "YOUR_CLIENT_KEY",
"clientSecret": "YOUR_CLIENT_SECRET"
},
"keywords": ["热门关键词1", "关键词2"],
"replyTemplates": [
"视频太棒了!🔥",
"学到了!感谢分享 👍",
"有意思~"
],
"checkIntervalMinutes": 30,
"maxRepliesPerHour": 10
}
```
## 使用
```bash
# 手动运行一次
node index.js
# 或作为定时任务
node watch.js
```
## 注意事项
- 不要设置过高的回复频率
- 避免完全相同的回复内容
- 定期更换回复模板
- 监控账号状态
## API 文档
[TikTok for Developers](https://developers.tiktok.com/)
---
**免责声明**:本技能仅供学习研究使用。使用本技能产生的任何后果由使用者自行承担。
FILE:README.md
# TikTok 自动回复技能
⚠️ **重要提醒**:使用自动化回复可能违反 TikTok 服务条款,请谨慎使用!
## 快速开始
### 1. 安装依赖
```bash
cd ~/.openclaw/workspace/skills/tiktok-auto-reply
npm install
```
### 2. 配置账号
```bash
cp config.example.json config.json
```
编辑 `config.json`,填入你的 TikTok API 凭证:
```json
{
"tiktok": {
"accessToken": "你的访问令牌",
"clientKey": "你的客户端密钥",
"clientSecret": "你的客户端密码"
}
}
```
### 3. 获取 TikTok API 权限
1. 访问 [TikTok for Developers](https://developers.tiktok.com/)
2. 注册开发者账号
3. 创建应用
4. 申请以下权限:
- `video.list` - 获取视频列表
- `comment.list` - 读取评论
- `comment.create` - 发布评论
### 4. 运行
```bash
# 测试运行(不会实际发送)
npm start
# 持续监控
npm run watch
```
## 配置说明
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| `keywords` | 搜索关键词列表 | `["热门", "教程"]` |
| `replyTemplates` | 回复模板池 | 见示例 |
| `checkIntervalMinutes` | 检查间隔(分钟) | `30` |
| `maxRepliesPerHour` | 每小时最大回复数 | `10` |
| `dryRun` | 演示模式(不实际发送) | `true` |
## 安全建议
1. **先开启 dryRun 模式测试**
2. **回复频率不要太高** - 建议每小时不超过 10 条
3. **多样化回复内容** - 避免被识别为机器人
4. **定期监控账号状态** - 发现异常立即停止
## 集成到 OpenClaw
将此技能目录添加到 OpenClaw 的技能路径:
```bash
# 在 OpenClaw 配置中添加
~/.openclaw/workspace/skills/tiktok-auto-reply
```
## 常见问题
**Q: 为什么获取不到视频?**
A: 需要 TikTok 企业 API 权限,个人账号权限有限。
**Q: 回复发不出去?**
A: 检查 API 权限是否包含 `comment.create`。
**Q: 账号被限制了怎么办?**
A: 立即停止使用,等待限制解除,降低回复频率。
---
🦞 由 小龙虾 为你打造
FILE:config.example.json
{
"tiktok": {
"accessToken": "YOUR_ACCESS_TOKEN_HERE",
"clientKey": "YOUR_CLIENT_KEY_HERE",
"clientSecret": "YOUR_CLIENT_SECRET_HERE"
},
"keywords": ["热门", "教程", "技巧"],
"replyTemplates": [
"视频太棒了!🔥",
"学到了!感谢分享 👍",
"有意思~",
"666!👏",
"收藏了!"
],
"checkIntervalMinutes": 30,
"maxRepliesPerHour": 10,
"dryRun": true
}
FILE:index.js
/**
* TikTok 自动回复技能 - 主程序
*
* ⚠️ 使用前请确保:
* 1. 已配置 config.json
* 2. 了解 TikTok API 使用限制
* 3. 知晓自动化回复的风险
*/
const fs = require('fs');
const path = require('path');
// 配置
const CONFIG_PATH = path.join(__dirname, 'config.json');
// 加载配置
function loadConfig() {
if (!fs.existsSync(CONFIG_PATH)) {
console.error('❌ 配置文件不存在!请复制 config.example.json 为 config.json 并配置');
process.exit(1);
}
return JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf-8'));
}
// TikTok API 客户端(简化版)
class TikTokClient {
constructor(config) {
this.accessToken = config.tiktok.accessToken;
this.baseUrl = 'https://open.tiktokapis.com/v2';
}
// 获取热门视频
async searchVideos(keywords) {
console.log(`🔍 搜索关键词:keywords.join(', ')`);
// 注意:实际使用需要调用 TikTok Research API 或 Content Posting API
// 这里只是示例框架
console.log('⚠️ 需要 TikTok 企业 API 权限才能调用搜索接口');
console.log('📖 参考:https://developers.tiktok.com/doc/research-api-specs-search-videos');
// 模拟返回(实际使用需要替换为真实 API 调用)
return {
videos: []
};
}
// 获取视频评论
async getVideoComments(videoId) {
console.log(`📝 获取视频评论:videoId`);
// 需要 TikTok API 权限
console.log('⚠️ 需要 TikTok API 评论读取权限');
return {
comments: []
};
}
// 回复评论
async replyComment(videoId, commentId, text) {
console.log(`💬 回复评论:videoId/commentId`);
console.log(` 内容:text`);
// 需要 TikTok API 评论写入权限
console.log('⚠️ 需要 TikTok API 评论写入权限(企业权限)');
// 模拟回复
return {
success: true,
replyId: 'mock_reply_' + Date.now()
};
}
}
// 自动回复逻辑
class AutoReplier {
constructor(config) {
this.config = config;
this.client = new TikTokClient(config);
this.replyCount = 0;
this.lastReset = Date.now();
}
// 选择回复模板
pickReplyTemplate() {
const templates = this.config.replyTemplates;
return templates[Math.floor(Math.random() * templates.length)];
}
// 检查是否超过限制
canReply() {
const now = Date.now();
const hourMs = 60 * 60 * 1000;
// 每小时重置计数
if (now - this.lastReset > hourMs) {
this.replyCount = 0;
this.lastReset = now;
}
return this.replyCount < this.config.maxRepliesPerHour;
}
// 执行一次检查
async check() {
console.log('\n🔔 开始检查热门视频...');
const { videos } = await this.client.searchVideos(this.config.keywords);
if (videos.length === 0) {
console.log('✅ 没有找到相关视频');
return;
}
console.log(`📺 找到 videos.length 个视频`);
for (const video of videos.slice(0, 5)) {
if (!this.canReply()) {
console.log('⏸️ 已达到每小时回复上限');
break;
}
const { comments } = await this.client.getVideoComments(video.id);
// 回复最新评论(示例逻辑)
if (comments.length > 0) {
const replyText = this.pickReplyTemplate();
await this.client.replyComment(video.id, comments[0].id, replyText);
this.replyCount++;
}
}
console.log(`✅ 本次检查完成,回复数:this.replyCount/this.config.maxRepliesPerHour`);
}
// 持续监控
async watch() {
const interval = this.config.checkIntervalMinutes * 60 * 1000;
console.log(`👀 开始监控,检查间隔:this.config.checkIntervalMinutes 分钟`);
// 立即执行一次
await this.check();
// 定时执行
setInterval(async () => {
await this.check();
}, interval);
}
}
// 主程序
async function main() {
console.log('🦞 TikTok 自动回复技能启动\n');
console.log('⚠️ 风险提示:自动化操作可能导致账号受限,请谨慎使用!\n');
const config = loadConfig();
if (config.dryRun) {
console.log('🧪 当前为演示模式(dryRun=true),不会实际发送回复\n');
}
const replier = new AutoReplier(config);
// 检查模式:运行一次
// 监控模式:持续运行
const mode = process.argv[2] || 'check';
if (mode === 'watch') {
await replier.watch();
} else {
await replier.check();
console.log('\n✅ 执行完成');
}
}
// 运行
main().catch(err => {
console.error('❌ 错误:', err.message);
process.exit(1);
});
FILE:package.json
{
"name": "tiktok-auto-reply",
"version": "1.0.0",
"description": "TikTok 热门视频自动回复技能",
"main": "index.js",
"scripts": {
"start": "node index.js check",
"watch": "node index.js watch"
},
"keywords": ["tiktok", "auto-reply", "openclaw", "skill"],
"author": "dagugu",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/dagugu/tiktok-auto-reply"
},
"engines": {
"node": ">=18.0.0"
},
"dependencies": {
"node-fetch": "^2.6.9"
},
"clawhub": {
"slug": "tiktok-auto-reply",
"displayName": "TikTok 自动回复",
"category": "social-media"
}
}