mcpField
M
moonpay-price-alerts

moonpay-price-alerts

github.com/moonpay其他11254 次安装23 周前更新
代码仓库

关于 moonpay-price-alerts

moonpay-price-alerts 是用于定时监控代币价格并在达到阈值时发送桌面通知的技能。它支持一次性和重复提醒,不会执行交易。

主要功能

  1. 01定时检查代币价格
  2. 02一次性与重复提醒
  3. 03macOS 和 Linux 桌面通知
  4. 04查看、移除提醒及日志

适用场景

  1. 01代币价格跌破目标时接收通知
  2. 02代币高于阈值时持续接收提醒
  3. 03查看或移除已设置的提醒

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/moonpay/skills --skill moonpay-price-alerts

安装后在 Claude Code 中输入/moonpay-price-alerts确认已加载。

详细介绍

价格提醒

目标

监控代币价格,并在价格越过阈值时收到桌面通知。使用 mp token search 检查价格,并通过操作系统通知(osascript/notify-send)发送提醒。仅用于观察——不会有资金风险。

先决条件

  • mp 二进制文件位于 PATH 中:which mp
  • 已安装 jq:which jq
  • macOS:osascript(内置),或 Linux:notify-send(sudo apt install libnotify-bin)

单次提醒

“SOL 跌到 $80 以下时告诉我”——每 5 分钟检查一次,触发后仅提醒一次,然后自动停用。

脚本:~/.config/moonpay/scripts/alert-sol-below-80.sh
#!/bin/bash
set -euo pipefail

MP="$(which mp)"
LOG="$HOME/.config/moonpay/logs/alerts.log"
mkdir -p "$(dirname "$LOG")"
log() { echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] $*" >> "$LOG"; }

# --- Config ---
TOKEN="So11111111111111111111111111111111111111111"
CHAIN="solana"
SYMBOL="SOL"
TARGET=80
DIRECTION="below"  # "above" or "below"
SCRIPT_NAME="alert-sol-below-80"

# --- Check price ---
PRICE=$("$MP" --json token search --query "$SYMBOL" --chain "$CHAIN" | jq -r '.items[0].marketData.price')

if [ -z "$PRICE" ] || [ "$PRICE" = "null" ]; then
  log "ALERT $SCRIPT_NAME: price fetch failed, skipping"
  exit 0
fi

# --- Compare ---
TRIGGERED=false
if [ "$DIRECTION" = "below" ] && (( $(echo "$PRICE < $TARGET" | bc -l) )); then
  TRIGGERED=true
elif [ "$DIRECTION" = "above" ] && (( $(echo "$PRICE > $TARGET" | bc -l) )); then
  TRIGGERED=true
fi

if [ "$TRIGGERED" = true ]; then
  MSG="$SYMBOL is $DIRECTION \$$TARGET — currently \$$PRICE"
  log "ALERT $SCRIPT_NAME: $MSG"

  # Desktop notification
  if [[ "$OSTYPE" == "darwin"* ]]; then
    osascript -e "display notification \"$MSG\" with title \"MoonPay Alert\" sound name \"Glass\""
  else
    notify-send "MoonPay Alert" "$MSG"
  fi

  # Self-disable (one-shot)
  if [[ "$OSTYPE" == "darwin"* ]]; then
    launchctl unload "$HOME/Library/LaunchAgents/com.moonpay.${SCRIPT_NAME}.plist" 2>/dev/null || true
  else
    crontab -l | grep -v "$SCRIPT_NAME" | crontab -
  fi
  log "ALERT $SCRIPT_NAME: disabled after trigger"
else
  log "ALERT $SCRIPT_NAME: $SYMBOL at \$$PRICE — not triggered ($DIRECTION $TARGET)"
fi
计划任务

每 5 分钟检查一次:

# cron (Linux)
*/5 * * * * ~/.config/moonpay/scripts/alert-sol-below-80.sh # moonpay:alert-sol-below-80

# launchd (macOS) — use StartInterval of 300 seconds in the plist

~/Library/LaunchAgents/com.moonpay.alert-sol-below-80.plist 中的 Launchd plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.moonpay.alert-sol-below-80</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/bash</string>
    <string>/Users/USERNAME/.config/moonpay/scripts/alert-sol-below-80.sh</string>
  </array>
  <key>StartInterval</key>
  <integer>300</integer>
  <key>StandardErrorPath</key>
  <string>/Users/USERNAME/.config/moonpay/logs/alert-sol-below-80.err</string>
</dict>
</plist>

加载:launchctl load ~/Library/LaunchAgents/com.moonpay.alert-sol-below-80.plist

重要: 将 USERNAME 替换为实际用户名。波浪号不会在 plist 文件中展开。

循环提醒

“只要 ETH 高于 $2000,就每小时提醒我”——每次检查时都会触发,不会自动停用。

使用上面的同一个脚本,但移除自动停用代码块。每当条件满足时都会触发提醒,直到用户手动移除提醒。

管理提醒

列出活跃提醒
# macOS
launchctl list | grep moonpay

# Linux
crontab -l | grep moonpay
移除提醒
# macOS
launchctl unload ~/Library/LaunchAgents/com.moonpay.alert-sol-below-80.plist
rm ~/Library/LaunchAgents/com.moonpay.alert-sol-below-80.plist

# Linux
crontab -l | grep -v "alert-sol-below-80" | crontab -
查看提醒历史记录
tail -50 ~/.config/moonpay/logs/alerts.log

提示

  • 通过 mp token search 免费检查价格——无需支付 Gas 费用
  • 5 分钟的间隔较为合理;不要低于 1 分钟
  • 使用 mp token search --query "SOL" --chain solana 解析代币地址
  • 提醒会记录到 ~/.config/moonpay/logs/alerts.log——查看此文件以确认提醒正在运行
  • 必须登录机器,通知和钥匙串访问才能正常工作
  • bc -l 可进行小数比较;如果不可用,可使用 awk "BEGIN {exit !($PRICE < $TARGET)}"
  • 此技能仅用于观察——如需自动买卖,请参阅 moonpay-trading-automation

相关技能

  • moonpay-trading-automation — 自动交易(定投、限价单、止损)
  • moonpay-discover-tokens — 调研代币并获取当前价格
  • moonpay-check-wallet — 设置提醒前查看投资组合

评论

支持 Markdown