Twitter Dance - Skill 定义
自动发推文 Skill(基于 apidance.pro API)
基本信息
- 名称:twitter-dance
- 版本:1.0.0
- 类型:社媒运营自动化
- 推荐用途:日常推文发布、内容分发
- 最佳实践:与 Kimi AI 结合使用
简介
Twitter Dance 是一个完全自动化的推特发布和管理系统,基于 apidance.pro 官方 API。
核心特性:
- 🤖 AI 推文生成(Kimi)
- ⚡ 完全自动化发推
- 💰 超低成本($0.05/月)
- 📊 完整日志和统计
- 🔒 安全可靠(无浏览器自动化)
- 📱 账户统计和分析
- 🔔 通知管理
- 💬 自动回复
- 📈 互动数据分析
- ⏰ 互动周期优化
安装
# 1. 获取 API Key
# apidance.pro: https://t.me/shingle
# TWITTER_AUTH_TOKEN: X.com Settings → Developers
# KIMI_API_KEY: https://platform.moonshot.cn
# 2. 配置环境变量
export APIDANCE_API_KEY="..."
export TWITTER_AUTH_TOKEN="..."
export KIMI_API_KEY="..."
# 3. 进入 Skill 目录
cd /Users/chao/.openclaw/workspace/skills/twitter-dance
快速开始
生成推文(无需发布)
node scripts/auto-tweet.js --draft-only
自动发推
node scripts/auto-tweet.js
批量发推
node scripts/auto-tweet.js --count=5
测试 GraphQL API
node scripts/test-tweet-graphql.js "你的推文内容"
高级功能
使用 TwitterDanceEnhanced 类获得更多强大功能:
账户统计
node scripts/test-advanced-features.js stats
获取粉丝数、推文数、点赞数等详细统计
通知管理
node scripts/test-advanced-features.js notifications
获取最新的互动通知(提及、点赞、转发)
自动回复
node scripts/test-advanced-features.js reply <tweetId> <replyText>
自动回复特定推文
推文分析
node scripts/test-advanced-features.js timeline-analytics
分析时间线,找出最受欢迎的推文
互动周期分析
node scripts/test-advanced-features.js engagement-hours
找出最佳发推时间
完整功能菜单
node scripts/test-advanced-features.js
API 参考
TwitterDanceAPIClient
初始化
const TwitterDanceAPIClient = require('./src/twitter-api-client');
const client = new TwitterDanceAPIClient({
apiKey: process.env.APIDANCE_API_KEY,
authToken: process.env.TWITTER_AUTH_TOKEN,
verbose: true
});
方法
tweet(text, options)
发布推文
参数:
text(string): 推文内容(≤280 字)options(object):media(array): 媒体 URL 列表(可选)
返回:
{
success: true,
tweetId: "1234567890",
timestamp: "2026-03-11T13:27:00Z",
text: "推文内容",
length: 150
}
示例:
const result = await client.tweet("Hello Twitter! 🚀");
console.log(result.tweetId);
likeTweet(tweetId)
点赞推文
参数:
tweetId(string): 推文 ID
示例:
await client.likeTweet("1234567890");
retweet(tweetId)
转发推文
示例:
await client.retweet("1234567890");
getTweet(tweetId)
查询推文详情
返回:
{
success: true,
tweet: { /* 推文数据 */ }
}
getUser(username)
查询用户信息
示例:
const user = await client.getUser("elonmusk");
console.log(user.followers_count);
searchTweets(query, options)
搜索推文
参数:
query(string): 搜索关键词options(object):count(number): 返回数量,默认 10lang(string): 语言代码,默认 'en'
示例:
const results = await client.searchTweets("OpenClaw", { count: 20 });
getTimeline(options)
获取 Timeline
参数:
options(object):count(number): 推文数量,默认 20excludeReplies(boolean): 排除回复includeRetweets(boolean): 包含转发,默认 true
checkQuota()
检查 API 配额
返回:
{
success: true,
remaining: 9500,
total: 10000,
used: 500
}
TweetGenerator
初始化
const TweetGenerator = require('./src/tweet-generator');
const generator = new TweetGenerator({
kimiApiKey: process.env.KIMI_API_KEY,
verbose: true
});
方法
generate(options)
生成单条推文
参数:
options(object):topic(object): 自定义话题(可选)
返回:
{
text: "推文内容...",
source: "kimi" | "template",
topic: "Crypto & Web3",
length: 180,
keywords: ["Bitcoin", "Ethereum"]
}
示例:
const tweet = await generator.generate();
console.log(tweet.text);
generateBatch(count, options)
批量生成推文
示例:
const tweets = await generator.generateBatch(5);
tweets.forEach((t, i) => {
console.log(`${i + 1}. ${t.text}`);
});
工作流示例
场景 1:日常自动发推
# 设置 Cron 任务
0 9 * * * cd /path/to/twitter-dance && node scripts/auto-tweet.js >> logs/cron.log 2>&1
场景 2:批量发推(一次 5 条)
node scripts/auto-tweet.js --count=5
场景 3:仅生成草稿供审核
node scripts/auto-tweet.js --draft-only > tweets-to-review.txt
配置
环境变量
# 必需
APIDANCE_API_KEY=your-api-key
TWITTER_AUTH_TOKEN=your-token
# 可选(推荐)
KIMI_API_KEY=sk-xxx
# 日志
VERBOSE=true # 详细日志
推文主题(自定义)
编辑 src/tweet-generator.js 中的 topics 数组:
this.topics = [
{
name: 'Your Topic',
keywords: ['keyword1', 'keyword2'],
tone: 'Your tone'
},
// ...
];
成本分析
每月费用(基于 30 条推文)
| 项目 | 用量 | 单价 | 总价 |
|---|---|---|---|
| apidance.pro API | 30 条 | $0.008/条 | $0.24 |
| Kimi API(可选) | 30 条 | ~$0.001/条 | $0.03 |
| 总计 | 30 条 | - | ~$0.27 |
与竞品对比
- Zapier 推特集成:$15-25/月
- Make 推特场景:$10-20/月
- Buffer Pro:$15+/月
- Twitter Dance:$0.27/月(节省 99%)
故障排除
错误:缺少 APIDANCE_API_KEY
解决: 在 https://t.me/shingle 购买 API Key
错误:缺少 TWITTER_AUTH_TOKEN
解决: 从 X.com Settings → Developers 获取 Token
错误:推文过长
解决: Kimi 会自动截断;本地模板已验证都 <280 字
错误:API 配额已用尽
解决: 查看配额 → 购买更多或等待重置
最佳实践
✅ 推荐
- 结合 Kimi API 提高推文质量
- 使用
--draft-only先预览 - 定期检查日志分析效果
- 每天 1-3 条推文(高效且经济)
❌ 不推荐
- 一次发超过 10 条推文
- 禁用 Kimi 使用纯模板
- 完全无人审核的完全自动化
TwitterDanceEnhanced(高级 API)
初始化
const TwitterDanceEnhanced = require('./src/twitter-api-enhanced');
const client = new TwitterDanceEnhanced({
apiKey: process.env.APIDANCE_API_KEY,
authToken: process.env.TWITTER_AUTH_TOKEN,
verbose: true
});
核心方法
| 方法 | 功能 | 返回 |
|---|---|---|
getAccountStats() | 获取账户统计 | 粉丝、推文、点赞等数据 |
getNotifications(options) | 获取通知 | 最新互动列表 |
autoReply(tweetId, text, options) | 自动回复 | 回复成功信息 |
getTweetMetrics(tweetId) | 获取推文指标 | 点赞、转发、浏览数 |
getTimelineAnalytics(options) | 时间线分析 | 推文统计和最佳推文 |
getEngagementByHour() | 互动周期分析 | 每小时的互动数据 |
bulkLikeTweets(tweetIds) | 批量点赞 | 操作结果 |
bulkRetweet(tweetIds) | 批量转发 | 操作结果 |
getConversationThread(tweetId) | 获取对话线程 | 推文及其回复 |
使用示例
// 获取账户统计
const stats = await client.getAccountStats();
console.log(`粉丝: ${stats.stats.followers}`);
// 自动回复
await client.autoReply('123456', '感谢评论!');
// 分析最佳发推时间
const best = await client.getEngagementByHour();
console.log(`最佳时间: ${best.bestHour}:00 UTC`);
// 批量点赞
await client.bulkLikeTweets(['123', '456', '789']);
🤖 自动回复评论功能
快速回复特定推文
# 查看将要回复的内容(模拟模式)
node scripts/quick-reply.js --tweet-id=2031936903918883025 --replies=10 --dry-run
# 实际发送回复
node scripts/quick-reply.js --tweet-id=2031936903918883025 --replies=10
功能特性:
- ✅ AI 智能回复 - 根据评论内容自动选择合适的回复模板
- ✅ 模拟模式 - 使用
--dry-run预览回复内容 - ✅ 速率限制保护 - 自动延迟避免 Twitter 限流
- ✅ 批量处理 - 一次处理多条评论
命令行选项:
| 选项 | 说明 | 例子 |
|---|---|---|
--tweet-id=<ID> | 推文 ID(必需) | --tweet-id=2031936903918883025 |
--replies=N | 获取最多 N 条评论 | --replies=5 |
--dry-run | 模拟模式,不实际发送 | --dry-run |
--no-reply | 仅显示评论,不回复 | --no-reply |
自动回复最近推文
# 获取最近 3 条推文,模拟回复它们的评论
node scripts/auto-reply-comments.js --tweets=3 --replies=10 --dry-run
# 实际回复
node scripts/auto-reply-comments.js --tweets=3 --replies=10
如何获取推文 ID
推文 URL 格式: https://twitter.com/username/status/<推文ID>
例如: https://twitter.com/elonmusk/status/1234567890123456789
- 推文 ID =
1234567890123456789
AI 回复匹配示例
| 评论类型 | 评论例子 | 自动回复 |
|---|---|---|
| 感谢 | "谢谢你的分享!" | "感谢你的反馈!😊" |
| 询问 | "这怎么用?" | "很好的问题,让我们继续讨论!" |
| 同意 | "我也这样认为" | "完全同意!👏" |
| 鼓励 | "继续加油!" | "继续加油!🚀" |
详细使用指南
👉 参考 AUTO-REPLY-GUIDE.md 获取完整说明
相关文档
- AUTO-REPLY-GUIDE.md - 自动回复详细指南 ⭐️
- ADVANCED_FEATURES.md - 高级功能详解 ⭐️
- GRAPHQL_API_GUIDE.md - GraphQL API 参考
- QUICK_START.md - 5 分钟快速开始
- README.md - 项目概览
- apidance.pro 文档 - 官方 API 文档
许可证
MIT
版本更新日志:
v1.0.0(2026-03-11)
- ✅ 初始版本发布
- ✅ apidance.pro API 集成
- ✅ Kimi AI 推文生成
- ✅ 批量发推支持
- ✅ 完整日志和统计
规划中(v1.1.0+)
- 📷 媒体上传支持(图片、视频)
- 📊 推文效果分析仪表板
- 🎯 情绪分析和自动语气调整
- 🔄 高级定时和队列管理