X Listener Node
X Listener Node(Twitter 监听节点)是 TradingFlow 的数据输入节点,用于从 X(Twitter)平台获取用户推文和进行高级搜索。节点支持关键词过滤、多账户监听和实时数据采集,是社交媒体情绪分析的核心组件。
节点信息
节点类型
x_listener_node
显示名称
X Listener
节点分类
Input(数据输入)
图标
🐦 Twitter 图标
句柄颜色
Sky(天蓝色) / Emerald(绿色)
功能说明
X Listener Node 连接到 X(Twitter)平台,实时获取指定账户的推文或执行高级搜索。节点支持关键词过滤、多账户并行监听,并将推文数据传递给下游分析节点。
主要用途:
监听KOL(关键意见领袖)推文
追踪特定话题和关键词
收集市场情绪数据
社交媒体信号捕捉
舆情监控和分析
核心特性:
🔍 双模式搜索:用户推文模式和高级搜索模式
🏷️ 关键词过滤:支持多关键词匹配和过滤
👥 多账户支持:同时监听多个账户
📄 分页获取:自动处理大量推文的分页
⚡ 速率限制:内置API调用速率控制
输入参数
参数列表
accounts
paragraph
❌*
[]
X 账户列表
keywords
paragraph
❌
""
关键词过滤
search_mode
select
✅
user_tweets
搜索模式
query_type
select
✅
Latest
搜索类型
limit
number
✅
20
推文数量限制
api_key
text
✅
-
Twitter API 密钥
* accounts 在 user_tweets 模式下必填
accounts 参数
格式: 逗号分隔的账户列表
支持格式:
用户名:
elonmusk, VitalikButerin用户ID:
44196397, 295218901(纯数字)混合格式:
elonmusk, 295218901
示例:
elonmusk, VitalikButerin, cz_binance说明:
用户名不需要
@符号支持 userId 和 userName 两种格式
多个账户用逗号分隔
空格会被自动去除
keywords 参数
格式: 逗号分隔的关键词列表
匹配规则:
不区分大小写
部分匹配(包含即可)
OR 逻辑(任一关键词匹配)
示例:
Bitcoin, BTC, crypto工作方式:
推文内容:"Bitcoin is going to the moon! 🚀"
关键词:"Bitcoin, ETH, crypto"
结果:✅ 匹配(包含 Bitcoin)
推文内容:"Great weather today"
关键词:"Bitcoin, ETH, crypto"
结果:❌ 不匹配search_mode 参数
支持的模式:
用户推文
user_tweets
获取指定用户的推文
accounts
高级搜索
advanced_search
基于关键词全局搜索
keywords 或 accounts
user_tweets 模式
特点:
从指定用户的时间线获取推文
支持多个账户并行获取
可选关键词过滤
按时间排序
使用场景:
监听特定KOL的推文
追踪特定账户动态
收集用户历史推文
advanced_search 模式
特点:
全局搜索包含关键词的推文
可限定特定用户(from: 操作符)
支持Latest(最新)和Top(热门)
搜索范围更广
使用场景:
追踪热门话题
发现讨论特定主题的推文
市场情绪分析
query_type 参数
仅用于 advanced_search 模式
最新
Latest
按时间排序的最新推文
热门
Top
按热度排序的热门推文
limit 参数
范围: 1-100
说明:
限制返回的推文总数
防止数据过载
跨所有账户的总数限制
示例:
{
"limit": 50,
"accounts": ["elonmusk", "VitalikButerin"]
}
// 最多返回50条推文(两个账户合计)api_key 参数
获取方式:
注册 TwitterAPI.io 账户
获取 API Key
配置环境变量
TWITTER_API_KEY
配置方式:
环境变量:
TWITTER_API_KEY=your_key_here参数传递:直接在节点配置中提供
输出参数
输出列表
latest_tweets
Latest Tweets
object
推文数据集合
latest_tweets 输出
数据类型: object
完整数据结构:
{
tweets: Array<{ // 推文列表
id: string; // 推文ID
text: string; // 推文文本
created_at: string; // 创建时间
author: { // 作者信息
id: string;
username: string;
name: string;
};
metrics: { // 互动数据
like_count: number;
retweet_count: number;
reply_count: number;
};
source_account?: string; // 来源账户(多账户时)
}>;
count: number; // 推文数量
accounts: string[]; // 监听的账户列表
keywords: string; // 使用的关键词
search_mode: string; // 搜索模式
query_type: string; // 查询类型
timestamp: number; // 获取时间戳
next_cursor: string; // 分页游标
}示例输出(user_tweets 模式):
{
"tweets": [
{
"id": "1234567890",
"text": "Bitcoin is breaking new highs! 🚀",
"created_at": "2024-01-15T10:30:00Z",
"author": {
"id": "44196397",
"username": "elonmusk",
"name": "Elon Musk"
},
"metrics": {
"like_count": 125000,
"retweet_count": 25000,
"reply_count": 5000
},
"source_account": "elonmusk"
}
],
"count": 15,
"accounts": ["elonmusk", "VitalikButerin"],
"keywords": "Bitcoin, crypto",
"search_mode": "user_tweets",
"query_type": "Latest",
"timestamp": 1705316400,
"next_cursor": "abc123..."
}示例输出(advanced_search 模式):
{
"tweets": [
{
"id": "9876543210",
"text": "The future of crypto is decentralized finance #DeFi",
"created_at": "2024-01-15T11:00:00Z",
"author": {
"id": "295218901",
"username": "VitalikButerin",
"name": "Vitalik Buterin"
},
"metrics": {
"like_count": 50000,
"retweet_count": 10000,
"reply_count": 2000
}
}
],
"count": 20,
"accounts": [],
"keywords": "DeFi, crypto",
"search_mode": "advanced_search",
"query_type": "Latest",
"timestamp": 1705318200
}工作流程
执行流程
1. 参数验证
├─ 检查 API Key
├─ 验证搜索模式
└─ 确认必需参数
2. 模式选择
├─ user_tweets: 用户推文模式
└─ advanced_search: 高级搜索模式
3. 数据获取
├─ 构建API请求
├─ 执行HTTP调用
├─ 处理分页
└─ 应用速率限制
4. 关键词过滤(可选)
├─ 解析关键词列表
├─ 不区分大小写匹配
└─ 过滤推文
5. 数据聚合
├─ 合并多账户结果
├─ 按时间排序
└─ 应用数量限制
6. 构建输出
├─ 格式化推文数据
├─ 添加元数据
└─ 生成输出对象
7. 发送信号
└─ 发送 DATASET 信号
8. 完成
└─ 设置节点状态为 COMPLETEDuser_tweets 模式流程
1. 遍历 accounts 列表
↓
2. 对每个账户:
├─ 构建请求(userId 或 userName)
├─ 调用 /user/last_tweets API
├─ 获取推文(支持分页)
└─ 应用关键词过滤
↓
3. 合并所有账户的推文
↓
4. 按时间排序
↓
5. 限制总数(limit 参数)advanced_search 模式流程
1. 构建搜索查询
├─ 处理关键词(OR 逻辑)
├─ 添加 from: 操作符(如果指定账户)
└─ 设置查询类型(Latest/Top)
↓
2. 调用 /tweet/advanced_search API
↓
3. 处理分页(max_pages=5)
↓
4. 收集所有结果
↓
5. 应用数量限制使用示例
示例 1:监听KOL推文
场景: 监听 Elon Musk 和 Vitalik Buterin 关于加密货币的推文。
工作流结构:
X Listener Node (监听KOL)
↓ latest_tweets
AI Model Node (分析情绪)
↓ ai_response { sentiment, key_points }
Code Node (生成交易信号)
↓ trade_signal
Condition Node (是否交易?)
↓
Buy/Sell Node (执行交易)X Listener Node 配置:
{
"accounts": "elonmusk, VitalikButerin",
"keywords": "Bitcoin, crypto, blockchain",
"search_mode": "user_tweets",
"limit": 20
}输出示例:
{
"tweets": [
{
"text": "Bitcoin adoption is accelerating faster than expected",
"author": { "username": "elonmusk" },
"metrics": { "like_count": 200000 }
}
],
"count": 18
}示例 2:话题追踪
场景: 追踪 #DeFi 相关的热门讨论。
X Listener Node 配置:
{
"keywords": "DeFi, decentralized, yield farming",
"search_mode": "advanced_search",
"query_type": "Top",
"limit": 50
}工作流结构:
X Listener Node (话题搜索)
↓ latest_tweets (Top 50 DeFi相关推文)
Code Node (提取提及的项目)
↓ mentioned_projects
AI Model Node (评估项目热度)
↓ hot_projects
Dataset Output Node (保存分析结果)示例 3:情绪分析系统
场景: 实时监控市场情绪并生成交易信号。
工作流结构:
X Listener Node (监听多个KOL)
↓ latest_tweets
↓
AI Model Node (情绪分析)
↓ sentiment_score (-1 到 +1)
↓
Code Node (计算加权情绪)
├─ 根据KOL影响力加权
└─ 计算综合情绪指数
↓ weighted_sentiment
↓
Condition Node (情绪 > 0.7?)
↓ (true - 极度看涨)
├─→ Buy Node (买入)
↓ (false)
Condition Node (情绪 < -0.7?)
↓ (true - 极度看跌)
└─→ Sell Node (卖出)X Listener Node 配置:
{
"accounts": "elonmusk, VitalikButerin, cz_binance, SBF_FTX",
"keywords": "Bitcoin, BTC",
"search_mode": "user_tweets",
"limit": 100
}示例 4:组合过滤
场景: 监听特定账户,只保留包含特定关键词的推文。
X Listener Node 配置:
{
"accounts": "elonmusk",
"keywords": "Dogecoin, DOGE",
"search_mode": "user_tweets",
"limit": 20
}执行逻辑:
1. 获取 @elonmusk 的最近推文
2. 过滤只包含 "Dogecoin" 或 "DOGE" 的推文
3. 返回匹配的推文API 依赖
TwitterAPI.io
基础URL: https://api.twitterapi.io
用户推文端点
端点: GET /twitter/user/last_tweets
参数:
userId或userName:用户标识cursor:分页游标(可选)
响应:
{
"status": "success",
"data": {
"tweets": [...],
"user_info": {...}
},
"has_next_page": true,
"next_cursor": "..."
}高级搜索端点
端点: GET /twitter/tweet/advanced_search
参数:
query:搜索查询字符串queryType:Latest或Topcursor:分页游标(可选)
查询语法:
关键词: "Bitcoin OR crypto"
用户过滤: "Bitcoin from:elonmusk"
组合: "(Bitcoin OR crypto) from:elonmusk"响应:
{
"tweets": [...],
"has_next_page": true,
"next_cursor": "..."
}最佳实践
1. API Key 管理
推荐方式(环境变量):
export TWITTER_API_KEY="your_api_key_here"不推荐(硬编码):
{
"api_key": "your_api_key_here" // ❌ 不安全
}2. 搜索模式选择
监听特定KOL
user_tweets
精确、稳定
追踪热门话题
advanced_search + Top
发现热门内容
实时监控关键词
advanced_search + Latest
最新信息
多账户监听
user_tweets
支持并行获取
3. 关键词设计
✅ 推荐:
"Bitcoin, BTC" // 主词 + 缩写
"DeFi, decentralized finance" // 主词 + 完整名称
"pump, moon, bullish" // 情绪关键词❌ 避免:
"a, the, is" // 过于通用
"Bitcoin Bitcoin Bitcoin" // 重复无意义4. 数量限制设置
实时监控
10-20
快速响应
情绪分析
50-100
样本充足
数据收集
100
最大允许
注意事项
⚠️ 重要提示
API 配额限制
TwitterAPI.io 有调用次数限制
注意查看您的套餐配额
使用 limit 参数控制数据量
速率限制
节点内置 0.5秒 延迟
防止API调用过快
多账户监听自动添加延迟
搜索模式限制
user_tweets需要accounts参数advanced_search需要keywords或accounts高级搜索不支持纯数字 userId
关键词过滤
不区分大小写
部分匹配(包含即可)
仅过滤推文文本,不包括用户名等
数据时效性
推文数据为节点执行时的快照
不是实时流式数据
需要重新执行节点获取最新数据
故障排查
Q: 提示 "Twitter API key not provided"?
A:
检查环境变量
TWITTER_API_KEY是否设置或在节点配置中提供
api_key参数确认 API Key 有效且未过期
Q: 返回的推文数量少于 limit?
A:
用户可能没有发布足够多的推文
关键词过滤可能过滤掉了部分推文
API 返回的数据有限
这是正常现象,不是错误
Q: "Account parameter is required" 错误?
A:
确认在
user_tweets模式下提供了accounts参数检查
accounts格式是否正确(逗号分隔)确保至少有一个有效账户
Q: 高级搜索返回结果较少?
A:
尝试放宽关键词(减少关键词数量)
检查关键词拼写
使用
Top类型可能返回更少但更相关的结果去除
from:限制扩大搜索范围
Q: 如何实现实时监控?
A:
方案1 - 定时执行:
创建定时触发的工作流,每隔N分钟执行一次
方案2 - 循环执行:
在工作流中添加循环逻辑,持续监控
方案3 - Webhook触发:
配合外部服务实现事件驱动技术规格
节点版本
1.0.0
支持的模式
user_tweets, advanced_search
最大 limit
100
默认 limit
20
分页支持
✅ 是
速率限制
0.5秒/账户
执行超时
120秒
相关节点
AI Model Node - 分析推文情绪和内容
Code Node - 处理推文数据
Dataset Output Node - 保存推文数据
Condition Node - 基于推文内容做决策
Telegram Sender Node - 发送推文通知
相关文档:
节点与工作流 - 节点基础概念
AI Model Node - AI 分析节点
Weather 语法 - 工作流文件格式
Last updated