从 X/Twitter 帖子构建 DexScreener API 提醒

把选定 X/Twitter 帖子中的 ticker 和合约地址转换为经过验证的交易对与价格提醒。

$199/月含 50 个账号,先试用 3 天(5 个账号)

发布于 2025年6月15日 · 更新于 2026年8月25日 · 阅读约 5 分钟 · TweetStream 团队

从推文到代币提醒:速度为何重要

加密交易者会在 Twitter 上关注新代币、截图中的合约地址与链上活动信息。交易者或机器人使用这些帖子前,仍需完成检测、解析与核验。

一条从推文到交易的管线需要三个要素:实时推文检测、自动提取代币(包括文本与图片),以及即时价格验证。DexScreener 补上了关键一环,将原始代币符号转换为带实时价格的可交易交易对。

什么是 DexScreener?

DexScreener 是实时 DEX(去中心化交易所)聚合器,跟踪 Ethereum、Solana、BSC、Arbitrum、Base 等主要区块链及数十条其他链上的代币交易对。它为任何拥有活跃交易对的代币提供实时价格图表、交易量、流动性数据和交易历史。

交易机器人可以使用 DexScreener API 检查代币是否有活跃交易对、查看流动性并读取当前价格。

DexScreener API:主要端点

DexScreener 提供多个无需 API Key 的公共端点,但不同端点系列的速率限制并不相同。在将生产管线接入特定路由前,请查看最新参考文档:

端点用途示例
GET /latest/dex/search?q={query}按名称或符号搜索代币/latest/dex/search?q=PEPE
GET /latest/dex/pairs/{chainId}/{pairId}获取指定交易对/latest/dex/pairs/solana/{pair_address}
GET /token-pairs/v1/{chainId}/{tokenAddress}获取某条链上一个代币地址的所有交易对/token-pairs/v1/solana/So11111111111111111111111111111112
GET /tokens/v1/{chainId}/{tokenAddresses}查询某条链上的一个或多个代币地址/tokens/v1/ethereum/0x6982508145454Ce325dDbE47a25d4ec3d2311933
GET /token-profiles/latest/v1获取最近更新的代币资料/token-profiles/latest/v1

这些路由的响应结构和速率限制各不相同,因此在标准化接入代码前,请确认最新文档。 DexScreener 官方 API 参考.

构建代币检测管线

这套流程分为四个阶段:

  1. 阶段 1:通过 WebSocket 或其他流式 API 接收选定账号的帖子。
  2. 阶段 2:从帖子文本中解析 $TICKER、合约地址和 DEX URL。
  3. 阶段 3:对附件图片运行 OCR,查找截图、图表和公告中的代币信息。
  4. 阶段 4:查询 DexScreener API,检查活跃交易对、流动性和当前价格。

OCR:捕获图片中隐藏的代币

许多加密影响者通过截图而非纯文本分享代币信息,例如图表截图、交易终端图片,或包含合约地址的公告素材。只处理文本的管线会完全漏掉这些信息。

OCR(光学字符识别)会从推文附件图片中提取文本,再按相同模式扫描提取结果:$TICKER 符号、合约地址和 DEX URL。大量早期 Alpha 信号正来自这里,例如图表截图中的合约地址,手动交易者只能逐字符输入。

当图片附件可提供 OCR 富化时,TweetStream 可在提醒 Payload 中包含提取的文本和检测到的代币引用。

代码示例:使用 DexScreener API 查询代币

// Look up a token on DexScreener by chain + address
async function lookupToken(chainId: string, address: string) {
  const res = await fetch(
    `https://api.dexscreener.com/tokens/v1/${chainId}/${address}`
  );
  const pairs = await res.json();
 
  if (!pairs?.length) {
    console.log('No trading pairs found');
    return null;
  }
 
  // Get the highest-liquidity pair
  const topPair = pairs.sort(
    (a, b) => (b.liquidity?.usd ?? 0) - (a.liquidity?.usd ?? 0)
  )[0];
 
  return {
    symbol: topPair.baseToken.symbol,
    name: topPair.baseToken.name,
    price: topPair.priceUsd,
    priceChange24h: topPair.priceChange?.h24,
    volume24h: topPair.volume?.h24,
    liquidity: topPair.liquidity?.usd,
    dex: topPair.dexId,
    chain: topPair.chainId,
    pairUrl: topPair.url,
  };
}
 
// Example: look up PEPE on Ethereum
const token = await lookupToken('ethereum', '0x6982508145454Ce325dDbE47a25d4ec3d2311933');
console.log(token);
// { symbol: 'PEPE', price: '0.00001234', liquidity: 5200000, ... }

代码示例:完整检测管线

// Full tweet → token → price pipeline
const TICKER_REGEX = /\$([A-Z]{2,10})\b/g;
const EVM_ADDR_REGEX = /0x[a-fA-F0-9]{40}/g;
const SOLANA_ADDR_REGEX = /[1-9A-HJ-NP-Za-km-z]{32,44}/g;
 
async function searchToken(query: string) {
  const res = await fetch(
    `https://api.dexscreener.com/latest/dex/search?q=${encodeURIComponent(query)}`
  );
  const data = await res.json();
  return data.pairs ?? [];
}
 
async function processTweet(tweet: { text: string; ocr?: { text?: string } }) {
  const allText = [tweet.text, tweet.ocr?.text ?? ''].join(' ');
  const results = [];
 
  // Extract $TICKER symbols
  for (const match of allText.matchAll(TICKER_REGEX)) {
    const pairs = await searchToken(match[1]);
    if (pairs[0]) {
      results.push(pairs[0]);
    }
  }
 
  // Extract EVM contract addresses
  for (const match of allText.matchAll(EVM_ADDR_REGEX)) {
    const data = await lookupToken('ethereum', match[0]);
    if (data && (data.liquidity ?? 0) > 10_000) {
      results.push(data);
    }
  }
 
  // Extract Solana addresses
  for (const match of allText.matchAll(SOLANA_ADDR_REGEX)) {
    const data = await lookupToken('solana', match[0]);
    if (data && (data.liquidity ?? 0) > 10_000) {
      results.push(data);
    }
  }
 
  return results;
}

支持的链与代币类型

DexScreener 聚合所有主要 EVM 与非 EVM 链的数据:

  • EVM 链:Ethereum、BSC、Arbitrum、Base、Polygon、Avalanche、Optimism、Fantom
  • Solana:包括 pump.fun 发射在内的 SPL 代币
  • 其他 L1:Sui、Aptos、Near、Tron、Cosmos 生态
  • DEX 覆盖:Uniswap、Raydium、PancakeSwap、Jupiter 以及数百个其他 DEX

如果你的观察列表主要跟踪 Solana 或 Base 新币,可优先解析这两条链,并避免让含义不明确的符号进入自动化决策。

省去单独的接入与富化数据栈

TweetStream 将选定账号投递与代币检测、OCR 和实时价格上下文结合,并在相应富化可用时发送。

提醒可包含从文本或图片检测到的代币、OCR 文本、实时价格上下文和预测市场上下文。完整 Payload 结构请参阅 载荷与 OCR 文档。

更快把这个工作流投入生产

这篇文章介绍了这类工作流。TweetStream 负责受监控帖子的接入、代币检测和 OCR,并通过 WebSocket 投递帖子、更新、删除、置顶、资料变化、关注、取消关注和富化 JSON 载荷。支持的套餐还提供历史回放。你的客户端负责按文档重连 WebSocket,并把收到的事件路由到下游。你可以用自己的账号开始 3 天试用。

开始 3 天试用

常见问题

DexScreener API 免费吗?
许多 DexScreener 端点无需 API Key 即可使用,但文档规定的速率限制因端点系列而异。在依赖某个统一限制数值前,请查看最新参考文档。
如何检测推文文本中的代币符号?
扫描 $TICKER 模式(单词边界 + 美元符号 + 2–10 个大写字母)、合约地址(EVM 为 0x 后跟 40 个十六进制字符,Solana 为 base58 字符串),以及路径中包含 dexscreener.com 或 birdeye.so 的 DEX URL。
OCR 真的能从截图中识别合约地址吗?
OCR 可以从清晰截图中提取合约地址,但图片质量和字体会影响准确率。应把提取文本作为证据,验证地址与链,并阻止含义不明确的结果触发自动下单。
如何过滤代币误检产生的噪声?
通过 DexScreener 验证每个检测到的代币:检查交易对是否存在、流动性是否超过最低阈值(例如 10,000 美元);如果要寻找新发射项目,还要检查代币是否近期创建。丢弃未通过这些检查的代币。
从推文到交易信号的延迟大约是多少?
TweetStream 公布监控 X 帖子的滚动服务端检测百分位,按帖子时间戳到首次服务器接收时间计算。OCR 与代币上下文可在后续富化事件中到达。请用自己的观察列表分别测量内容接收、富化、策略、风控和执行。

用你自己的监控列表测试

添加最多 5 个你交易时关注的账号,连接一个 WebSocket,再把提醒与你现在看到的信息对比。

$199/月含 50 个账号,先试用 3 天(5 个账号)