SeaLegs 海事预测:AI 驱动的海洋天气 - Openclaw 技能

作者:互联网

2026-03-27

AI教程

什么是 SeaLegs 海事预测?

此技能利用 SeaLegs AI API 直接向您的 AI 智能体提供精确的海事天气洞察。与标准天气应用不同,它针对帆船、游艇和摩托艇等特定船型提供具备语境感知的“出发 (GO)”、“警告 (CAUTION)”和“禁止出发 (NO-GO)”安全等级。通过将其集成到您的 Openclaw 技能库中,您可以通过对风力、波浪和能见度的深度分析来自动化行程规划。

AI 分析不仅限于原始数据,它综合了波浪周期、阵风强度和降水等因素,提供自然语言总结。这确保了用户收到的是可操作的安全建议,而非仅仅是指标列表,使其成为海事开发者的必备工具。

下载入口:https://github.com/openclaw/skills/tree/main/skills/sealegs-ai-coder/sealegs-marine-forecast

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install sealegs-marine-forecast

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 sealegs-marine-forecast。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

SeaLegs 海事预测 应用场景

  • 根据船只长度确定近海航行旅行的安全出发窗口。
  • 为码头管理人或租赁船运营商自动化天气警报。
  • 将实时波浪和风力数据集成到海事导航工作流中。
  • 检查全球特定坐标的安全等级(GO/CAUTION/NO-GO)。
SeaLegs 海事预测 工作原理
  1. 用户发起包含特定经纬度和行程时长的请求。
  2. 技能将数据发送至 SeaLegs AI 引擎进行处理。
  3. AI 根据提供的船只信息分析风力、波高、周期和能见度。
  4. 生成安全等级以及天气的自然语言总结。
  5. 结果通过轮询或 Webhook 状态更新返回给智能体。

SeaLegs 海事预测 配置指南

首先,从 SeaLegs 开发者门户获取 API 密钥。然后,为您的 Openclaw 技能实现配置环境。

设置环境变量:

export SEALEGS_API_KEY=sk_live_your_key_here

通过 CLI 安装技能:

clawhub install sealegs-marine-forecast

SeaLegs 海事预测 数据架构与分类体系

该技能将其输出组织成结构化格式,以便 AI 智能体轻松解析。以下是用于预报的主要数据结构:

属性 描述 类型
classification 安全状态 (GO, CAUTION, 或 NO-GO) 字符串
coordinates 预报的地理位置 对象
ai_analysis 天气趋势的自然语言总结 对象
vessel_info 用于船只特定定制的可选元数据 对象
forecast_period 数据的时间戳起始和结束时间 对象
name: sealegs-marine-forecast
description: Get AI-powered marine weather forecasts for any location worldwide
homepage: https://developer.sealegs.ai
metadata: {"openclaw": {"requires": {"env": ["SEALEGS_API_KEY"], "bins": ["curl"]}, "primaryEnv": "SEALEGS_API_KEY"}, "emoji": "?", "tags": ["weather", "marine", "forecast", "boating", "sailing", "ocean", "waves", "wind"]}

SeaLegs AI Marine Forecast API

Get AI-powered marine weather forecasts for any location worldwide. Includes wind, waves, visibility, precipitation analysis with GO/CAUTION/NO-GO safety classifications.

Features

  • SpotCast Forecasts: Get marine weather forecasts for any coordinates worldwide
  • AI Safety Analysis: GO / CAUTION / NO-GO classifications for each day
  • Vessel-Specific: Tailored recommendations based on boat type and size
  • Multi-Language: Supports English, Spanish, French, Portuguese, Italian, Japanese

Setup

1. Get an API Key

  1. Sign up at https://developer.sealegs.ai — you'll get 10 free credits to get started
  2. Generate an API key from your dashboard
  3. Need more? Add credits anytime ($10 = 200 forecast-days)

2. Configure OpenClaw

Add to your OpenClaw configuration:

{
  skills: {
    entries: {
      "sealegs-marine-forecast": {
        enabled: true,
        apiKey: "sk_live_your_key_here"
      }
    }
  }
}

Or set the environment variable:

export SEALEGS_API_KEY=sk_live_your_key_here

3. Install the Skill

clawhub install sealegs-marine-forecast

Usage Example

// Miami, FL
POST /v3/spotcast
{
  "latitude": 25.7617,
  "longitude": -80.1918,
  "start_date": "2026-02-10T00:00:00Z",
  "num_days": 2,
  "vessel_info": {"type": "sailboat", "length_ft": 35}  // optional
}

Sample response:

{
  "id": "spc_FrZdSAs6T3cxbXiPtNZvxu",
  "coordinates": {
    "latitude": 25.7617,
    "longitude": -80.1918
  },
  "forecast_period": {
    "start_date": "2026-02-10T00:00:00-05:00",
    "end_date": "2026-02-11T23:59:59-05:00",
    "num_days": "2"
  },
  "trip_duration_hours": "12",
  "metadata": {
    "location_name": "Miami Marina"
  },
  "latest_forecast": {
    "status": "completed",
    "ai_analysis": {
      "summary": "Ideal conditions both days with light winds",
      "daily_classifications": [
        {
          "date": "2026-02-10",
          "classification": "GO",
          "short_summary": "Outstanding conditions all day with light winds under 7kt and calm 1.1-1.6ft seas. Best window is morning 5:00 AM-12:00 PM with nearly calm 1-4kt northwest winds and comfortable 1.4ft seas at 11-second periods.",
          "summary": "Outstanding sailing conditions throughout Monday with exceptionally light winds and calm seas. Morning hours offer the best window with nearly calm 1-4kt northwest winds and comfortable 1.4ft seas at 11-second periods from the northeast."
        },
        {
          "date": "2026-02-11",
          "classification": "GO",
          "short_summary": "Exceptional conditions with very light winds 1-6kt and minimal 1.2-1.3ft seas all day. Best window 9:00 AM-1:00 PM offers glassy conditions with 1-3kt winds and 1.2ft seas at 11-second periods.",
          "summary": "Exceptional boating conditions on Tuesday with very light winds and minimal seas throughout the day. Morning through midday provides ideal glassy conditions with 1-3kt east-southeast winds and 1.2ft seas at 10-11 second periods from the northeast."
        }
      ]
    }
  }
}

API Endpoints

Operation Endpoint Cost
Create forecast POST /v3/spotcast 1 credit/day
Get forecast GET /v3/spotcast/{id} Free
Check status GET /v3/spotcast/{id}/status Free
Refresh forecast POST /v3/spotcast/{id}/refresh 1 credit/day
List forecasts for SpotCast GET /v3/spotcast/{id}/forecasts Free
Get specific forecast GET /v3/spotcast/{id}/forecast/{forecast_id} Free
List SpotCasts GET /v3/spotcasts Free
Get balance GET /v3/account/balance Free

Weather Factors Used

  • Wind speed, gusts, and direction
  • Wave height, period, and direction
  • Visibility and fog probability
  • Precipitation probability and intensity
  • Air and water temperature

Authentication

All requests require:

Authorization: Bearer $SEALEGS_API_KEY
Content-Type: application/json

Rate Limits

  • Standard tier: 60 requests per minute
  • Rate limit headers included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Billing

  • 1 credit per forecast-day (3-day forecast = 3 credits)
  • GET operations are free
  • Refreshes cost 1 credit per forecast-day

SpotCast Forecasts

SpotCast generates AI-powered marine weather forecasts for specific coordinates.

Create SpotCast

POST https://api.sealegs.ai/v3/spotcast

Creates a new forecast request. Processing is asynchronous (typically 30-60 seconds).

Required parameters:

  • latitude (number): -90 to 90
  • longitude (number): -180 to 180
  • start_date (string): ISO 8601 format (e.g., "2025-12-05T00:00:00Z")
  • num_days (integer): 1-5

Optional parameters:

  • webhook_url (string): HTTPS endpoint for completion notification
  • metadata (object): Custom key-value pairs for your reference
  • trip_duration_hours (integer): Trip duration in hours
  • preferences.language: en, es, fr, pt, it, ja (default: en)
  • preferences.distance_units: nm, mi, km (default: nm)
  • preferences.speed_units: kts, mph, ms (default: kts)
  • vessel_info.type: powerBoat, sailboat, pwc, yacht, catamaran
  • vessel_info.length_ft: 1-500

Example request:

curl -X POST https://api.sealegs.ai/v3/spotcast r
  -H "Authorization: Bearer $SEALEGS_API_KEY" r
  -H "Content-Type: application/json" r
  -d '{
    "latitude": 25.7617,
    "longitude": -80.1918,
    "start_date": "2025-12-05T00:00:00Z",
    "num_days": 2,
    "vessel_info": {"type": "sailboat", "length_ft": 35}
  }'

Response (202 Accepted):

{
  "id": "spc_abc123xyz",
  "forecast_id": "fcst_xyz789",
  "status": "processing",
  "created_at": "2025-12-01T10:30:00Z",
  "estimated_completion_seconds": 45,
  "credits_charged": 2,
  "credits_remaining": 98,
  "links": {
    "self": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz",
    "forecast": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecast/fcst_xyz789",
    "status": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status"
  }
}

Check SpotCast Status

GET https://api.sealegs.ai/v3/spotcast/{id}/status

Poll this endpoint until status is "completed" or "failed". Recommended poll interval: 10-15 seconds.

Status values:

  • pending: Queued for processing (no progress field)
  • processing: Currently generating forecast (includes progress)
  • completed: Ready to retrieve (includes progress at 100%)
  • failed: Error occurred

Progress stages (only present when status is processing or completed):

  • fetching_weather
  • processing_data
  • ai_analysis
  • completing
  • completed (100%)

Example request:

curl https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status r
  -H "Authorization: Bearer $SEALEGS_API_KEY"

Response (pending):

{
  "id": "spc_abc123xyz",
  "forecast_id": "fcst_xyz789",
  "status": "pending",
  "created_at": "2025-12-01T10:30:00Z"
}

Response (processing):

{
  "id": "spc_abc123xyz",
  "forecast_id": "fcst_xyz789",
  "status": "processing",
  "created_at": "2025-12-01T10:30:00Z",
  "progress": {
    "stage": "ai_analysis",
    "percentage": 75
  }
}

Response (completed):

{
  "id": "spc_abc123xyz",
  "forecast_id": "fcst_xyz789",
  "status": "completed",
  "created_at": "2025-12-01T10:30:00Z",
  "completed_at": "2025-12-01T10:30:45Z",
  "progress": {
    "stage": "completed",
    "percentage": 100
  }
}

Get SpotCast

GET https://api.sealegs.ai/v3/spotcast/{id}

Retrieves the completed forecast with AI analysis.

Example request:

curl https://api.sealegs.ai/v3/spotcast/spc_abc123xyz r
  -H "Authorization: Bearer $SEALEGS_API_KEY"

Response (200 OK):

{
  "id": "spc_abc123xyz",
  "created_at": "2025-12-01T10:30:00Z",
  "coordinates": {
    "latitude": 25.7617,
    "longitude": -80.1918
  },
  "forecast_period": {
    "start_date": "2025-12-05T00:00:00Z",
    "end_date": "2025-12-06T00:00:00Z",
    "num_days": 2
  },
  "trip_duration_hours": 12,
  "forecast_count": 1,
  "metadata": {
    "location_name": "Miami Marina"
  },
  "latest_forecast": {
    "forecast_id": "fcst_xyz789",
    "status": "completed",
    "created_at": "2025-12-01T10:30:00Z",
    "completed_at": "2025-12-01T10:30:45Z",
    "ai_analysis": {
      "summary": "Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.",
      "daily_classifications": [
        {
          "date": "2025-12-05",
          "classification": "GO",
          "summary": "Light winds 8-12kt from NE. Seas 1-2ft. Visibility excellent at 10+ nm. No precipitation expected."
        },
        {
          "date": "2025-12-06",
          "classification": "CAUTION",
          "summary": "Winds increasing to 15-20kt. Seas building to 3-4ft by afternoon. Morning departure recommended."
        }
      ]
    }
  }
}

Refresh SpotCast

POST https://api.sealegs.ai/v3/spotcast/{id}/refresh

Updates an existing forecast with the latest weather data. Costs 1 credit per forecast-day.

Optional body:

  • webhook_url (string): Override webhook for this refresh

Example request:

curl -X POST https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/refresh r
  -H "Authorization: Bearer $SEALEGS_API_KEY"

Response (202 Accepted):

{
  "id": "spc_abc123xyz",
  "forecast_id": "fcst_newxyz789",
  "status": "processing",
  "created_at": "2025-12-02T08:00:00Z",
  "links": {
    "self": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz",
    "status": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status"
  }
}

List Forecasts

GET https://api.sealegs.ai/v3/spotcast/{id}/forecasts

Lists all forecasts for a SpotCast, sorted by creation date (newest first). Each time you create or refresh a SpotCast, a new forecast is generated.

Query parameters:

  • limit (integer): Number of results to return (default: 10)

Example request:

curl "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecasts?limit=5" r
  -H "Authorization: Bearer $SEALEGS_API_KEY"

Response (200 OK):

{
  "spotcast_id": "spc_abc123xyz",
  "data": [
    {
      "forecast_id": "fcst_newxyz789",
      "status": "completed",
      "created_at": "2025-12-02T08:00:00Z",
      "completed_at": "2025-12-02T08:00:42Z"
    },
    {
      "forecast_id": "fcst_xyz789",
      "status": "completed",
      "created_at": "2025-12-01T10:30:00Z",
      "completed_at": "2025-12-01T10:30:45Z"
    }
  ],
  "has_more": false
}

Get Forecast

GET https://api.sealegs.ai/v3/spotcast/{id}/forecast/{forecast_id}

Retrieves a specific forecast with full details including AI analysis. Use this to access any forecast in a SpotCast's history, not just the latest one.

Example request:

curl "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecast/fcst_xyz789" r
  -H "Authorization: Bearer $SEALEGS_API_KEY"

Response (200 OK - Completed):

{
  "forecast_id": "fcst_xyz789",
  "spotcast_id": "spc_abc123xyz",
  "status": "completed",
  "created_at": "2025-12-01T10:30:00Z",
  "completed_at": "2025-12-01T10:30:45Z",
  "forecast_period": {
    "start_date": "2025-12-05T00:00:00Z",
    "num_days": 2
  },
  "ai_analysis": {
    "summary": "Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.",
    "daily_classifications": [
      {
        "date": "2025-12-05",
        "classification": "GO",
        "summary": "Light winds and calm seas throughout the day."
      },
      {
        "date": "2025-12-06",
        "classification": "CAUTION",
        "summary": "Improving conditions with best windows in the afternoon."
      }
    ]
  }
}

Response (200 OK - Processing):

{
  "forecast_id": "fcst_xyz789",
  "spotcast_id": "spc_abc123xyz",
  "status": "processing",
  "created_at": "2025-12-01T10:30:00Z",
  "forecast_period": {
    "start_date": "2025-12-05T00:00:00Z",
    "num_days": 2
  },
  "progress": {
    "stage": "analyzing",
    "percentage": 65
  }
}

Response (200 OK - Failed):

{
  "forecast_id": "fcst_xyz789",
  "spotcast_id": "spc_abc123xyz",
  "status": "failed",
  "created_at": "2025-12-01T10:30:00Z",
  "forecast_period": {
    "start_date": "2025-12-05T00:00:00Z",
    "num_days": 2
  },
  "error": "Processing failed"
}

List SpotCasts

GET https://api.sealegs.ai/v3/spotcasts

Retrieves all SpotCasts for your account.

Query parameters:

  • limit (integer): 1-100 results (default: 20)
  • after (string): Cursor for pagination

Example request:

curl "https://api.sealegs.ai/v3/spotcasts?limit=10" r
  -H "Authorization: Bearer $SEALEGS_API_KEY"

Response (200 OK):

{
  "data": [
    {
      "id": "spc_abc123xyz",
      "created_at": "2025-12-01T10:30:00Z",
      "coordinates": {
        "latitude": 25.7617,
        "longitude": -80.1918
      },
      "start_date": "2025-12-05T00:00:00-05:00",
      "end_date": "2025-12-06T23:59:59-05:00",
      "num_days": 2,
      "latest_forecast": {
        "forecast_id": "fcst_xyz789",
        "status": "completed"
      }
    }
  ],
  "has_more": true,
  "next_cursor": "spc_def456"
}

Account

Get Balance

GET https://api.sealegs.ai/v3/account/balance

Returns your current credit balance and usage.

Example request:

curl https://api.sealegs.ai/v3/account/balance r
  -H "Authorization: Bearer $SEALEGS_API_KEY"

Response (200 OK):

{
  "credit_balance": 100,
  "total_credits_purchased": 200,
  "total_credits_used": 100,
  "purchase_url": "https://developers.sealegs.ai/dashboard/billing"
}

Webhooks

When you provide a webhook_url during SpotCast creation or refresh, SeaLegs sends a POST request to that URL when processing completes or fails.

Webhook Headers

Content-Type: application/json
X-SeaLegs-Event: spotcast.forecast.completed
X-SeaLegs-Signature: sha256=abc123...
X-SeaLegs-Delivery-ID: whk_abc123xyz
X-SeaLegs-Timestamp: 1733045400
User-Agent: SeaLegs-Webhooks/1.0

Verifying Signatures

Every webhook includes an HMAC-SHA256 signature in the X-SeaLegs-Signature header. Your webhook secret is available in the Developer Dashboard. Always verify the signature before processing the payload.

Python:

import hmac
import hashlib

def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()
    return hmac.compare_digest(f"sha256={expected}", signature)

JavaScript:

const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
  const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(`sha256=${expected}`),
    Buffer.from(signature)
  );
}

Completed Event

{
  "event": "spotcast.forecast.completed",
  "created_at": "2025-12-01T10:30:45Z",
  "data": {
    "spotcast_id": "spc_abc123xyz",
    "forecast_id": "fcst_xyz789",
    "status": "completed",
    "summary": "Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.",
    "metadata": {
      "trip_name": "Weekend Fishing Trip"
    }
  }
}

The summary field is included when AI analysis completes successfully. The metadata object is included when you provided metadata in the original POST /v3/spotcast request, echoed back exactly as sent.

Failed Event

{
  "event": "spotcast.forecast.failed",
  "created_at": "2025-12-01T10:31:00Z",
  "data": {
    "spotcast_id": "spc_abc123xyz",
    "forecast_id": "fcst_xyz789",
    "status": "failed",
    "error": {
      "code": "processing_failed",
      "message": "Unable to fetch weather data for the specified location"
    },
    "metadata": {
      "trip_name": "Weekend Fishing Trip"
    }
  }
}

Retry Policy

Failed deliveries are retried up to 4 times: after 5 minutes, 30 minutes, 2 hours, and 24 hours.


Understanding Results

Daily Classifications

Each forecast day receives a safety classification:

Classification Meaning
GO Safe conditions for the vessel type
CAUTION Proceed with awareness; conditions may be challenging
NO-GO Conditions not recommended for the vessel type

Classifications are adjusted based on vessel type and size when vessel_info is provided.

Weather Variables Analyzed

  • Wind: Speed (kts), gusts, direction (degrees)
  • Waves: Height (ft), period (seconds), direction, swell
  • Visibility: Distance (nm), fog probability
  • Precipitation: Probability (%), intensity
  • Temperature: Air and water (F/C)

Vessel-Specific Adjustments

When vessel_info is provided:

  • PWC/Jet Ski: Stricter wave height limits
  • Sailboats: Wind optimization recommendations
  • Large Yachts: Higher tolerance for wave conditions
  • Small Powerboats: Balanced wind/wave thresholds

Error Handling

Error Response Format

{
  "error": {
    "code": "invalid_coordinates",
    "message": "Latitude must be between -90 and 90",
    "param": "latitude"
  }
}

HTTP Status Codes

Code Meaning Action
200 Success Request completed
201 Created Resource created
202 Accepted Async processing started
400 Bad Request Check parameter values
401 Unauthorized Verify API key is correct
402 Payment Required Add credits at developer.sealegs.ai
403 Forbidden Account not verified or suspended
404 Not Found Check resource ID
429 Rate Limited Wait and retry (60 req/min limit)
500 Server Error Retry after brief delay

Error Codes

Authentication (401)

Code Description
missing_api_key No API key provided in request
invalid_api_key API key is not recognized
key_revoked API key has been revoked

Authorization (403)

Code Description
account_not_verified Developer account has not been verified
account_suspended Developer account has been suspended

Payment (402)

Code Description
insufficient_balance Not enough credits (response includes current_balance, required_credits, purchase_url)

Validation (400)

Code Description
invalid_coordinates Coordinates out of valid range
invalid_date_format Not ISO 8601 format
invalid_webhook_url Not a valid HTTPS URL
invalid_preferences Preferences format is invalid
invalid_language Language not supported (use: en, es, fr, pt, it, ja)
invalid_distance_units Distance units not supported (use: nm, mi, km)
invalid_speed_units Speed units not supported (use: kts, mph, ms)
invalid_json Request body is not valid JSON

Not Found (404)

Code Description
spotcast_not_found The specified SpotCast does not exist
forecast_not_found The specified forecast does not exist

Rate Limit (429)

Code Description
rate_limit_exceeded Too many requests (response includes retry_after seconds)

Server (500)

Code Description
internal_error An unexpected error occurred
creation_failed Failed to create SpotCast
retrieval_failed Failed to retrieve resource

Common Workflows

Get a Marine Forecast

  1. Create a SpotCast with coordinates and dates
  2. Poll the status endpoint until "completed"
  3. Retrieve the full forecast with AI analysis
  4. Present GO/CAUTION/NO-GO classification to user

Check Conditions Before a Trip

  1. Create SpotCast with trip coordinates and date
  2. Include vessel_info for tailored recommendations
  3. Check daily_classifications for each day
  4. Review AI summary for specific concerns

  • Developer Portal
  • API Documentation
  • SeaLegs App

License

MIT