Query Naver Cloud Maps APIs for route navigation. Smart routing: Directions5 by default, auto-switches to Directions15 for 5+ waypoints.
When a user requests a route calculation with addresses or coordinates, use this skill to calculate driving time, distance, and cost.
Usage:
/skill ncloud-maps <start> <goal> [waypoints]longitude,latitude format OR addresses (convert using goplaces/naver-local-search first)Examples:
/skill ncloud-maps "126.9633,37.5524" "127.0165,37.4889" (coordinates)/skill ncloud-maps 아현역 서초역 (addresses - requires geocoding skill first)Query Naver Cloud Maps APIs for intelligent routing (Directions5 + Directions15).
v1.0.8+ — By default, the skill uses Directions5 for queries with fewer than 5 waypoints, and automatically switches to when you have 5 or more waypoints. No manual selection needed.
| Waypoints | API Used | Max Waypoints |
|---|---|---|
| 0–4 | Directions5 | 5 |
| 5+ | Directions15 | 15 |
Get API credentials from Naver Cloud Console:
Client ID (API Key ID) and Client Secret (API Key)Set environment variables (or use .env file):
export NCLOUD_API_KEY_ID="your-api-key-id"
export NCLOUD_API_KEY="your-api-key-secret"
Or create a .env file:
NCLOUD_API_KEY_ID=your-api-key-id
NCLOUD_API_KEY=your-api-key-secret
cd ~/.openclaw/workspace/skills/ncloud-maps
npm install
ncloud-maps requires coordinates in longitude,latitude format. If you have address-based location data, use one of these compatible skills to convert addresses to coordinates:
Available Options (choose based on your environment):
| Skill | Provider | Coordinates | Setup Required |
|---|---|---|---|
goplaces | Google Places API | Yes (lon,lat) | GOOGLE_PLACES_API_KEY |
naver-local-search | Naver Local Search | Yes (lon,lat) | NAVER_CLIENT_ID, NAVER_CLIENT_SECRET |
| Custom API | Your choice | Yes (lon,lat) | Your setup |
Example workflow with goplaces:
# Get coordinates from address
COORDS=$(goplaces resolve "강남역, 서울" --json | jq -r '.places[0] | "\(.location.longitude),\(.location.latitude)"')
# Use coordinates with ncloud-maps
npx ts-node scripts/index.ts --start "$COORDS" --goal "127.0049,37.4947"
Example workflow with naver-local-search:
# Get coordinates from address
COORDS=$(naver-local-search search "강남역" --format json | jq -r '.[0] | "\(.x),\(.y)"')
# Use coordinates with ncloud-maps
npx ts-node scripts/index.ts --start "$COORDS" --goal "127.0049,37.4947"
Or integrate any other geocoding service that returns longitude,latitude coordinates.
By default, no --api flag needed. The skill automatically:
Provide coordinates in longitude,latitude format:
# 0–4 waypoints → Directions5 (automatic)
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087" \
--waypoints "127.0100,37.5000|127.0200,37.5100"
# 5+ waypoints → Directions15 (automatic)
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087" \
--waypoints "127.0100,37.5000|127.0200,37.5100|127.0300,37.5200|127.0400,37.5300|127.0500,37.5400"
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087"
If you need to override the smart routing:
# Force Directions5 (max 5 waypoints)
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087" \
--api directions5 \
--waypoints "127.0100,37.5000|127.0200,37.5100"
# Force Directions15 (max 15 waypoints)
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087" \
--api directions15 \
--waypoints "127.0100,37.5000|127.0200,37.5100|127.0300,37.5200|127.0400,37.5300|127.0500,37.5400"
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087" \
--waypoints "127.0100,37.5000"
Multiple waypoints:
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087" \
--waypoints "127.0100,37.5000|127.0200,37.5100"
Choose from: trafast (fast), tracomfort (comfort), traoptimal (default), traavoidtoll (toll-free), traavoidcaronly (avoid car-only roads)
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087" \
--option "traavoidtoll"
npx ts-node scripts/index.ts \
--start "127.0683,37.4979" \
--goal "126.9034,37.5087" \
--cartype 2 \
--fueltype "diesel" \
--mileage 10.5
Vehicle types:
1 (default): Small sedan2: Medium van/cargo3: Large vehicle4: 3-axle cargo truck5: 4+ axle special cargo6: Compact carFuel types: gasoline (default), highgradegasoline, diesel, lpg
{
"success": true,
"start": "127.0683,37.4979",
"goal": "126.9034,37.5087",
"distance": 12850,
"duration": 1145000,
"toll_fare": 0,
"taxi_fare": 18600,
"fuel_price": 1550,
"departure_time": "2026-02-21T14:10:00"
}
success - Whether the query succeededstart - Starting point coordinatesgoal - Destination coordinatesdistance - Total distance in metersduration - Total duration in milliseconds (÷1000 = seconds)toll_fare - Toll/highway fare in KRWtaxi_fare - Estimated taxi fare in KRWfuel_price - Estimated fuel cost in KRWdeparture_time - Query timestamperror - Error message (if success=false)Address Resolution (Optional - any geocoding skill)
longitude,latitude format from the resultCoordinate Validation
longitude,latitude format (direct input or from geocoding skill)Route Calculation (Directions15 or Directions5)
Waypoints Support
longitude,latitude format⚠️ This skill only calculates vehicle (car) routes. It does not support:
For those use cases, use transit-specific APIs (e.g., Kakao Map, Naver Map Transit API).
Required:
NCLOUD_API_KEY_ID - Naver Cloud API Key IDNCLOUD_API_KEY - Naver Cloud API Key SecretSmart Routing:
General:
Common errors:
좌표 형식 오류 - Invalid coordinate format (use longitude,latitude)Authentication Failed - Invalid API credentialsQuota Exceeded - API rate limit hitNo routes found - No valid route between pointsCheck Naver Cloud Console for:
See api-spec.md for detailed API specifications.