SeaLegs 海事预测:AI 驱动的海洋天气 - Openclaw 技能
作者:互联网
2026-03-27
什么是 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 AI 引擎进行处理。
- AI 根据提供的船只信息分析风力、波高、周期和能见度。
- 生成安全等级以及天气的自然语言总结。
- 结果通过轮询或 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
- Sign up at https://developer.sealegs.ai — you'll get 10 free credits to get started
- Generate an API key from your dashboard
- 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 90longitude(number): -180 to 180start_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 notificationmetadata(object): Custom key-value pairs for your referencetrip_duration_hours(integer): Trip duration in hourspreferences.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, catamaranvessel_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 (noprogressfield)processing: Currently generating forecast (includesprogress)completed: Ready to retrieve (includesprogressat 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
- Create a SpotCast with coordinates and dates
- Poll the status endpoint until "completed"
- Retrieve the full forecast with AI analysis
- Present GO/CAUTION/NO-GO classification to user
Check Conditions Before a Trip
- Create SpotCast with trip coordinates and date
- Include vessel_info for tailored recommendations
- Check daily_classifications for each day
- Review AI summary for specific concerns
Links
- Developer Portal
- API Documentation
- SeaLegs App
License
MIT
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
会话成本追踪器:优化 Token 投资回报率 - Openclaw Skills
Memoria: AI 智能体结构化记忆系统 - Openclaw Skills
Deno 运行时专家:安全 TypeScript 开发 - Openclaw Skills
为 AI 代理部署 Spark Bitcoin L2 代理 - Openclaw Skills
加密货币价格技能:实时市场数据集成 - Openclaw Skills
Happenstance:专业人脉搜索与研究 - Openclaw Skills
飞书日历技能:通过 Openclaw Skills 自动化日程安排
顾问委员会:多人格 AI 加密货币分析 - Openclaw Skills
CRIF:面向 AI Agent 的加密深度研究框架 - Openclaw Skills
个人社交:社交生活与生日助手 - Openclaw Skills
AI精选
