Skip to main content
Glama
nirholas

pumpfun-claims-bot

by nirholas

PumpFun Claims Bot


インタラクティブな監視をお探しですか? telegram-bot は、ウォッチ管理、グループチャット、REST API、SSE ストリーミング、Webhook をサポートしています。こちらは配信専用のシンプルなチャンネルには、この channel-bot を使ってください。

機能

フィードタイプ

フィード

説明

トグル

GitHub ソーシャルフィークレーム

PumpFun のソーシャルフィー PDA 報酬をクレームする GitHub 開発者

FEED_CLAIMS

トークンの卒業

ボンディングカーブから PumpAMM へ卒業するトークン

FEED_GRADUATIONS

クレームのインテリジェンス

GitHub ソーシャルフィークレームカードには、次の情報が含まれます。

機能

説明

🟢 信頼性スコア

すべてのトラストシグナルから総合した決定論的な 0〜100 の判定(Strong/Moderate/Caution/High Risk)。透明な ±要因の内訳付き

📊 開発者の実績

開発者ごとに永続化されるレピュテーション。常連開発者の過去のトークンとその平均信頼度を表示。最新のコインがきれいでも、常習のフィーファーマーを一目で見抜けます

🚨 初回クレームアラート

GitHub ユーザーが史上初めてクレームした場合に 🚨🚨🚨 FIRST TIME CLAIM バナーを表示

⚠️ 偽クレーム検出

claim_social_fee_pda 命令が呼び出されたのに、実際には手数料が支払われていないことを検出

📊 クレームカウンター

再起動をまたいで永続的に記録される連続クレーム番号

💹 累計 SOL

PDA からこれまでに取得された総 SOL 量

👤 GitHub プロフィール

ユーザー名、bio、リポジトリ、フォロワー数、アカウント年齢、場所、ブログ

𝕏 ソーシャルリンク

Twitter/X のプロフィールとフォロワー数(GitHub プロフィールから取得)

🏅 インフルエンサーバッジ

高フォロワーの GitHub/X アカウント向けティア別バッジ

📈 トークン情報

卒業済み/ボンディングカーブの状態、カーブ進捗率、作成時からの経過期間、リプライ数

🔗 トークン SNS

トークンメタデータから取得した Twitter、Telegram、ウェブサイトへのリンク

🏷️ トークンフラグ

NSFW、禁止、キャッシュバックステータス表示

⚠️ トラストシグナル

新しい GitHub アカウント(30 日未満)、リポジトリ 0 個、偽クレームなどの警告

🔗 取引リンク

Axiom、GMGN、Padre へのアフィリエイトリンク

️ トークン画像

トークン画像または GitHub アバターをフォトカードで表示

卒業カード

リッチな卒業カードには、作成者プロフィール、トップホルダー情報、24 時間取引量、開発者のウォレット情報、プール流動性、バンドル検出が含まれます。

インフルエンサーティアシステム

GitHub と X/Twitter のフォロワー情報を組み合わせ、クレーマーを分類します。

ティア

バッジ

X フォロワー

GitHub フォロワー

Mega

🔥🔥 MEGA INFLUENCER

≥ 100K

≥ 10K

Influencer

🔥 Influencer

≥ 10K

≥ 1K

Notable

⭐ Notable

≥ 1K

≥ 100

どちらかのしきい値を満たせばティアが適用されます — X フォロワー 50K・GitHub フォロワー 50 でも、まだ Influencer に該当します。

信頼性スコアと開発者実績

すべてのクレームカードは、あらかじめボットが収集するトラストシグナルを合成した決定固の 0〜100 信頼性判定と、クレームした開発者の診断ティブ実績(過去のトークンなど)を先頭に表示します。

このスコアは 決定論的で透明性があります。同じ入力であれば常に同じ結果を出し、モデル呼び出しを行って**である、ポイントのすべては見出しの下に表示される明示された要因に紐づきます。

ティア

バッジ

スコア

Strong

🟢

75-100

Moderate

🟡

55-74

Caution

🟠

35-54

High Risk

🔴

0-34

スコアリングは中立の 50 から始まり、重み付けされた要因で調整されます:クレーム検証(+22、または GitHub オーナー不一致の場合は -20)、アカウント年齢(5 年以上は +14、30 日未満は -18)、公開リポジトリ、フォロワー、スター付き non-fork リポジトリ、コピーキャット(-10 / -16)、バンドル、ホルダー集中、過去のラグプル、BAN が評価されます。

開発者の実績記録は、一時的なスコアを記憶に変えます。すべてのスコアは、クレームした GitHub ユーザー ID に紐づけて記録されて永続化されるため、次に同開発者がトークンを立ち上げたとき、カードにはその履歴が表示されるのです。これにより、新しいコインがきれいに見えても、繰り返し手数料を搾り取る常連ファーマーを暴き出し、本当に実績のあるビルダーに正当な評価を与えます。

🟢 Credibility: 100/100 · Strong
   ↑ claim verified · GitHub 6y · 42 repos · repo 150★
📊 Dev track record: 3 prior tokens · avg 🔴 19/100 (High Risk)

ロジックは src/credibility.ts(純粋な scoreCredibility)と src/dev-reputation.ts(永続ストア)にあり、どちらもテストに完全にカバーされています。

AI によるクレームサマリー

初回クレームでは、Groq (llama-3.3-70b-versatile) が生成した 1 行形式の AI 見解が提供されます。

  • トークンメタデータ、GitHub プロフィール、Creator の履歴、トレード動向など、30 以上のシグナルを分析

  • 最大文字数 120。直接的、明断で、トレーダー向け

  • 5 秒のタイムアウトと優雅なフォールバック(失敗時は空文字列)

  • Telegram でも安全な HTML サニタイズ済みの出力

例:

"本物の GitHub プロジェクト、開発者は速やかに処理した" · "人気レポのフォーク、注意して進める"

Related MCP server: NoesisAPI

アーキテクチャ

Solana RPC (WebSocket + HTTP polling)
        │
        ▼
┌───────────────────┐
│  SocialFeeIndex   │──▶ Bootstraps ~148K SharingConfig → mint mappings
└────────┬──────────┘
         │
┌────────▼──────────┐
│   ClaimMonitor    │──▶ Decodes PumpFees program claim transactions
│   EventMonitor    │──▶ Decodes Pump program logs (graduations)
└────────┬──────────┘
         │ FeeClaimEvent / GraduationEvent
┌────────▼──────────┐
│ Enrichment Layer  │
│  ├─ GitHub API    │──▶ User profile, repos, followers
│  ├─ X/Twitter API │──▶ Follower counts, influencer tier
│  ├─ PumpFun API   │──▶ Token info, creator profile, holders, trades
│  ├─ ClaimTracker  │──▶ First-claim detection, persistent counts
│  └─ Fake Detect   │──▶ Instruction called but no payout (amountLamports=0)
└────────┬──────────┘
         │ ClaimFeedContext
┌────────▼──────────┐
│    Formatters     │──▶ Rich HTML cards with sections & emoji layout
└────────┬──────────┘
         │
┌────────▼──────────┐
│   grammY Bot      │──▶ Posts photo + caption to Telegram channel
│   (retry + rate   │    Falls back to text-only if photo fails
│    limiting)      │
└───────────────────┘

マルチRPC フェールオーバ

RpcFallback クラスは、複数の Solana RPC エンドポイントを自動ローテーションで管理します。

  • ラウンドロビンローテーション — いずれかで 3 回連続失敗すると次エンドポイントへ切り替え

  • 60 秒クールダウン — 失敗したエンドポイントは待振り 60 秒間休止します

  • 最早期限フォールバック — すべてのエンドポイントがクールダウンの場合、最も近い期限が切れそうなものを選択

  • 成功時のリセット — 1 回成功すると失敗カウンタがリセット

  • SOLANA_RPC_URLS(カンマ区切り)で設定

検知プログラム

プログラム

ID

目的

PumpFees

PfeEaB1g6jkeY1HxDGCsFCAjAhHA9rWtchMGdZ6VojVZ

フィー分散、ソーシャルフィー PDA クレーム

Pump

6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P

ボンディングカーブ(卒業)

ھپAMPump`

pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA

AMM(卒業後のプールイベント)

インストール

npm(MCP サーバー — AI アシスタントに推奨)

npx を使って、クローンしなくてもMCPサーバーをすぐ実行できます:

npx pumpfun-claims-bot

またはグローバルインストール:

npm install -g pumpfun-claims-bot
pumpfun-claims-bot

自分の MCP クライアント設定(Claude Desktop、Cursor、VS Code Copilot)に追加します:

{
  "mcpServers": {
    "pumpfun": {
      "command": "npx",
      "args": ["pumpfun-claims-bot"]
    }
  }
}

npm パッケージ: pumpfun-claims-bot on npm

ソースから(フルボット + Telegram フィード)

git clone https://github.com/nirholas/pumpfun-claims-bot.git
cd pumpfun-claims-bot && npm install

クイックスタート

1. Telegram ボットを作成

  1. Telegram で @BotFather にメッセージを送信

  2. /newbot → 指示に従う → ボットトークンをコピー

  3. 公開チャンネルを作成(例:@pumpfunclaims

  4. ボットをチャンネルの管理者に追加("メッセージ投稿" 権限が必須)

2. 環境設定

cp .env.example .env
# ── Required ──────────────────────────────────────────────
TELEGRAM_BOT_TOKEN=your-bot-token-from-botfather
CHANNEL_ID=@your_channel_name    # or numeric chat ID like -100xxx

# ── Solana RPC ────────────────────────────────────────────
SOLANA_RPC_URL=https://mainnet.helius-rpc.com/?api-key=your-key
SOLANA_WS_URL=wss://mainnet.helius-rpc.com/?api-key=your-key

# Comma-separated fallback RPCs (rotates on 429/5xx/timeout)
SOLANA_RPC_URLS=https://mainnet.helius-rpc.com/?api-key=key1,https://your-other-rpc.com

# ── Feed Toggles (all default false except FEED_CLAIMS) ───
FEED_CLAIMS=true                 # GitHub social fee claims (default: true)
FEED_GRADUATIONS=false           # Token graduations to PumpAMM (default: false)
FEED_LAUNCHES=false              # New token launches (default: false)
FEED_WHALES=false                # Large buy/sell whale alerts (default: false)
FEED_FEE_DISTRIBUTIONS=false     # Creator fee distribution events (default: false)

# ── Claim Filter ──────────────────────────────────────────
REQUIRE_GITHUB=true              # Only post claims with GitHub social fee PDA (default: true)

# ── Enrichment APIs ───────────────────────────────────────
GITHUB_TOKEN=ghp_your_token      # Raises GitHub rate limit: 60 → 5000 req/hr
GROQ_API_KEY=gsk_your_key        # Groq API for AI one-liner summaries

# X/Twitter follower counts & influencer detection
# Get cookies from x.com DevTools → Application → Cookies
# X_AUTH_TOKEN=your_auth_token_cookie
# X_CT0_TOKEN=your_ct0_cookie

# ── Affiliate Ref Codes ───────────────────────────────────
# Appended to Axiom / GMGN / Padre trading links in cards
# AXIOM_REF=your_ref
# GMGN_REF=your_ref
# PADRE_REF=your_ref

# ── Tuning ────────────────────────────────────────────────
POLL_INTERVAL_SECONDS=30         # HTTP polling fallback interval (default: 30)
WHALE_THRESHOLD_SOL=10           # Minimum SOL for whale alerts (default: 10)
LOG_LEVEL=info                   # debug | info | warn | error (default: info)

# ── Health Check ──────────────────────────────────────────
# PORT=3000                      # Set automatically by Railway

環境変数リファレンス

変数

必須

デフォルト

説明

TELEGRAM_BOT_TOKEN

ボットトークン — @BotFather にメッセージ → /newbot

CHANNEL_ID

投稿先チャンネル(@channelname または -100xxx)— 数値IDは @userinfobot で取得

SOLANA_RPC_URL

https://api.mainnet-beta.solana.com

プライマリSolana HTTP RPC — 無料枠は HeliusQuickNodeAlchemy

SOLANA_WS_URL

SOLANA_RPC_URL から自動生成

Solana WebSocket URL — SOLANA_RPC_URL と同じプロバイダーを使用し、https://wss:// に置き換え

SOLANA_RPC_URLS

カンマ区切りのフォールバックRPC URL — 429 / 5xx / タイムアウト時に自動ローテーション

FEED_CLAIMS

true

GitHubソーシャルフィー請求カードを投稿

FEED_GRADUATIONS

false

トークン卒業カードを投稿

FEED_LAUNCHES

false

新規トークンローンチカードを投稿

FEED_WHALES

false

クジラの買い/売りアラートを投稿

FEED_FEE_DISTRIBUTIONS

false

クリエイター手数料分配イベントを投稿

REQUIRE_GITHUB

true

GitHubソーシャルフィーPDAがない請求をスキップ

GITHUB_TOKEN

GitHub PAT — こちらで作成(スコープ不要)— レート制限を60 → 5000 req/hr に引き上げ

GROQ_API_KEY

AIワンライナー要約用のGroq APIキー — console.groq.com で無料キーを取得

X_AUTH_TOKEN

X/Twitter の auth_token クッキー — x.com を開き、DevTools → Application → Cookies → auth_token をコピー

X_CT0_TOKEN

X/Twitter の ct0 クッキー(CSRFトークン)— 上記と同じ場所から ct0 をコピー

AXIOM_REF

Axiom 取引リンク用のアフィリエイト参照コード

GMGN_REF

GMGN 取引リンク用のアフィリエイト参照コード

PADRE_REF

Padre 取引リンク用のアフィリエイト参照コード

POLL_INTERVAL_SECONDS

30

WebSocketが利用できない場合のHTTPポーリング間隔

WHALE_THRESHOLD_SOL

10

クジラアラートをトリガーする最小SOL取引サイズ

LOG_LEVEL

info

ログの詳細度: debug | info | warn | error

PORT

3000

ヘルスチェックHTTPサーバーポート — Railway が自動設定

MCP_ENABLED

false

AIアシスタント統合用のMCP(Model Context Protocol)サーバーを有効化

MCP_PORT

3001

MCPサーバーHTTPポート(Streamable HTTP トランスポート)

3. 実行

# Install dependencies
npm install

# Development (hot reload via tsx)
npm run dev

# Production
npm run build
npm start

4. Dockerでデプロイ

docker build -t pumpfun-channel-bot .
docker run -d --env-file .env pumpfun-channel-bot

5. Railwayにデプロイ

Deploy on Railway

RailwayはGitHubから自動デプロイし、請求追跡データ用の永続ボリュームを提供します。

# Install Railway CLI
npm install -g @railway/cli
railway login

# Create & link project
railway init
railway link

# Set environment variables
railway variables set TELEGRAM_BOT_TOKEN=your-token
railway variables set CHANNEL_ID=@your_channel_name
railway variables set SOLANA_RPC_URL=https://mainnet.helius-rpc.com/?api-key=your-key
railway variables set SOLANA_WS_URL=wss://mainnet.helius-rpc.com/?api-key=your-key
railway variables set FEED_CLAIMS=true
railway variables set REQUIRE_GITHUB=true

# Create persistent volume for claim tracker data
railway volume create --mount /app/data

# Deploy
railway up

デプロイ設定は railway.json を参照してください:

{
  "$schema": "https://railway.app/railway.schema.json",
  "build": {
    "builder": "DOCKERFILE",
    "dockerfilePath": "Dockerfile"
  },
  "deploy": {
    "restartPolicyType": "ON_FAILURE",
    "restartPolicyMaxRetries": 10
  }
}

プロジェクト構造

pumpfun-claims-bot/
├── src/
│   ├── index.ts              # Entry point — wires monitors, enrichment, & Telegram posting
│   ├── config.ts             # Environment variable loading & validation
│   ├── mcp-server.ts         # MCP server — exposes tools via Streamable HTTP or stdio
│   ├── mcp-stdio.ts          # Standalone MCP entry point (stdio transport)
│   ├── claim-monitor.ts      # PumpFees program monitor (WebSocket + HTTP polling)
│   ├── claim-routing.ts      # Decides which claims are posted, skipped, or re-routed
│   ├── claim-tracker.ts      # First-claim detection + claim counter (persisted to disk)
│   ├── credibility.ts        # Deterministic 0-100 credibility scoring
│   ├── dev-reputation.ts     # Persistent per-developer track record store
│   ├── event-monitor.ts      # Pump program log decoder (graduations, launches)
│   ├── social-fee-index.ts   # SocialFeeIndex — maps SharingConfig PDAs → mints (~148K)
│   ├── formatters.ts         # Rich HTML card builders for Telegram
│   ├── pump-client.ts        # PumpFun HTTP API client (token info, creator profiles)
│   ├── github-client.ts      # GitHub API client (user profiles, rate-limited cache)
│   ├── x-client.ts           # X/Twitter profile fetcher + influencer tier logic
│   ├── groq-client.ts        # Groq AI one-liner summaries
│   ├── rpc-fallback.ts       # Multi-RPC failover with round-robin
│   ├── health.ts             # HTTP health check server
│   ├── types.ts              # Program IDs, discriminators, event types
│   └── logger.ts             # Leveled console logger
├── src/__tests__/            # Vitest suites (203 tests) + shared fixtures
├── packages/web/             # React dashboard, mock-data build (see Web Dashboard)
├── web/web/                  # React dashboard, live-SSE build (see Web Dashboard)
├── leaderboard-bot/          # Separate Telegram bot: GitHub dev earnings leaderboard
├── data/                     # Persisted state (gitignored, Railway volume mount)
│   └── github-first-claims.json
├── Dockerfile                # Multi-stage Docker build
├── railway.json              # Railway deployment config
├── package.json
└── tsconfig.json

動作の仕組み

請求検出パイプライン

Transaction detected on PumpFees program
  │
  ▼
Identify instruction: claim_social_fee_pda?
  │
  ├─ YES ──▶ Parse platform (2 = GitHub) + user_id from Anchor args
  │           │
  │           ▼
  │        Check amountLamports from SocialFeePdaClaimed event
  │           │
  │           ├─ amountLamports > 0 ──▶ Real claim
  │           │   ├─ Check ClaimTracker: first time for this GitHub user?
  │           │   │   ├─ YES ──▶ 🚨 FIRST TIME CLAIM banner
  │           │   │   └─ NO  ──▶ Standard claim card
  │           │   └─ Enrich: GitHub API + PumpFun API + X profile
  │           │
  │           └─ amountLamports = 0 ──▶ ⚠️ FAKE CLAIM (instruction called, no payout)
  │
  └─ NO ───▶ Other claim type (creator fee, cashback, etc.)

SocialFeeIndex ブートストラップ

起動時に、ボットはPumpFeesプログラムからすべての SharingConfig アカウントを取得し、ソーシャルフィーPDAアドレスからトークンミントへの逆マッピングを構築します。これにより、追加のRPC呼び出しなしでソーシャルフィー請求がどのトークンに属するかを解決できます。

  • 起動時に約148Kのマッピングを読み込み

  • 増分更新CreateFeeSharingConfigUpdateFeeShares イベントのWebSocketサブスクリプションによる

  • ルックアップ: socialFeeIndex.getMintForPda(pdaAddress) → トークンミント

  • 1つのPDA → 複数のミント — 複数のトークンにわたってPDAを再利用する詐欺師に対応

偽の請求検出

一部のユーザーは、徴収する手数料がないランダムなトークンPDAを対象に claim_social_fee_pda 命令を呼び出します。ボットは以下をチェックしてこれらを検出します:

  1. 命令のディスクリミネータが claim_social_fee_pda と一致する

  2. トランザクションログに SocialFeePdaClaimed イベントが含まれない — またはイベントが amountLamports = 0 を示す

  3. GitHubユーザーIDとプラットフォームは命令引数(Anchor Borsh形式)から引き続き解析される

偽の請求は ⚠️ FAKE CLAIM 警告と 🚩 Fake claim — no fees paid out トラストシグナル付きで投稿されます。

初回請求トラッキング

ClaimTracker は正常に請求したGitHubユーザーIDの永続セットを維持します:

  • インメモリセット — 処理中の高速ルックアップ用

  • デバウンス付きディスク永続化(5秒遅延)— data/github-first-claims.json

  • チェック/マーク分割パターン: hasGithubUserClaimed() は副作用なしでチェック、markGithubUserClaimed() はTelegram投稿成功後にのみ呼び出し

  • 請求カウンター: incrementGithubClaimCount() はユーザーごとの連番請求番号を返す

  • 初回請求ステータスは偽の請求には設定されない

3層の初回請求検証

  1. ローカル重複排除 — 既に投稿済みの場合はスキップ(永続化されたJSONで再起動後も維持)

  2. オンチェーン検証lifetimeClaimedLamports == amountLamports でオンチェーン上で本当に初回請求であることを確認

  3. グレースフルフォールバック — 検証が失敗した場合は初回請求バナーをスキップ(再デプロイ後の誤検知を防止)

請求カードの例

🚨🚨🚨 FIRST TIME CLAIM 🚨🚨🚨

🐙 $PUMP — PumpCoin  💹 $45K
  ↳ GitHub dev claimed PumpFun social fees

📊 Claim #1 · 0.1043 SOL lifetime ($15.65)

🏦 0.1043 SOL ($15.65)
  ↳ 8mNp...4rWz

👤 nirholas (Nicholas)
  ↳ 📦 45 · 👁 200 · 📅 5y ago
  TypeScript SDK builder
𝕏 nichxbt · 1.2K

📈 Bonding curve (72%) · Created 3h ago · 💬 12
𝕏 @pump_coin · 💬 TG · 🌐 pumpcoin.io

⚠️ GitHub account created 15d ago

CA: 7xKXt...p3Bz
Axiom · GMGN · Padre

🔍 TX

要件

  • Node.js >= 20.0.0

  • Telegramボットトークン@BotFather 経由)

  • Telegramチャンネル — ボットが管理者として追加されていること

  • Solana RPCエンドポイント — 専用RPC推奨(Helius、QuickNode、Triton)。パブリックメインネットでも動作しますが、レート制限される可能性があります。

  • GitHubトークン(任意)— APIレート制限を60から5,000 req/hrに引き上げ

トラブルシューティング

ボットがメッセージを投稿しない

  1. ボットの権限を確認 — ボットはチャンネルの管理者で「メッセージを投稿」権限が必要です

  2. CHANNEL_ID を確認 — 公開チャンネルは @channel_name、プライベートチャンネルは数値ID(例:-100xxx)を使用。数値IDを見つけるには、チャンネルメッセージを @userinfobot に転送

  3. Telegram 403エラー — ボットがチャンネルのメンバー/管理者ではないことを意味します。チャンネル設定 → 管理者 → 管理者を追加 で追加してください

  4. ログを確認LOG_LEVEL=debug を設定して、ボットが処理するすべてのイベントを確認

レート制限

Telegramはボットをチャンネルに対して毎秒約30メッセージに制限します。grammYフレームワークがレート制限を自動処理します:

  • メッセージは遅延する可能性がありますが、ドロップされません

  • ボットには retry_after ヘッダーを尊重するリトライヘルパーが含まれています

  • 非常に高いアクティビティの場合は、POLL_INTERVAL_SECONDS を増やしてイベント量を減らします

RPC接続の問題

  • パブリックRPCエンドポイントにはレート制限があります — 本番環境では専用RPCを使用してください

  • 自動フェイルオーバー用に複数のエンドポイントで SOLANA_RPC_URLS を設定

  • WebSocketが切断された場合、ボットは POLL_INTERVAL_SECONDS でHTTPポーリングにフォールバック

  • RpcFallback クラスが設定されたエンドポイント間でラウンドロビンを提供

  • LOG_LEVEL=debug を設定して接続ステータスを確認

請求が欠落している

  • GitHub請求のみ?REQUIRE_GITHUB=true を設定してGitHubソーシャルフィー請求のみを投稿

  • フィードが無効?FEED_CLAIMS=true が設定されているか確認

  • SocialFeeIndexが遅い? — 初期ブートストラップは約148Kアカウントを取得します。起動時に30〜60秒かかります。ログで SocialFeeIndex: loaded N mappings を確認

  • レート制限? — GitHub APIは未認証で60 req/hrを許可。GITHUB_TOKEN を設定して5,000 req/hrに

パイプライン統計

ボットは60秒ごとにパイプラインカウンターをログに記録します:

Pipeline: 15 total → 8 social → 3 first / 5 repeat → 8 posted (skip: 7 cashback)
  • total: 受信したすべての請求イベント

  • social: GitHubソーシャルフィーPDA請求

  • first/repeat: 初回 vs. リピート請求者

  • posted: Telegramへの投稿に成功

  • skip cashback: キャッシュバック請求(ユーザー返金、クリエイター活動ではない)

Webダッシュボード

2つのReactフロントエンドがチェックインされており、それらは同じアプリではありません:

ディレクトリ

概要

ビルド

web/web/

完全なダッシュボード: SSEイベントストリーム、ウォッチリスト、SEOアセット(robots.txtsitemap.xmlllms.txt)。独自のロックファイルを持つため、npm ci が機能します。

cd web/web && npm ci && npm run build

packages/web/

同じUIの初期の小規模版。ダッシュボードは生成されたサンプルイベントをレンダリングし、SSEクライアントはありません。

cd packages/web && npm ci && npm run build

以下に記載する機能は web/web/ を説明したものです。両ディレクトリとも現在はクリーンにビルドできますが、1つに統合する作業はまだ未完了です。

ディープリンク(/dashboard/docs など)はクライアントサイドルートのため、任意の静的ホストで未知のパスを index.html にリライトする必要があります。各アプリには現在、そのリライト設定を含む vercel.json が同梱されています。Vercel以外のホストでは、同等のSPAフォールバックを設定してください。

ページ

ページ

ルート

説明

ホーム

/

プロジェクト概要のランディングページ

ダッシュボード

/dashboard

SSEストリーミングによるライブイベントフィード

コイン作成

/create

トークン作成インターフェース

ドキュメント

/docs

APIドキュメント & Telegramコマンド

パッケージ

/packages

パッケージブラウザ

ダッシュボード機能

  • サーバー送信イベント(SSE)/api/v1/claims/stream によるリアルタイムストリーミング(3秒遅延で自動再接続)

  • イベントフィルター — すべて、ローンチ、クジラ、卒業、クレーム、配布

  • ライブ統計バー — 各イベントタイプのカウンター

  • ウォッチリスト — 監視するウォレットアドレスの追加/削除(GET/POST/DELETE /api/v1/watches

  • リッチイベントカード — トークンローンチ、クジラ取引、卒業、クレームを完全なコンテキスト付きで表示

  • 接続ステータス — エラーメッセージ付きの視覚的インジケーター

  • モックデータフォールバック — SSEが利用できない場合のシミュレーションフィード

技術スタック

技術

フレームワーク

React 18

ルーター

React Router

ビルド

Vite 5

スタイリング

Tailwind CSS

言語

TypeScript

MCPサーバー

このボットには組み込みの Model Context Protocol(MCP)サーバーが含まれており、AIアシスタント(Claude、Copilot、Cursorなど)がPumpFunのオンチェーンデータを会話形式で照会できます。

MCPツール

ツール

説明

get_token_info

トークンメタデータ、時価総額、ボンディングカーブの進捗、フラグ

get_token_holders

集中度メトリクス付きの上位ホルダー

get_token_trades

最近の取引アクティビティ — 出来高、買い/売り回数

get_pool_liquidity

卒業トークンのPumpSwap AMMプール流動性

get_bundle_info

バンドル検出(詐欺インジケーター)

get_creator_profile

クリエイターのローンチ履歴、詐欺推定、最近のコイン

get_github_user

ユーザー名または数値IDによるGitHubプロファイル

get_claim_history

ウォレットのクレーム履歴と残りのクレーム

get_sol_price

現在のSOL/USD価格

使用方法: Stdioトランスポート(Claude Desktop / Cursor / VS Code)

MCPクライアントの設定に追加します(例: claude_desktop_config.json):

{
  "mcpServers": {
    "pumpfun": {
      "command": "npx",
      "args": ["pumpfun-claims-bot"]
    }
  }
}

またはソースから実行:

# Development (tsx)
npm run mcp:dev

# Production (compiled)
npm run build && npm run mcp

使用方法: Streamable HTTPトランスポート(組み込み)

メインボットと並行して実行するには、MCP_ENABLED=true を設定します:

MCP_ENABLED=true MCP_PORT=3001 npm run dev

MCPエンドポイントは設定されたポートの POST /mcp で利用可能です。クライアントはStreamable HTTPトランスポートを使用して接続します。

クエリ例

接続後、AIアシスタントに次のように尋ねます:

  • "ミントアドレス 7xKXt...p3Bz のトークン情報を調べて"

  • "GitHubユーザー 12345 はPumpFunの手数料をクレームしたことがある?"

  • "このトークンの上位ホルダーは誰?"

  • "このトークンのローンチがバンドルされていたか確認して"

  • "現在のSOLの価格は?"

ヘルスチェックAPI

このボットはRailway / Dockerプローブ用のHTTPヘルスチェックサーバーを公開しています。

エンドポイント

メソッド

説明

/health

GET

稼働状況と統計情報を返します

/

GET

/health のエイリアス

レスポンス:

{
  "status": "ok",
  "uptime": "12345s",
  "uptimeMs": 12345000
}
  • 正常時は 200、低下時は 503 を返します

  • コールバックを介して動的統計情報を注入(パイプラインカウンター、接続ステータス)

  • ポートは PORT または HEALTH_PORT 環境変数で設定可能(デフォルト: 3000)

テスト

このプロジェクトは Vitest を使用しています: 11スイート・203テストがすべて npm test で成功します。

# Run all tests
npm test

# Watch mode (re-runs on file changes)
npm run test:watch

テストスイート

すべてのスイートは src/__tests__/ にあります(共有フィクスチャデータは fixtures.ts)。

スイート

ファイル

カバレッジ

Claim Tracker

claim-tracker.test.ts

初回クレーム検出、永続化、カウンター、生涯合計

Claim Routing

claim-routing.test.ts

どのクレームが投稿されるか、スキップされるか、どのフィードにルーティングされるか

Credibility

credibility.test.ts

決定的0〜100スコアリング、要因別内訳、ティア境界

Dev Reputation

dev-reputation.test.ts

開発者ごとの永続的なトラックレコードと平均値

Formatters

formatters.test.ts

HTMLカード生成、エスケープ、null処理、エッジケース

GitHub Client

github-client.test.ts

URL解析、APIレスポンス処理、キャッシュ動作

Groq Client

groq-client.test.ts

AI要約生成、APIキー処理、HTML安全性

Pump Client

pump-client.test.ts

トークン、ホルダー、取引、クリエイターAPIレスポンス処理

RPC Fallback

rpc-fallback.test.ts

ラウンドロビンローテーション、クールダウン、再試行可能なエラー処理

X Client

x-client.test.ts

インフルエンサーティア分類、フォロワー数フォーマット

E2E Pipeline

e2e.test.ts

エンドツーエンドのクレーム追跡、フォーマット、GitHubフィード

ローカル開発

# Install dependencies
npm install

# Run with hot reload (tsx)
npm run dev

# Type-check without emitting
npm run typecheck

LOG_LEVEL=debug を設定すると、Telegramに投稿されるかどうかに関係なく、すべてのイベントがstdoutに記録されます。

技術スタック

コンポーネント

技術

ランタイム

Node.js >= 20 (ESM)

言語

TypeScript 5.7 (strict mode)

ブロックチェーン

@solana/web3.js 経由のSolana

Telegram

grammYフレームワーク

AI

Groq API (llama-3.3-70b-versatile)

フロントエンド

React 18 + Vite 5 + Tailwind CSS

テスト

Vitest

コンテナ

Docker(マルチステージAlpine、非root)

MCP

@modelcontextprotocol/sdk (Streamable HTTP + stdio)

ホスティング

Railway(GitHubからの自動デプロイ)

依存関係

本番6、開発4 — 意図的に最小限

コントリビューション

コントリビューションを歓迎します!ガイドラインは CONTRIBUTING.md を参照してください。

  1. リポジトリをフォーク

  2. フィーチャーブランチを作成(git checkout -b feat/my-feature

  3. テスト(npm test)と型チェック(npm run typecheck)を実行

  4. プルリクエストを開く

セキュリティ

脆弱性を発見しましたか?責任を持って報告してください — SECURITY.md を参照してください。

ライセンス

全著作権所有。 LICENSE を参照してください。

ドキュメント

完全なドキュメントサイト: https://nirholas.github.io/pumpfun-claims-bot/

  • はじめに はインストールと初回実行について説明しています。

  • にはコピーペースト可能なスニペットがあります。

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nirholas/pumpfun-claims-bot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server