Install
openclaw skills install twitter-dance基于 apidance.pro API,自动生成并发布推文,支持账户统计、通知管理、自动回复和互动分析,适合日常社媒运营自动化。
openclaw skills install twitter-dance自动发推文 Skill(基于 apidance.pro API)
Twitter Dance 是一个完全自动化的推特发布和管理系统,基于 apidance.pro 官方 API。
核心特性:
# 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
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
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
});
发布推文
参数:
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);
点赞推文
参数:
tweetId (string): 推文 ID示例:
await client.likeTweet("1234567890");
转发推文
示例:
await client.retweet("1234567890");
查询推文详情
返回:
{
success: true,
tweet: { /* 推文数据 */ }
}
查询用户信息
示例:
const user = await client.getUser("elonmusk");
console.log(user.followers_count);
搜索推文
参数:
query (string): 搜索关键词options (object):
count (number): 返回数量,默认 10lang (string): 语言代码,默认 'en'示例:
const results = await client.searchTweets("OpenClaw", { count: 20 });
获取 Timeline
参数:
options (object):
count (number): 推文数量,默认 20excludeReplies (boolean): 排除回复includeRetweets (boolean): 包含转发,默认 true检查 API 配额
返回:
{
success: true,
remaining: 9500,
total: 10000,
used: 500
}
const TweetGenerator = require('./src/tweet-generator');
const generator = new TweetGenerator({
kimiApiKey: process.env.KIMI_API_KEY,
verbose: true
});
生成单条推文
参数:
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);
批量生成推文
示例:
const tweets = await generator.generateBatch(5);
tweets.forEach((t, i) => {
console.log(`${i + 1}. ${t.text}`);
});
# 设置 Cron 任务
0 9 * * * cd /path/to/twitter-dance && node scripts/auto-tweet.js >> logs/cron.log 2>&1
node scripts/auto-tweet.js --count=5
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'
},
// ...
];
| 项目 | 用量 | 单价 | 总价 |
|---|---|---|---|
| apidance.pro API | 30 条 | $0.008/条 | $0.24 |
| Kimi API(可选) | 30 条 | ~$0.001/条 | $0.03 |
| 总计 | 30 条 | - | ~$0.27 |
解决: 在 https://t.me/shingle 购买 API Key
解决: 从 X.com Settings → Developers 获取 Token
解决: Kimi 会自动截断;本地模板已验证都 <280 字
解决: 查看配额 → 购买更多或等待重置
✅ 推荐
--draft-only 先预览❌ 不推荐
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
功能特性:
--dry-run 预览回复内容命令行选项:
| 选项 | 说明 | 例子 |
|---|---|---|
--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
推文 URL 格式: https://twitter.com/username/status/<推文ID>
例如: https://twitter.com/elonmusk/status/1234567890123456789
1234567890123456789| 评论类型 | 评论例子 | 自动回复 |
|---|---|---|
| 感谢 | "谢谢你的分享!" | "感谢你的反馈!😊" |
| 询问 | "这怎么用?" | "很好的问题,让我们继续讨论!" |
| 同意 | "我也这样认为" | "完全同意!👏" |
| 鼓励 | "继续加油!" | "继续加油!🚀" |
👉 参考 AUTO-REPLY-GUIDE.md 获取完整说明
MIT
版本更新日志: