Community编程与开发github.com

cristiangm3005/claude-skill-sismos

监测用户位置附近的地震和震动(默认科皮亚波,智利),使用 USGS、EMSC 以及可选的 GlobalQuake 服务器或 sismo-rt 后端,检测到后立即在对话中通知(并推送通知)。当用户说“如果有地震请通知我”、“监测地震”、“附近有地震吗?”、“地震了吗?”、“最近的地震”、“GlobalQuake”、“地震预警”或询问最近或正在发生的地震时使用。

claude-skill-sismos 是什么?

该技能是一个实时地震监测工具,专为 Claude Code、Cursor、Codex 等 AI 代理设计。它通过查询美国地质调查局(USGS)和欧洲地中海地震中心(EMSC)等公开地震数据源,并结合可选的 GlobalQuake 服务器或 sismo-rt 后端,实现对用户指定位置附近地震的持续监测。技能核心是一个 Python 脚本 (`sismos.py`),它计算地震距离、方向以及估计的麦卡利烈度。用户可以进行单次查询(如“最近 24 小时有地震吗?”),也可以启动长达 30 分钟的持续监测,监测到期后会自动重启。当地震发生时,技能会通过聊天通知和可选的推送通知主动提醒用户,并根据烈度级别提供防护建议。该技能默认监测智利科皮亚波,但支持通过命令行参数或环境变量自定义位置和阈值。它明确声明无法预测地震,仅在检测到后尽快通知。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cristiangm3005/claude-skill-sismos/tree/HEAD/claude-skill-sismos/claude-skill-sismos/sismos

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

地震监测

脚本 scripts/sismos.py(仅使用标准 Python,3.9+)查询地震源并计算用户位置的距离、方向和估计烈度(麦卡利)。

在回复之前:不能做什么

没有任何系统可以预测地震,即使是 GlobalQuake 也不行。该技能的作用是在地震已被检测到后尽快通知。如果用户要求“告诉我什么时候会地震”,请用一句话说明并提议进行监测。使用 USGS 和 EMSC 时,通知会在震后 1 到 20 分钟内到达。只有使用 GlobalQuake 才能在数秒内到达。紧急情况下,智利的官方来源是 SENAPRED 的 SAE 和 CSN(sismologia.cl)。

位置和阈值

默认值:科皮亚波(-27.3668,-70.3314),半径 500 公里,全球范围内 M≥6.0,忽略 M<3.0。 如果用户提到其他城市或坐标,请使用 --lat --lon --lugar 传递它们(使用你已知的城市坐标)。也可以使用环境变量 SISMOS_LAT、SISMOS_LON、SISMOS_LUGAR、SISMOS_RADIO_KM、SISMOS_MAG_GLOBAL、SISMOS_MAG_MIN 进行设置。

在下面的命令中,SKILL_DIR 是该技能的基础目录(加载时显示):如果是为用户安装的,则为 ~/.claude/skills/sismos;如果在项目中,则为 .claude/skills/sismos。请将其替换为实际路径。

单次查询:“有地震吗?”

python3 SKILL_DIR/scripts/sismos.py ahora --horas 24

如果需要处理数据,请使用 --json。为用户总结:最相关的地震(按估计烈度从高到低排序),包括震级、距离、方向、智利时间和烈度。如果没有地震,请说明。如果脚本输出 ERROR fuente ...,请告知该源失败。如果退出码为 2,则两个源都失败:不要说“没有地震”。

持续监测:“如果有地震请通知我”

  1. 使用 Monitor 工具(而不是 Bash)启动监视器:
    • command:python3 -u SKILL_DIR/scripts/sismos.py vigilar(如果合适,附加 --lat/--lon/--lugar)
    • description:sismos cerca de <lugar>( 附近的地震)
    • timeout_ms:1800000(最大值)
  2. 用一行文字向用户确认你正在监测什么(地点、半径、震级),并说明通知会有源的延迟。
  3. 监视器的每一行都是一个事件:
    • VIGILANDO ... → 启动成功,无需多说。
    • SISMO nivel=ALERTA ... → 首先使用 PushNotification 工具发送通知(status: "proactive",一行不超过 200 个字符,例如 地震 M5.4,科皮亚波以西 42 公里,烈度 V。时间 18:03)。如果该工具未加载,请使用 ToolSearch(select:PushNotification)加载。然后立即在聊天中通知,首先说明关键信息:震级、距离、估计烈度和时间。如果烈度为 V 或更高,额外添加 2-3 行防护措施(蹲下、掩护、抓牢;远离窗户;如果你在海岸且震动强烈或持久,请疏散到高地,无需等待官方警报)并建议查看 SENAPRED 和 SHOA。
    • SISMO nivel=INFO ... → 在聊天中简要通知(用户位置远处或弱震)。仅当震级为 6.0 或以上时才发送推送通知。
    • 如果该行包含 (actualización) → 震级已修正或级别已提升。通知变更。
    • 如果该行包含 SIN_CONFIRMAR → 初步检测(GlobalQuake)。请说明。
    • ESTADO fuente=X CAIDA → 告知用户该源无响应,监测可能无法检测到地震。如果是 RECUPERADA,用一行通知已恢复。
  4. 监视器在 30 分钟后过期:当收到过期通知时,重新启动它,使用相同的命令且无需询问,除非用户要求停止。脚本会记住已通知的事件(~/.cache/claude-skill-sismos/estado.json),因此重新启动时不会重复通知。
  5. 如果用户要求停止,请使用 TaskStop 停止监视器。

要测试通知功能而无需等待真实地震: python3 SKILL_DIR/scripts/sismos.py prueba 会以相同格式打印一个模拟地震。

GlobalQuake(秒级检测)

GlobalQuake 的开源代码已从 1.0.0 版本开始停止维护(在 globalquake.net 上作为专有项目继续)。GlobalQuake Server 0.11 提供 FDSNWS-event API,默认关闭:

  1. 在其设置中:autoStartFDSNWSEventServer=true(端口 FDSNWSEventPort,默认 8080)。
  2. 导出 SISMOS_GQ_URL=http://localhost:8080(或传递 --gq-url)。监视器每 5 秒查询一次,并继续同时查询 USGS/EMSC。其地震显示为 fuentes=globalquake SIN_CONFIRMAR,直到某个目录确认它们。GlobalQuake 是实验性的:通知时请说明。

替代方案:此仓库的后端 sismo-rt/(EMSC 实时 WebSocket + GlobalQuake),使用 SISMOS_RT_URL=http://localhost:8000(或 --rt-url)。监视器监听其 SSE 流,如果断开,则仅回退到查询 USGS/EMSC。详细信息请参阅 sismo-rt/docs/GLOBALQUAKE.md。

所需网络

主机:earthquake.usgs.gov 和 www.seismicportal.eu(以及如果使用的 GlobalQuake 或 sismo-rt 主机)。如果两者都因 403 错误或云会话中的隧道错误而失败,则环境网络策略正在阻止它们。告知用户,并建议在环境配置中允许它们,或从其计算机上的 Claude Code 使用该技能。

相关技能