home / skills / openclaw / skills / seoul-subway
This skill provides real-time Seoul subway arrivals, station search, route planning, and service alerts via a proxy API with no key.
npx playbooks add skill openclaw/skills --skill seoul-subwayReview the files below or copy the command above to add this skill to your agents.
---
name: seoul-subway
description: Seoul Subway assistant for real-time arrivals, route planning, and service alerts (Korean/English)
metadata: {"moltbot":{"emoji":"๐","requires":{"bins":["curl","jq"]}}}
homepage: https://github.com/dukbong/seoul-subway
user-invocable: true
---
# Seoul Subway Skill
Query real-time Seoul Subway information. **No API key required** - uses proxy server.
## Features
| Feature | Description | Trigger Example (KO) | Trigger Example (EN) |
|---------|-------------|----------------------|----------------------|
| Real-time Arrival | Train arrival times by station | "๊ฐ๋จ์ญ ๋์ฐฉ์ ๋ณด" | "Gangnam station arrivals" |
| Station Search | Line and station code lookup | "๊ฐ๋จ์ญ ๋ชํธ์ ?" | "What line is Gangnam?" |
| Route Search | Shortest path with time/fare | "์ ๋๋ฆผ์์ ์์ธ์ญ" | "Sindorim to Seoul Station" |
| Service Alerts | Delays, incidents, non-stops | "์งํ์ฒ ์ง์ฐ ์์ด?" | "Any subway delays?" |
---
## First Time Setup / ์ฒซ ์ฌ์ฉ ์๋ด
When you first use this skill, you'll see a permission prompt for the proxy domain.
์ฒ์ ์ฌ์ฉ ์ ํ๋ก์ ๋๋ฉ์ธ ์ ๊ทผ ํ์ธ ์ฐฝ์ด ๋น๋๋ค.
**Select / ์ ํ:** `Yes, and don't ask again for vercel-proxy-henna-eight.vercel.app`
This only needs to be done once. / ํ ๋ฒ๋ง ํ๋ฉด ๋ฉ๋๋ค.
---
## Proxy API Reference
All API calls go through the proxy server. No API keys needed for users.
### Base URL
```
https://vercel-proxy-henna-eight.vercel.app
```
### 1. Real-time Arrival Info
**Endpoint**
```
GET /api/realtime/{station}?start=0&end=10
```
**Parameters**
| Parameter | Required | Description |
|-----------|----------|-------------|
| station | Yes | Station name (Korean, URL-encoded) |
| start | No | Start index (default: 0) |
| end | No | End index (default: 10) |
**Response Fields**
| Field | Description |
|-------|-------------|
| `subwayId` | Line ID (1002=Line 2, 1077=Sinbundang) |
| `trainLineNm` | Direction (e.g., "์ฑ์ํ - ์ญ์ผ๋ฐฉ๋ฉด") |
| `arvlMsg2` | Arrival time (e.g., "4๋ถ 20์ด ํ") |
| `arvlMsg3` | Current location |
| `btrainSttus` | Train type (์ผ๋ฐ/๊ธํ) |
| `lstcarAt` | Last train (0=No, 1=Yes) |
**Example**
```bash
curl "https://vercel-proxy-henna-eight.vercel.app/api/realtime/๊ฐ๋จ"
```
---
### 2. Station Search
**Endpoint**
```
GET /api/stations?station={name}&start=1&end=10
```
**Parameters**
| Parameter | Required | Description |
|-----------|----------|-------------|
| station | Yes | Station name to search |
| start | No | Start index (default: 1) |
| end | No | End index (default: 10) |
**Response Fields**
| Field | Description |
|-------|-------------|
| `STATION_CD` | Station code |
| `STATION_NM` | Station name |
| `LINE_NUM` | Line name (e.g., "02ํธ์ ") |
| `FR_CODE` | External station code |
**Example**
```bash
curl "https://vercel-proxy-henna-eight.vercel.app/api/stations?station=๊ฐ๋จ"
```
---
### 3. Route Search
**Endpoint**
```
GET /api/route?dptreStnNm={departure}&arvlStnNm={arrival}
```
**Parameters**
| Parameter | Required | Description |
|-----------|----------|-------------|
| dptreStnNm | Yes | Departure station |
| arvlStnNm | Yes | Arrival station |
| searchDt | No | Datetime (yyyy-MM-dd HH:mm:ss) |
| searchType | No | duration / distance / transfer |
**Response Fields**
| Field | Description |
|-------|-------------|
| `totalDstc` | Total distance (m) |
| `totalreqHr` | Total time (seconds) |
| `totalCardCrg` | Fare (KRW) |
| `paths[].trainno` | Train number |
| `paths[].trainDptreTm` | Departure time |
| `paths[].trainArvlTm` | Arrival time |
| `paths[].trsitYn` | Transfer flag |
**Example**
```bash
curl "https://vercel-proxy-henna-eight.vercel.app/api/route?dptreStnNm=์ ๋๋ฆผ&arvlStnNm=์์ธ์ญ"
```
---
### 4. Service Alerts
**Endpoint**
```
GET /api/alerts?pageNo=1&numOfRows=10
```
**Parameters**
| Parameter | Required | Description |
|-----------|----------|-------------|
| pageNo | No | Page number (default: 1) |
| numOfRows | No | Results per page (default: 10) |
| lineNm | No | Filter by line |
**Response Fields**
| Field | Description |
|-------|-------------|
| `noftTtl` | Alert title |
| `noftCn` | Alert content |
| `noftOcrnDt` | Timestamp |
| `lineNmLst` | Affected line(s) |
| `nonstopYn` | Non-stop flag |
| `xcseSitnBgngDt` | Incident start |
| `xcseSitnEndDt` | Incident end |
**Example**
```bash
curl "https://vercel-proxy-henna-eight.vercel.app/api/alerts"
```
---
## Static Data (GitHub Raw)
For static data like station lists and line mappings, use GitHub raw URLs:
```bash
# Station list
curl "https://raw.githubusercontent.com/dukbong/seoul-subway/main/data/stations.json"
# Line ID mappings
curl "https://raw.githubusercontent.com/dukbong/seoul-subway/main/data/lines.json"
# Station name translations
curl "https://raw.githubusercontent.com/dukbong/seoul-subway/main/data/station-names.json"
```
---
## Line ID Mapping
| Line | ID | Line | ID |
|------|----|------|----|
| Line 1 | 1001 | Line 6 | 1006 |
| Line 2 | 1002 | Line 7 | 1007 |
| Line 3 | 1003 | Line 8 | 1008 |
| Line 4 | 1004 | Line 9 | 1009 |
| Line 5 | 1005 | Sinbundang | 1077 |
| Gyeongui-Jungang | 1063 | Gyeongchun | 1067 |
| Airport Railroad | 1065 | Suin-Bundang | 1075 |
---
## Station Name Mapping (English โ Korean)
์ฃผ์ ์ญ ์ด๋ฆ์ ์์ด-ํ๊ธ ๋งคํ ํ
์ด๋ธ์
๋๋ค. API ํธ์ถ ์ ์์ด ์
๋ ฅ์ ํ๊ธ๋ก ๋ณํํด์ผ ํฉ๋๋ค.
### Line 1 (1ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Seoul Station | ์์ธ์ญ | City Hall | ์์ฒญ |
| Jonggak | ์ข
๊ฐ | Jongno 3-ga | ์ข
๋ก3๊ฐ |
| Jongno 5-ga | ์ข
๋ก5๊ฐ | Dongdaemun | ๋๋๋ฌธ |
| Cheongnyangni | ์ฒญ๋๋ฆฌ | Yongsan | ์ฉ์ฐ |
| Noryangjin | ๋
ธ๋์ง | Yeongdeungpo | ์๋ฑํฌ |
| Guro | ๊ตฌ๋ก | Incheon | ์ธ์ฒ |
| Bupyeong | ๋ถํ | Suwon | ์์ |
### Line 2 (2ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Gangnam | ๊ฐ๋จ | Yeoksam | ์ญ์ผ |
| Samseong | ์ผ์ฑ | Jamsil | ์ ์ค |
| Sindorim | ์ ๋๋ฆผ | Hongdae (Hongik Univ.) | ํ๋์
๊ตฌ |
| Hapjeong | ํฉ์ | Dangsan | ๋น์ฐ |
| Yeouido | ์ฌ์๋ | Konkuk Univ. | ๊ฑด๋์
๊ตฌ |
| Seolleung | ์ ๋ฆ | Samsung | ์ผ์ฑ |
| Sports Complex | ์ข
ํฉ์ด๋์ฅ | Gangbyeon | ๊ฐ๋ณ |
| Ttukseom | ๋์ฌ | Seongsu | ์ฑ์ |
| Wangsimni | ์์ญ๋ฆฌ | Euljiro 3-ga | ์์ง๋ก3๊ฐ |
| Euljiro 1-ga | ์์ง๋ก์
๊ตฌ | City Hall | ์์ฒญ |
| Chungjeongno | ์ถฉ์ ๋ก | Ewha Womans Univ. | ์ด๋ |
| Sinchon | ์ ์ด | Sadang | ์ฌ๋น |
| Nakseongdae | ๋์ฑ๋ | Seoul Nat'l Univ. | ์์ธ๋์
๊ตฌ |
| Guro Digital Complex | ๊ตฌ๋ก๋์งํธ๋จ์ง | Mullae | ๋ฌธ๋ |
### Line 3 (3ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Gyeongbokgung | ๊ฒฝ๋ณต๊ถ | Anguk | ์๊ตญ |
| Jongno 3-ga | ์ข
๋ก3๊ฐ | Chungmuro | ์ถฉ๋ฌด๋ก |
| Dongguk Univ. | ๋๋์
๊ตฌ | Yaksu | ์ฝ์ |
| Apgujeong | ์๊ตฌ์ | Sinsa | ์ ์ฌ |
| Express Bus Terminal | ๊ณ ์ํฐ๋ฏธ๋ | Gyodae | ๊ต๋ |
| Nambu Bus Terminal | ๋จ๋ถํฐ๋ฏธ๋ | Yangjae | ์์ฌ |
| Daehwa | ๋ํ | Juyeop | ์ฃผ์ฝ |
### Line 4 (4ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Myeongdong | ๋ช
๋ | Hoehyeon | ํํ |
| Seoul Station | ์์ธ์ญ | Sookmyung Women's Univ. | ์๋์
๊ตฌ |
| Dongdaemun History & Culture Park | ๋๋๋ฌธ์ญ์ฌ๋ฌธํ๊ณต์ | Hyehwa | ํํ |
| Hansung Univ. | ํ์ฑ๋์
๊ตฌ | Mia | ๋ฏธ์ |
| Mia Sageori | ๋ฏธ์์ฌ๊ฑฐ๋ฆฌ | Gireum | ๊ธธ์ |
| Chongshin Univ. | ์ด์ ๋์
๊ตฌ | Sadang | ์ฌ๋น |
### Line 5 (5ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Gwanghwamun | ๊ดํ๋ฌธ | Jongno 3-ga | ์ข
๋ก3๊ฐ |
| Dongdaemun History & Culture Park | ๋๋๋ฌธ์ญ์ฌ๋ฌธํ๊ณต์ | Cheonggu | ์ฒญ๊ตฌ |
| Wangsimni | ์์ญ๋ฆฌ | Haengdang | ํ๋น |
| Yeouido | ์ฌ์๋ | Yeouinaru | ์ฌ์๋๋ฃจ |
| Mapo | ๋งํฌ | Gongdeok | ๊ณต๋ |
| Gimpo Airport | ๊นํฌ๊ณตํญ | Banghwa | ๋ฐฉํ |
### Line 6 (6ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Itaewon | ์ดํ์ | Samgakji | ์ผ๊ฐ์ง |
| Noksapyeong | ๋
น์ฌํ | Hangang | ํ๊ฐ์ง |
| Sangsu | ์์ | Hapjeong | ํฉ์ |
| World Cup Stadium | ์๋์ปต๊ฒฝ๊ธฐ์ฅ | Digital Media City | ๋์งํธ๋ฏธ๋์ด์ํฐ |
### Line 7 (7ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Gangnam-gu Office | ๊ฐ๋จ๊ตฌ์ฒญ | Cheongdam | ์ฒญ๋ด |
| Konkuk Univ. | ๊ฑด๋์
๊ตฌ | Children's Grand Park | ์ด๋ฆฐ์ด๋๊ณต์ |
| Junggok | ์ค๊ณก | Ttukseom Resort | ๋์ฌ์ ์์ง |
| Express Bus Terminal | ๊ณ ์ํฐ๋ฏธ๋ | Nonhyeon | ๋
ผํ |
| Hakdong | ํ๋ | Bogwang | ๋ณด๊ด |
| Jangam | ์ฅ์ | Dobongsan | ๋๋ด์ฐ |
### Line 8 (8ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Jamsil | ์ ์ค | Mongchontoseong | ๋ชฝ์ดํ ์ฑ |
| Gangdong-gu Office | ๊ฐ๋๊ตฌ์ฒญ | Cheonho | ์ฒํธ |
| Bokjeong | ๋ณต์ | Sanseong | ์ฐ์ฑ |
| Moran | ๋ชจ๋ | Amsa | ์์ฌ |
### Line 9 (9ํธ์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Sinnonhyeon | ์ ๋
ผํ | Express Bus Terminal | ๊ณ ์ํฐ๋ฏธ๋ |
| Dongjak | ๋์ | Noryangjin | ๋
ธ๋์ง |
| Yeouido | ์ฌ์๋ | National Assembly | ๊ตญํ์์ฌ๋น |
| Dangsan | ๋น์ฐ | Yeomchang | ์ผ์ฐฝ |
| Gimpo Airport | ๊นํฌ๊ณตํญ | Gaehwa | ๊ฐํ |
| Olympic Park | ์ฌ๋ฆผํฝ๊ณต์ | Sports Complex | ์ข
ํฉ์ด๋์ฅ |
### Sinbundang Line (์ ๋ถ๋น์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Gangnam | ๊ฐ๋จ | Sinsa | ์ ์ฌ |
| Yangjae | ์์ฌ | Yangjae Citizen's Forest | ์์ฌ์๋ฏผ์์ฒ |
| Pangyo | ํ๊ต | Jeongja | ์ ์ |
| Dongcheon | ๋์ฒ | Suji District Office | ์์ง๊ตฌ์ฒญ |
| Gwanggyo | ๊ด๊ต | Gwanggyo Jungang | ๊ด๊ต์ค์ |
### Gyeongui-Jungang Line (๊ฒฝ์์ค์์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Seoul Station | ์์ธ์ญ | Hongdae (Hongik Univ.) | ํ๋์
๊ตฌ |
| Gongdeok | ๊ณต๋ | Hyochang Park | ํจ์ฐฝ๊ณต์์ |
| Yongsan | ์ฉ์ฐ | Oksu | ์ฅ์ |
| Wangsimni | ์์ญ๋ฆฌ | Cheongnyangni | ์ฒญ๋๋ฆฌ |
| DMC | ๋์งํธ๋ฏธ๋์ด์ํฐ | Susaek | ์์ |
| Ilsan | ์ผ์ฐ | Paju | ํ์ฃผ |
### Airport Railroad (๊ณตํญ์ฒ ๋)
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Seoul Station | ์์ธ์ญ | Gongdeok | ๊ณต๋ |
| Hongdae (Hongik Univ.) | ํ๋์
๊ตฌ | Digital Media City | ๋์งํธ๋ฏธ๋์ด์ํฐ |
| Gimpo Airport | ๊นํฌ๊ณตํญ | Incheon Airport T1 | ์ธ์ฒ๊ณตํญ1ํฐ๋ฏธ๋ |
| Incheon Airport T2 | ์ธ์ฒ๊ณตํญ2ํฐ๋ฏธ๋ | Cheongna Int'l City | ์ฒญ๋ผ๊ตญ์ ๋์ |
### Suin-Bundang Line (์์ธ๋ถ๋น์ )
| English | Korean | English | Korean |
|---------|--------|---------|--------|
| Wangsimni | ์์ญ๋ฆฌ | Seolleung | ์ ๋ฆ |
| Gangnam-gu Office | ๊ฐ๋จ๊ตฌ์ฒญ | Seonjeongneung | ์ ์ ๋ฆ |
| Jeongja | ์ ์ | Migeum | ๋ฏธ๊ธ |
| Ori | ์ค๋ฆฌ | Jukjeon | ์ฃฝ์ |
| Suwon | ์์ | Incheon | ์ธ์ฒ |
---
## Usage Examples
**Real-time Arrival**
```bash
curl "https://vercel-proxy-henna-eight.vercel.app/api/realtime/๊ฐ๋จ"
```
**Station Search**
```bash
curl "https://vercel-proxy-henna-eight.vercel.app/api/stations?station=๊ฐ๋จ"
```
**Route Search**
```bash
curl "https://vercel-proxy-henna-eight.vercel.app/api/route?dptreStnNm=์ ๋๋ฆผ&arvlStnNm=์์ธ์ญ"
```
**Service Alerts**
```bash
curl "https://vercel-proxy-henna-eight.vercel.app/api/alerts"
```
---
## Output Format Guide
### Real-time Arrival
**Korean:**
```
[๊ฐ๋จ์ญ ๋์ฐฉ ์ ๋ณด]
| ํธ์ | ๋ฐฉํฅ | ๋์ฐฉ | ์์น | ์ ํ |
|------|------|------|------|------|
| 2ํธ์ | ์ฑ์ํ | 3๋ถ | ์ญ์ผ | ์ผ๋ฐ |
```
**English:**
```
[Gangnam Station Arrivals]
| Line | Direction | Arrival | Location | Type |
|------|-----------|---------|----------|------|
| Line 2 | Seongsu-bound | 3 min | Yeoksam | Regular |
```
### Station Search
**Korean:**
```
[๊ฐ๋จ์ญ]
| ํธ์ | ์ญ์ฝ๋ | ์ธ๋ถ์ฝ๋ |
|------|--------|----------|
| 2ํธ์ | 222 | 0222 |
```
**English:**
```
[Gangnam Station]
| Line | Station Code | External Code |
|------|--------------|---------------|
| Line 2 | 222 | 0222 |
```
### Route Search
**Korean:**
```
[๊ฐ๋จ -> ํ๋์
๊ตฌ]
์์์๊ฐ: 38๋ถ | ๊ฑฐ๋ฆฌ: 22.1 km | ์๊ธ: 1,650์ | ํ์น: 1ํ
1. 09:03 ๊ฐ๋จ ์ถ๋ฐ (2ํธ์ ์ฑ์๋ฐฉ๋ฉด)
2. 09:18 ์ ๋๋ฆผ ํ์น (2ํธ์ -> 1ํธ์ )
3. 09:42 ํ๋์
๊ตฌ ๋์ฐฉ
```
**English:**
```
[Gangnam -> Hongdae]
Time: 38 min | Distance: 22.1 km | Fare: 1,650 KRW | Transfers: 1
1. 09:03 Depart Gangnam (Line 2 towards Seongsu)
2. 09:18 Transfer at Sindorim (Line 2 -> Line 1)
3. 09:42 Arrive Hongdae
```
### Service Alerts
**Korean:**
```
[์ดํ ์๋ฆผ]
[1ํธ์ ] ์ข
๋ก3๊ฐ์ญ ๋ฌด์ ์ฐจ (15:00 ~ 15:22)
- ์ฝ๋ ์ผ ์ด์ฐจ ์ฐ๊ธฐ ๋ฐ์์ผ๋ก ์ธํจ
[2ํธ์ ] ์ ์ ์ดํ
```
**English:**
```
[Service Alerts]
[Line 1] Jongno 3-ga Non-stop (15:00 ~ 15:22)
- Due to smoke from Korail train
[Line 2] Normal operation
```
### Error
**Korean:**
```
์ค๋ฅ: ์ญ์ ์ฐพ์ ์ ์์ต๋๋ค.
"๊ฐ๋จ" (์ญ ์ด๋ฆ๋ง)์ผ๋ก ๊ฒ์ํด ๋ณด์ธ์.
```
**English:**
```
Error: Station not found.
Try searching with "Gangnam" (station name only).
```
This skill provides real-time Seoul Subway information, route planning, station lookup and service alerts in Korean and English. It uses a proxy API so no user API key is required and supports station name translation for English queries. Quick, practical outputs include arrivals, shortest routes with time/fare, and active incident notices.
Requests go through a proxy server that exposes endpoints for realtime arrivals, station search, route planning and alerts. The skill converts English station names to Korean when needed, calls the proxy endpoints, and formats responses into concise arrival lists, route steps with times and fares, or alert summaries. Static data (station lists and line mappings) is available via GitHub raw files for translations and line IDs.
Do I need an API key?
No. The skill uses a proxy server so users do not need an API key.
Can I query in English?
Yes. English station names are converted to Korean using included mappings before calling the API.