<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>교외선 무궁화호 시간표 &#8211; 기차 타는 사람들</title>
	<atom:link href="https://krailroad.co.kr/tag/%ea%b5%90%ec%99%b8%ec%84%a0-%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8-%ec%8b%9c%ea%b0%84%ed%91%9c/feed/" rel="self" type="application/rss+xml" />
	<link>https://krailroad.co.kr</link>
	<description>레일 위에서 만나는 세상, 가장 빠르고 정확한 기차여행 정보와 팁</description>
	<lastBuildDate>Thu, 23 Apr 2026 01:11:28 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://krailroad.co.kr/wp-content/uploads/2025/10/cropped-기차-타는-사람들-32x32.png</url>
	<title>교외선 무궁화호 시간표 &#8211; 기차 타는 사람들</title>
	<link>https://krailroad.co.kr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>교외선 무궁화호 시간표 와 요금 (대곡역~의정부역) 정차역 안내</title>
		<link>https://krailroad.co.kr/%ea%b5%90%ec%99%b8%ec%84%a0-%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8-%ec%8b%9c%ea%b0%84%ed%91%9c-%ec%99%80-%ec%9a%94%ea%b8%88-%eb%8c%80%ea%b3%a1%ec%97%ad%ec%9d%98%ec%a0%95%eb%b6%80%ec%97%ad-%ec%a0%95/</link>
		
		<dc:creator><![CDATA[운영자]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 02:23:28 +0000</pubDate>
				<category><![CDATA[실시간 열차 시간표]]></category>
		<category><![CDATA[누리로 시간표]]></category>
		<category><![CDATA[무궁화 시간표]]></category>
		<category><![CDATA[교외선 무궁화호 시간표]]></category>
		<guid isPermaLink="false">https://krailroad.co.kr/?p=20698</guid>

					<description><![CDATA[오랜 시간 멈춰있던 철길이 다시 숨을 쉬기 시작한 교외선은 수도권 북부의 대곡역과 의정부역을 잇는 독특한 노선으로, 과거의 향수와 현대의 실용성이 공존하는 구간입니다. 20여 년의 공백을 깨고 다시 달리는 교외선 무궁화호 시간표는 단순히 역과 역을 잇는 것을 넘어, 고양, 양주, 의정부를 직선으로 연결하며 경기 북부 지역민들의 이동 편의를 획기적으로 개선하고 있는데요. 화려한 고속열차는 아니지만, 북한산 자락의 ... <a title="교외선 무궁화호 시간표 와 요금 (대곡역~의정부역) 정차역 안내" class="read-more button" href="https://krailroad.co.kr/%ea%b5%90%ec%99%b8%ec%84%a0-%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8-%ec%8b%9c%ea%b0%84%ed%91%9c-%ec%99%80-%ec%9a%94%ea%b8%88-%eb%8c%80%ea%b3%a1%ec%97%ad%ec%9d%98%ec%a0%95%eb%b6%80%ec%97%ad-%ec%a0%95/" aria-label="교외선 무궁화호 시간표 와 요금 (대곡역~의정부역) 정차역 안내 전체 읽기">자세히 보기</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">오랜 시간 멈춰있던 철길이 다시 숨을 쉬기 시작한 교외선은 수도권 북부의 대곡역과 의정부역을 잇는 독특한 노선으로, 과거의 향수와 현대의 실용성이 공존하는 구간입니다. 20여 년의 공백을 깨고 다시 달리는 교외선 무궁화호 시간표는 단순히 역과 역을 잇는 것을 넘어, 고양, 양주, 의정부를 직선으로 연결하며 경기 북부 지역민들의 이동 편의를 획기적으로 개선하고 있는데요. 화려한 고속열차는 아니지만, 북한산 자락의 수려한 능선을 따라 창밖으로 펼쳐지는 계절의 변화를 가장 담백하게 즐길 수 있는 이 철길은 복잡한 도심 속에서 찾을 수 있는 여유로운 노선입니다.</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading"><strong>교외선 무궁화호 시간표 안내</strong></h2>



<h3 class="wp-block-heading">교외선 운행 계통과 목적지 확인</h3>



<p class="wp-block-paragraph">교외선 무궁화호 시간표를 이용할 때 가장 먼저 파악해야 할 점은 기존 노선들과는 다른 독립적인 운행 방식입니다. 수도권 외곽을 반원 형태로 감싸며 도는 특성상, 본인의 출발지와 최종 목적지에 맞는 환승 거점을 확인하는 것이 중요한데요.</p>



<p class="wp-block-paragraph">1️⃣ <strong>열차 이용</strong>: 현재 교외선은 무궁화호 등급 위주로 편성되어 있으며, 조금 더 넓은 광역 철도망 정보가 필요하다면 <a href="https://krailroad.co.kr/realtime-subway-timetable/">수도권 전철</a> 및 ITX 시간표를 통해 연계 노선을 확인하실 수 있습니다.</p>



<p class="wp-block-paragraph">2️⃣ <strong>대곡 ↔ 의정부</strong>: 경기 서북부와 동북부를 가로지르는 주력 구간으로, 경의중앙선이나 서해선, 1호선 등으로 갈아타기 편리한 역들을 경유합니다.</p>



<p class="wp-block-paragraph"><strong>주요 정거장 안내</strong>: 원릉, 일영, 장흥, 송추 등 과거 여행객들의 사랑을 받던 정거장들이 다시 문을 열었으며, 각 역마다 주변 관광지나 군 부대 면회객들의 수요가 집중되는 특색이 있습니다.</p>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">실시간 데이터 파악과 서비스</h3>



<p class="wp-block-paragraph">교외선 무궁화호 시간표를 확인하는 단계를 넘어, 개발한 로직은 역에 발을 들이는 순간부터 최종 목적지에 닿을 때까지의 모든 동선을 <a href="https://www.korail.com/ticket/main" target="_blank" rel="noopener">코레일</a> 데이터와 60초마다 자동 갱신되는 공공 API 로직을 통해 대곡역이나 의정부역 등 주요 역의 열차 위치를 분 단위로 추적함은 물론, 역사 주변 주차장의 공간과 시내로 향하는 버스의 도착 예보까지 하나의 화면에 통합했는데요. 특히 정보 확인에 제약이 있는 분들을 위해 도입된 음성 알림 기능을 활용하면, 열차 진입 15분 전부터 자동으로 신호를 보내주어 대기 공간에서 다른 용무를 보다가도 승강장으로 이동할 타이밍을 정확히 파악할 수 있습니다.</p>



<p class="wp-block-paragraph">또한 현재 기상 상황과 연동된 주변 식당가 정보는 날씨에 따른 최적의 동선을 제안하며, 낯선 역에 내렸을 때 마주하게 되는 막막함을 기술이 주는 확신으로 바꿔주는데요. 정교하게 구축된 검색 기능을 이정표 삼아, 불필요한 대기 시간 없이 경기 북부 철길 위에서 차질 없는 일정을 준비할 수 있습니다.</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">대곡 ↔&nbsp;의정부 첫차 &amp; 막차</h2>


<style>
        .ktx-sum-container { margin: 15px 0; font-family: -apple-system, BlinkMacSystemFont, "Malgun Gothic", sans-serif; }
        .ktx-sum-table { width:100%; border-collapse:collapse; background:#fff; border:1px solid #ddd; table-layout: fixed; }
        .ktx-date-info { text-align: right; font-size: 12px; color: #777; margin-bottom: 5px; font-weight: 500; }
        .ktx-sum-table th { background:#f1f3f5; color:#333; font-size:16px; font-weight:800; padding:12px 4px; border-bottom:2px solid #dee2e6; }
        .ktx-sum-table td { padding:14px 4px; border-bottom:1px solid #eee; text-align:center; vertical-align:middle; }
        .route-info { background:#fcfcfc; font-weight:400; color:#000; font-size:15px; border-right:1px solid #ddd; line-height:1.3; }
        .type-label { display:inline-block; padding:3px 8px; border-radius:4px; font-size:12px; font-weight:700; color:#fff; margin-bottom:4px; }
        .type-ktx { background:#1e40af; } 
        .type-itx { background:#be123c; } 
        .type-mu { background:#047857; }
        .type-default { background:#52525b; }
        .time-display { font-size:18px; font-weight:800; color:#000; letter-spacing:-0.5px; line-height:1; }
        .train-detail { display:block; font-size:12px; color:#444; font-weight:600; margin-bottom:3px; }
        .arrival-info { font-size:12px; color:#555; font-weight:500; margin-top:3px; }
        @media (max-width: 380px) {
            .time-display { font-size: 16px; }
            .route-info { font-size: 13px; }
            .ktx-sum-table th { font-size: 13px; }
            .train-detail, .arrival-info { font-size: 11px; }
        }
    </style><p class="ktx-date-info" style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 05월 24일</p><div class="ktx-sum-container"><table class="ktx-sum-table"><thead><tr><th style="width:22%;">구간</th><th style="width:23%;">종별</th><th>첫차</th><th>막차</th></tr></thead><tbody><tr><td class="route-info" rowspan="1" style="border-top:1px solid #ddd;">의정부<br>↓<br>대곡</td><td><span class="type-label type-mu">무궁화</span></td><td><span class="train-detail">2602호</span><div class="time-display">06:55</div><div class="arrival-info">07:49 도착</div></td><td><span class="train-detail">2620호</span><div class="time-display">21:12</div><div class="arrival-info">22:06 도착</div></td></tr></tbody></table></div>


<style>
        .ktx-sum-container { margin: 15px 0; font-family: -apple-system, BlinkMacSystemFont, "Malgun Gothic", sans-serif; }
        .ktx-sum-table { width:100%; border-collapse:collapse; background:#fff; border:1px solid #ddd; table-layout: fixed; }
        .ktx-date-info { text-align: right; font-size: 12px; color: #777; margin-bottom: 5px; font-weight: 500; }
        .ktx-sum-table th { background:#f1f3f5; color:#333; font-size:16px; font-weight:800; padding:12px 4px; border-bottom:2px solid #dee2e6; }
        .ktx-sum-table td { padding:14px 4px; border-bottom:1px solid #eee; text-align:center; vertical-align:middle; }
        .route-info { background:#fcfcfc; font-weight:400; color:#000; font-size:15px; border-right:1px solid #ddd; line-height:1.3; }
        .type-label { display:inline-block; padding:3px 8px; border-radius:4px; font-size:12px; font-weight:700; color:#fff; margin-bottom:4px; }
        .type-ktx { background:#1e40af; } 
        .type-itx { background:#be123c; } 
        .type-mu { background:#047857; }
        .type-default { background:#52525b; }
        .time-display { font-size:18px; font-weight:800; color:#000; letter-spacing:-0.5px; line-height:1; }
        .train-detail { display:block; font-size:12px; color:#444; font-weight:600; margin-bottom:3px; }
        .arrival-info { font-size:12px; color:#555; font-weight:500; margin-top:3px; }
        @media (max-width: 380px) {
            .time-display { font-size: 16px; }
            .route-info { font-size: 13px; }
            .ktx-sum-table th { font-size: 13px; }
            .train-detail, .arrival-info { font-size: 11px; }
        }
    </style><p class="ktx-date-info" style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 05월 24일</p><div class="ktx-sum-container"><table class="ktx-sum-table"><thead><tr><th style="width:22%;">구간</th><th style="width:23%;">종별</th><th>첫차</th><th>막차</th></tr></thead><tbody><tr><td class="route-info" rowspan="1" style="border-top:1px solid #ddd;">대곡<br>↓<br>의정부</td><td><span class="type-label type-mu">무궁화</span></td><td><span class="train-detail">2601호</span><div class="time-display">07:02</div><div class="arrival-info">07:56 도착</div></td><td><span class="train-detail">2619호</span><div class="time-display">21:19</div><div class="arrival-info">22:13 도착</div></td></tr></tbody></table></div>


    
    <h2>대곡 ↔ 의정부 운임 요금표</h2>

    <div id="ktx-app-fl" style="margin-bottom: 40px;">
        <style>
            #ktx-app-fl { margin: 20px auto; max-width: 600px; background: #fff; border-radius: 12px; font-family: -apple-system, sans-serif; border: 1px solid #e2e8f0; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.06); }
            .fl-main-table { width: 100%; border-collapse: collapse; table-layout: fixed; border: none; }
            .fl-main-table th { font-size: 13px; color: #64748b; padding: 12px 2px; background: #f8fafc; border-bottom: 1px solid #e2e8f0; text-align: center; font-weight: bold; }
            .fl-main-table td { padding: 15px 4px; border-bottom: 1px solid #f1f5f9; text-align: center; vertical-align: middle; }
            
            .u-no-top { font-size: 11px; color: #94a3b8; display: block; font-weight: 500; margin-bottom: 1px; }
            .u-grade-bottom { font-size: 16px; font-weight: 900; color: #0045e6; display: block; line-height: 1.2; }
            .t-via { font-size: 12px; color: #64748b; display: block; margin-top: 4px; font-weight: 500; }
            
            .t-price { font-weight: 700; font-size: 14px; color: #1e293b; }
            .t-premium { color: #059669; }
            .t-special { color: #e11d48; }
            
            .t-none { display: inline-block; padding: 3px 10px; background: #f8fafc; color: #cbd5e1; border: 1px solid #f1f5f9; border-radius: 6px; font-size: 11px; font-weight: 600; }

            @media (max-width: 600px) {
                .fl-main-table th { font-size: 12px; }
                .u-grade-bottom { font-size: 14px; }
                .t-price { font-size: 12px; }
            }
        </style>

        <div style="overflow-x: auto;">
            <table class="fl-main-table">
                <thead>
                    <tr>
                        <th style="width: 30%;">열차 / 경유지</th>
                        <th style="width: 23%;">일반실</th>
                        <th style="width: 23%;">우등실</th>
                        <th style="width: 24%;">특실</th>
                    </tr>
                </thead>
                <tbody>
                                        <tr>
                        <td>
                            <span class="u-no-top">대곡 ↔ 의정부</span>
                            <span class="u-grade-bottom">무궁화</span>
                                                    </td>
                        <td>
                            <span class="t-price">
                                2,600원                            </span>
                        </td>
                        <td>
                            <span class="t-price t-premium">
                                <span class='t-none'>해당없음</span>                            </span>
                        </td>
                        <td>
                            <span class="t-price t-special">
                                <span class='t-none'>해당없음</span>                            </span>
                        </td>
                    </tr>
                                    </tbody>
            </table>
        </div>
    </div>
    



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">대곡 →&nbsp;의정부 무궁화호 시간표</h2>



<p class="tip-box wp-block-paragraph">👉 <mark style="background-color:rgba(0, 0, 0, 0);color:#007bff" class="has-inline-color"><strong>좌우로 밀면 전체 표를 볼 수 있습니다.!</strong></mark><br> ❗ 빈칸은 열차가 정차하지 않는 역입니다.</p>


<style>
            .ktx-schedule-wrapper { overflow-x: auto; position: relative; }
            .ktx-schedule-table { width: 100%; border-collapse: collapse; border-spacing: 0; border-top: 2px solid #000; border-bottom: 2px solid #000; box-shadow: 0px 0px 15px rgba(0,0,0,0.1); }
            .ktx-schedule-table th, .ktx-schedule-table td { border: 1px solid #ccc; padding: 8px 5px; text-align: center; white-space: nowrap; background-color: #fff; }
            .ktx-schedule-table th { background-color: #f2f2f2; font-weight: bold; }
            .ktx-schedule-table thead tr th { position: sticky; top: 0; z-index: 10; background-color: #f2f2f2; }
            .ktx-schedule-table td:nth-child(3) { position: sticky; left: 0; z-index: 5; background-color: #fff; border-right: 1px solid #ddd; }
            .ktx-schedule-table th:nth-child(3) { position: sticky; top: 0; left: 0; z-index: 20; background-color: #f2f2f2; border-right: 1px solid #ddd; }
            .scrolled-highlight { background-color: #e6f2ff !important; }
        </style>
            <script>
                document.addEventListener("DOMContentLoaded", function() {
                    const wrappers = document.querySelectorAll(".ktx-schedule-wrapper");
                    wrappers.forEach(wrapper => {
                        wrapper.addEventListener("scroll", function() {
                            const cells = wrapper.querySelectorAll(".ktx-schedule-table th:nth-child(3), .ktx-schedule-table td:nth-child(3)");
                            if (wrapper.scrollLeft > 10) {
                                cells.forEach(cell => { cell.classList.add("scrolled-highlight"); });
                            } else {
                                cells.forEach(cell => { cell.classList.remove("scrolled-highlight"); });
                            }
                        });
                    });
                });
            </script>
        <p style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 05월 24일</p><div class="ktx-schedule-wrapper"><table class="ktx-schedule-table"><thead><tr><th>열차종별</th><th>열차번호</th><th>의정부</th><th>송추</th><th>장흥</th><th>일영</th><th>원릉</th><th>대곡</th></tr></thead><tbody><tr><td>무궁화</td><td>2602</td><td>06:55</td><td>07:11</td><td>07:19</td><td>07:27</td><td>07:42</td><td>07:49</td></tr><tr><td>무궁화</td><td>2604</td><td>08:22</td><td>08:38</td><td>08:46</td><td>08:54</td><td>09:09</td><td>09:16</td></tr><tr><td>무궁화</td><td>2606</td><td>09:49</td><td>10:05</td><td>10:13</td><td>10:21</td><td>10:36</td><td>10:43</td></tr><tr><td>무궁화</td><td>2608</td><td>11:16</td><td>11:32</td><td>11:40</td><td>11:48</td><td>12:03</td><td>12:10</td></tr><tr><td>무궁화</td><td>2628</td><td>11:15</td><td>11:31</td><td>11:39</td><td>11:54</td><td>12:09</td><td>12:16</td></tr><tr><td>무궁화</td><td>2610</td><td>12:43</td><td>12:59</td><td>13:07</td><td>13:15</td><td>13:30</td><td>13:37</td></tr><tr><td>무궁화</td><td>2630</td><td>12:50</td><td>13:06</td><td>13:14</td><td>13:29</td><td>13:44</td><td>13:51</td></tr><tr><td>무궁화</td><td>2612</td><td>14:10</td><td>14:26</td><td>14:34</td><td>14:42</td><td>14:57</td><td>15:04</td></tr><tr><td>무궁화</td><td>2632</td><td>14:25</td><td>14:41</td><td>14:49</td><td>15:04</td><td>15:19</td><td>15:26</td></tr><tr><td>무궁화</td><td>2634</td><td>17:10</td><td>17:26</td><td>17:34</td><td>17:40</td><td>17:55</td><td>18:02</td></tr><tr><td>무궁화</td><td>2616</td><td>18:20</td><td>18:36</td><td>18:44</td><td>18:52</td><td>19:07</td><td>19:14</td></tr><tr><td>무궁화</td><td>2618</td><td>19:46</td><td>20:02</td><td>20:10</td><td>00:00</td><td>20:33</td><td>20:40</td></tr><tr><td>무궁화</td><td>2620</td><td>21:12</td><td>21:28</td><td>21:36</td><td>21:44</td><td>21:59</td><td>22:06</td></tr></tbody></table></div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">의정부 →&nbsp;대곡 무궁화호 시간표</h2>



<p class="tip-box wp-block-paragraph">👉 <mark style="background-color:rgba(0, 0, 0, 0);color:#007bff" class="has-inline-color"><strong>좌우로 밀면 전체 표를 볼 수 있습니다.!</strong></mark><br> ❗ 빈칸은 열차가 정차하지 않는 역입니다.</p>


<style>
            .ktx-schedule-wrapper { overflow-x: auto; position: relative; }
            .ktx-schedule-table { width: 100%; border-collapse: collapse; border-spacing: 0; border-top: 2px solid #000; border-bottom: 2px solid #000; box-shadow: 0px 0px 15px rgba(0,0,0,0.1); }
            .ktx-schedule-table th, .ktx-schedule-table td { border: 1px solid #ccc; padding: 8px 5px; text-align: center; white-space: nowrap; background-color: #fff; }
            .ktx-schedule-table th { background-color: #f2f2f2; font-weight: bold; }
            .ktx-schedule-table thead tr th { position: sticky; top: 0; z-index: 10; background-color: #f2f2f2; }
            .ktx-schedule-table td:nth-child(3) { position: sticky; left: 0; z-index: 5; background-color: #fff; border-right: 1px solid #ddd; }
            .ktx-schedule-table th:nth-child(3) { position: sticky; top: 0; left: 0; z-index: 20; background-color: #f2f2f2; border-right: 1px solid #ddd; }
            .scrolled-highlight { background-color: #e6f2ff !important; }
        </style>
            <script>
                document.addEventListener("DOMContentLoaded", function() {
                    const wrappers = document.querySelectorAll(".ktx-schedule-wrapper");
                    wrappers.forEach(wrapper => {
                        wrapper.addEventListener("scroll", function() {
                            const cells = wrapper.querySelectorAll(".ktx-schedule-table th:nth-child(3), .ktx-schedule-table td:nth-child(3)");
                            if (wrapper.scrollLeft > 10) {
                                cells.forEach(cell => { cell.classList.add("scrolled-highlight"); });
                            } else {
                                cells.forEach(cell => { cell.classList.remove("scrolled-highlight"); });
                            }
                        });
                    });
                });
            </script>
        <p style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 05월 24일</p><div class="ktx-schedule-wrapper"><table class="ktx-schedule-table"><thead><tr><th>열차종별</th><th>열차번호</th><th>대곡</th><th>원릉</th><th>일영</th><th>장흥</th><th>송추</th><th>의정부</th></tr></thead><tbody><tr><td>무궁화</td><td>2601</td><td>07:02</td><td>07:10</td><td>07:28</td><td>07:34</td><td>07:42</td><td>07:56</td></tr><tr><td>무궁화</td><td>2603</td><td>08:29</td><td>08:37</td><td>08:55</td><td>09:01</td><td>09:09</td><td>09:23</td></tr><tr><td>무궁화</td><td>2605</td><td>09:56</td><td>10:04</td><td>10:22</td><td>10:28</td><td>10:36</td><td>10:50</td></tr><tr><td>무궁화</td><td>2607</td><td>11:23</td><td>11:31</td><td>11:49</td><td>11:55</td><td>12:03</td><td>12:17</td></tr><tr><td>무궁화</td><td>2627</td><td>11:22</td><td>11:30</td><td>11:57</td><td>12:03</td><td>12:11</td><td>12:25</td></tr><tr><td>무궁화</td><td>2609</td><td>12:50</td><td>12:58</td><td>13:16</td><td>13:22</td><td>13:30</td><td>13:44</td></tr><tr><td>무궁화</td><td>2629</td><td>12:57</td><td>13:05</td><td>13:32</td><td>13:38</td><td>13:46</td><td>14:00</td></tr><tr><td>무궁화</td><td>2611</td><td>14:17</td><td>14:25</td><td>14:43</td><td>14:49</td><td>14:57</td><td>15:11</td></tr><tr><td>무궁화</td><td>2631</td><td>14:32</td><td>14:40</td><td>15:07</td><td>15:13</td><td>15:21</td><td>15:35</td></tr><tr><td>무궁화</td><td>2633</td><td>15:51</td><td>15:59</td><td>16:17</td><td>16:23</td><td>16:31</td><td>16:45</td></tr><tr><td>무궁화</td><td>2615</td><td>18:27</td><td>18:35</td><td>18:53</td><td>18:59</td><td>19:07</td><td>19:21</td></tr><tr><td>무궁화</td><td>2617</td><td>19:53</td><td>20:01</td><td>20:19</td><td>20:25</td><td>20:33</td><td>20:47</td></tr><tr><td>무궁화</td><td>2619</td><td>21:19</td><td>21:27</td><td>21:45</td><td>21:51</td><td>21:59</td><td>22:13</td></tr></tbody></table></div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">전국 기차 시간표 및 운임 조회</h2>



<p class="has-text-align-center has-text-color has-link-color wp-elements-88704de2ad28f76052113e79b539e929 wp-block-paragraph" style="color:#fe0000"><strong>[ <a href="https://krailroad.co.kr/ktx%c2%b7srt%c2%b7itx%c2%b7%ec%83%88%eb%a7%88%ec%9d%84%ed%98%b8%c2%b7%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8%c2%b7%eb%88%84%eb%a6%ac%eb%a1%9c-%ec%97%b4%ec%b0%a8-%ec%8b%9c%ea%b0%84%ed%91%9c-%ea%b2%80/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0606" class="has-inline-color">전체 시간표 조회</mark></a> ]</strong> <strong>[ <a href="https://krailroad.co.kr/train-schedule-search/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">실시간 열차 조회</mark></a> ]</strong><br><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#fe0a0a" class="has-inline-color">[ </mark><a href="https://krailroad.co.kr/ktx-srt-itx-money-table/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">전체 요금표 조회</mark></a><mark style="background-color:rgba(0, 0, 0, 0);color:#fe0a0a" class="has-inline-color"> ] [ </mark><a href="https://krailroad.co.kr/%ec%b6%9c%eb%b0%9c%ec%97%ad%ec%97%90%ec%84%9c-%eb%8f%84%ec%b0%a9%ec%97%ad-%ea%b8%b0%ec%b0%a8-%ec%8b%9c%ea%b0%84%ed%91%9c-%eb%b0%8f-%ec%86%8c%ec%9a%94%ec%8b%9c%ea%b0%84-%ea%b2%80%ec%83%89/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">열차 런타임 조회</mark></a><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color"> ]</mark></strong></p>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">실시간 시간표 음성 안내 켜기</h3>


<!-- Begin Dable 본문중단_300x250 / For inquiries, visit http://dable.io -->
<div id="dablewidget_GlYqm4xl" data-widget_id="GlYqm4xl">
<script>
      (function(d,a,b,l,e,r) {
if(d[b]&&d[b].q)return;d[b]=function(){(d[b].q=d[b].q||[]).push(arguments)};e=a.createElement(l);
e.async=1;e.charset='utf-8';e.src='//static.dable.io/dist/plugin.min.js';
r=a.getElementsByTagName(l)[0];r.parentNode.insertBefore(e,r);
})(window,document,'dable','script');
      dable('setService', 'krailroad.co.kr');
      dable('sendLogOnce');
      dable('renderWidget', 'dablewidget_GlYqm4xl');
</script>
</div>
<!-- End 본문중단_300x250 / For inquiries, visit http://dable.io -->

    
    <style>
        #ktx-live-app-v2 { margin: 20px auto; max-width: 600px; background: #fff; border-radius: 12px; font-family: -apple-system, sans-serif; border: 1px solid #e2e8f0; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.06); min-height: 800px; }
        .ktx-top-bar-v2 { background: #0045e6; padding: 15px 20px; display: flex; justify-content: space-between; align-items: center; color: #fff; }
        .ktx-top-bar-v2 b { font-size: 17px; }
        .ktx-live-label-v2 { background: #fff; color: #0045e6; padding: 2px 8px; border-radius: 20px; font-size: 11px; font-weight: 900; animation: ktx_pulse_v2 1.5s infinite; }
        @keyframes ktx_pulse_v2 { 50% { opacity: 0.4; } }
        .ktx-search-box-v2 { padding: 15px; background: #f8fafc; border-bottom: 1px solid #eee; }
        .ktx-input-flex-v2 { display: flex; gap: 8px; margin-bottom: 10px; }
        .ktx-input-flex-v2 input { flex: 1; min-width: 0; padding: 12px; border-radius: 8px; border: 1px solid #cbd5e1; font-size: 16px !important; outline: none; background: #fff; -webkit-appearance: none; }
        #ktx-btn-submit-v2 { width: 100%; padding: 15px; background: #64748b; color: #fff; border: none; border-radius: 8px; cursor: pointer; font-weight: bold; font-size: 16px; transition: all 0.3s; height: 50px; }
        #ktx-btn-submit-v2:hover { background: #475569; }
        #ktx-btn-submit-v2.is-searching { background: #6366f1 !important; cursor: wait; }
        .ktx-memo-area-v2 { padding: 12px 15px; background: #fffbeb; color: #92400e; font-size: 14px; line-height: 1.6; border-top: 1px solid #fef3c7; display: none; word-break: keep-all; min-height: 45px; }
        .ktx-main-table-v2 { width: 100%; border-collapse: collapse; table-layout: fixed; border: none; min-height: 700px; }
        .ktx-main-table-v2 th { font-size: 13px; color: #64748b; padding: 12px 2px; background: #f1f5f9; border-bottom: 1px solid #e2e8f0; text-align: center; }
        .ktx-main-table-v2 td { padding: 15px 4px; border-bottom: none !important; text-align: center; vertical-align: middle; }
        .ktx-status-text-v2 { color: #e11d48; font-weight: 800; font-size: 14px; margin: 3px 0; white-space: nowrap; letter-spacing: -0.5px; }
        .ktx-grade-name-v2 { font-size: 16px; font-weight: 800; color: #0045e6; line-height: 1.2; display: block; }
        .ktx-train-no-v2 { font-size: 11px; color: #94a3b8; display: block; margin-top: 2px; }
        .v-tag-ok-v2 { font-size: 10px; color: #059669; background: #ecfdf5; padding: 1px 4px; border-radius: 3px; border: 1px solid #d1fae5; display: inline-block; margin-top: 4px; }
        .v-tag-duration-v2 { font-size: 10px; color: #0045e6; background: #eff6ff; padding: 1px 4px; border-radius: 3px; border: 1px solid #dbeafe; display: inline-block; margin-top: 4px; font-weight: bold; }
        .ktx-time-info-v2 { color: #475569; font-size: 12px; font-weight: 600; }
        .ktx-station-name-v2 { font-size: 14px; font-weight: 700; color: #1e293b; }

        .ktx-badge-soon-v2 { 
            display: inline-block;
            background: #e11d48; 
            color: #fff; 
            padding: 4px 10px; 
            border-radius: 6px; 
            font-size: 11px; 
            font-weight: 900; 
            letter-spacing: -0.2px;
            margin-bottom: 4px;
            box-shadow: 0 2px 4px rgba(225, 29, 72, 0.2);
            animation: ktx_v4_pulse_v2 1.2s infinite ease-in-out; 
        }
        @keyframes ktx_v4_pulse_v2 { 0% { opacity: 1; transform: scale(1); } 50% { opacity: 0.6; transform: scale(0.96); } 100% { opacity: 1; transform: scale(1); } }

        .ktx-loading-v2 { opacity: 0.3; }
        .ktx-row-fade-v2 { animation: ktxFadeInUp_v2 0.5s ease-out forwards; opacity: 0; }
        @keyframes ktxFadeInUp_v2 { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }

        .ktx-voice-btn-v2 { padding: 4px 12px; border-radius: 15px; border: 2px solid rgba(255,255,255,0.6); background: rgba(0,0,0,0.15); font-size: 11px; font-weight: 900; color: #fff; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; height: 26px; transition: 0.2s; line-height: 1; margin-left:10px; }
        .ktx-voice-btn-v2.active { background: #fff; color: #0045e6; border-color: #fff; box-shadow: 0 0 10px rgba(255,255,255,0.3); }

        .ktx-pagination-v2 { display: flex; justify-content: center; align-items: center; gap: 10px; padding: 20px; background: #fff; border-top: 1px solid #f1f5f9; }
        .ktx-page-btn-v2 { padding: 8px 16px; border: 1px solid #e2e8f0; border-radius: 6px; font-size: 13px; color: #64748b; background: #fff; cursor: pointer; transition: 0.2s; }
        .ktx-page-btn-v2:hover:not(:disabled) { background: #f1f5f9; border-color: #cbd5e1; }
        .ktx-page-btn-v2:disabled { opacity: 0.4; cursor: not-allowed; }
        .ktx-page-info-v2 { font-size: 14px; font-weight: bold; color: #0045e6; }
    </style>

    <div id="ktx-live-app-v2">
        <div class="ktx-top-bar-v2">
            <div style="display: flex; align-items: center;">
                <b><span id="ktx-live-clock-v2" style="font-size:14px; font-weight:bold; opacity:1;"></span></b>
                <button class="ktx-voice-btn-v2" id="ktx-voice-toggle-v2" onclick="toggleKtxVoiceV2()">
                    <span class="v-ico-v2">🔈</span> <span class="v-txt-v2">음성 끔</span>
                </button>
            </div>
            <div class="ktx-live-label-v2">LIVE</div>
        </div>
        <div class="ktx-search-box-v2">
            <div class="ktx-input-flex-v2">
                <input type="text" id="ktx-dep-field-v2" placeholder="출발역" value="">
                <input type="text" id="ktx-arr-field-v2" placeholder="도착역" value="">
            </div>
            <button id="ktx-btn-submit-v2" onclick="runKtxLiveSearchV2(true)">열차 시간 조회하기</button>
        </div>
        
        <table class="ktx-main-table-v2">
            <thead><tr><th style="width: 24%;">열차정보</th><th style="width: 24%;">출발역</th><th style="width: 28%;">출발예정</th><th style="width: 24%;">도착역</th></tr></thead>
            <tbody id="ktx-live-tbody-v2">
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr><td style="height:86px;">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
                                <tr id="ktx-init-msg-v2"><td colspan="4" style="position:absolute; width:100%; left:0; padding:70px 0; color:#94a3b8; font-size:13px; text-align:center;">역 이름을 입력하고 조회해 주세요.</td></tr>
            </tbody>
        </table>

        <div id="ktx-pagination-ctrl-v2" class="ktx-pagination-v2" style="display:none;">
            <button class="ktx-page-btn-v2" id="ktx-prev-page-v2" onclick="changeKtxPageV2(-1)">&laquo; 이전</button>
            <span class="ktx-page-info-v2"><span id="ktx-current-page-v2">1</span> / <span id="ktx-total-pages-v2">1</span></span>
            <button class="ktx-page-btn-v2" id="ktx-next-page-v2" onclick="changeKtxPageV2(1)">다음 &raquo;</button>
        </div>

        <div id="ktx-memo-display-v2" class="ktx-memo-area-v2"></div>

        <div style="padding: 10px 18px; background: #f8fafc; font-size:11px; color:#94a3b8; border-top: 1px solid #f1f5f9; display:flex; justify-content:space-between;">
            <span>1분 간격 자동 갱신</span><span>최근: <span id="ktx-last-update-v2">--:--:--</span></span>
        </div>
    </div>

    <script>
    let ktxStationListV2 = [];
    const ktxKeyFinalV2 = "X7F%2FMhVuiV1lCs97QEbUzX3bSxRSsKro2roj5wdq%2FESJtqWJtRtvrBCCHVWuAvbY0T%2F84rusVFgvnQshHe7XBQ%3D%3D";
    window.ktxVoiceEnabledV2 = false;
    window.ktxAnnouncedV2 = new Set();
    let currentKtxFullDataV2 = [];
    let ktxCurrentPageV2 = 1;
    const ktxItemsPerPageV2 = 10;

    function toggleKtxVoiceV2() {
        window.ktxVoiceEnabledV2 = !window.ktxVoiceEnabledV2;
        const btn = document.getElementById('ktx-voice-toggle-v2');
        const txt = btn.querySelector('.v-txt-v2'), ico = btn.querySelector('.v-ico-v2');
        if(window.ktxVoiceEnabledV2) {
            btn.classList.add('active'); txt.innerText = "음성 켬"; ico.innerText = "🔊";
            const msg = new SpeechSynthesisUtterance("실시간 음성 안내가 활성화되었습니다. 출발 15분 전 열차를 안내합니다.");
            msg.lang = "ko-KR"; window.speechSynthesis.speak(msg);
        } else {
            btn.classList.remove('active'); txt.innerText = "음성 끔"; ico.innerText = "🔈";
            window.speechSynthesis.cancel();
        }
    }

    function updateKtxClockV2() {
        const now = new Date();
        const clockEl = document.getElementById('ktx-live-clock-v2');
        if (clockEl) { clockEl.innerText = `${now.getMonth() + 1}.${now.getDate()} ${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')} 기준`; }
    }
    setInterval(updateKtxClockV2, 1000);

    async function ktxMasterLoadV2() {
        updateKtxClockV2();
        ktxStationListV2.push({ name: "여수EXPO", id: "NAT041993" });
        const codes = ['11','21','22','23','24','25','26','31','32','33','34','35','36','37','38'];
        try {
            const results = await Promise.all(codes.map(c => fetch(`https://apis.data.go.kr/1613000/TrainInfo/GetCtyAcctoTrainSttnList?serviceKey=${ktxKeyFinalV2}&pageNo=1&numOfRows=200&_type=xml&cityCode=${c}`).then(r => r.text())));
            const parser = new DOMParser();
            results.forEach(xmlStr => {
                const xml = parser.parseFromString(xmlStr, "text/xml");
                xml.querySelectorAll('item').forEach(item => {
                    const name = item.querySelector('nodename').textContent.trim();
                    const id = item.querySelector('nodeid').textContent.trim();
                    if (!ktxStationListV2.find(s => s.id === id)) ktxStationListV2.push({ name, id });
                });
            });
            if(document.getElementById('ktx-dep-field-v2').value && document.getElementById('ktx-arr-field-v2').value) runKtxLiveSearchV2(false);
        } catch (e) { console.log("V2 Station data fail"); }
    }

    function renderKtxPageV2(page) {
        const tbody = document.getElementById('ktx-live-tbody-v2');
        const now = new Date();
        const start = (page - 1) * ktxItemsPerPageV2;
        const end = start + ktxItemsPerPageV2;
        const pageData = currentKtxFullDataV2.slice(start, end);
        let html = '';
        pageData.forEach((r, idx) => {
            const diffMs = r.depDate - now;
            const diffMin = Math.round(diffMs / 60000);
            
            if (window.ktxVoiceEnabledV2 && diffMin === 15) {
                const key = r.no + "_" + r.dep_n + "_" + r.dep_time;
                if (!window.ktxAnnouncedV2.has(key)) {
                    const speech = new SpeechSynthesisUtterance(`안내드립니다. ${r.dep_time}분에 ${r.dep_n}역에서 출발하는 ${r.arr_n}행 ${r.grade} ${r.no}열차가 15분 뒤에 출발할 예정입니다.`);
                    speech.lang = "ko-KR"; window.speechSynthesis.speak(speech);
                    window.ktxAnnouncedV2.add(key);
                }
            }

            const soon = (diffMin <= 15 && diffMin >= 0) ? '<span class="ktx-badge-soon-v2">출발임박</span>' : '';
            const durationTotal = Math.round((r.arrDate - r.depDate) / 60000);
            const h_dur = Math.floor(durationTotal / 60);
            const m_dur = durationTotal % 60;
            const durationStr = `${String(h_dur).padStart(2, '0')}:${String(m_dur).padStart(2, '0')} 소요`;
            
            let timeStatus = '';
            if (diffMin < 0) {
                timeStatus = '<div class="ktx-status-text-v2" style="color:#64748b;">운행종료</div>';
            } else {
                timeStatus = `<div class="ktx-status-text-v2">${diffMin===0?'출발대기':diffMin+'분 후 출발'}</div>`;
            }

            html += `<tr class="ktx-row-fade-v2" style="animation-delay:${idx*0.05}s;"><td><span class="ktx-train-no-v2">${r.no}호</span><span class="ktx-grade-name-v2">${r.grade}</span><span class="v-tag-ok-v2">정상운행</span></td><td><div class="ktx-station-name-v2">${r.dep_n}역</div><span class="v-tag-duration-v2">${durationStr}</span></td><td>${soon}${timeStatus}<div class="ktx-time-info-v2">${r.dep_time} 출발</div></td><td><div class="ktx-station-name-v2">${r.arr_n}역</div><div class="ktx-time-info-v2" style="color:#0045e6;">${r.arr_time} 도착</div></td></tr>`;
        });
        tbody.innerHTML = html;
        document.getElementById('ktx-current-page-v2').innerText = page;
        document.getElementById('ktx-prev-page-v2').disabled = (page === 1);
        document.getElementById('ktx-next-page-v2').disabled = (page === Math.ceil(currentKtxFullDataV2.length / ktxItemsPerPageV2));
    }

    function changeKtxPageV2(dir) {
        const total = Math.ceil(currentKtxFullDataV2.length / ktxItemsPerPageV2);
        let target = ktxCurrentPageV2 + dir;
        if (target >= 1 && target <= total) { ktxCurrentPageV2 = target; renderKtxPageV2(ktxCurrentPageV2); }
    }

    async function runKtxLiveSearchV2(manual = false) {
        const btn = document.getElementById('ktx-btn-submit-v2');
        let d_val = document.getElementById('ktx-dep-field-v2').value.trim();
        let a_val = document.getElementById('ktx-arr-field-v2').value.trim();
        if (!d_val || !a_val) { if(manual) alert("출발역과 도착역을 모두 입력하세요."); return; }
        
        btn.innerText = "데이터 검색 중..."; btn.classList.add('is-searching'); btn.disabled = true;
        d_val = d_val.replace(/역$/, ''); a_val = a_val.replace(/역$/, '');
        
        const tbody = document.getElementById('ktx-live-tbody-v2');
        const memoDiv = document.getElementById('ktx-memo-display-v2');
        const pgCtrl = document.getElementById('ktx-pagination-ctrl-v2');
        if(manual) tbody.classList.add('ktx-loading-v2');

        const findStation = (n) => {
            if (n === "여수" || n === "여수엑스포") return { name: "여수EXPO", id: "NAT041993" };
            return ktxStationListV2.find(s => s.name === n || s.name === n + '역');
        }
        const dep = findStation(d_val); const arr = findStation(a_val);
        if (!dep || !arr) { 
            tbody.innerHTML = '<tr><td colspan="4" style="padding:60px 0;">역 이름을 정확히 입력해 주세요. (예: 부산, 동대구)</td></tr>';
            pgCtrl.style.display = 'none';
            tbody.classList.remove('ktx-loading-v2');
            btn.innerText = "열차 시간 조회하기"; btn.classList.remove('is-searching'); btn.disabled = false; 
            return; 
        }

        const fd = new FormData();
        fd.append('action', 'fetch_ktx_live_v2');
        fd.append('dep_id', dep.id); fd.append('arr_id', arr.id);

        try {
            const response = await fetch('https://krailroad.co.kr/wp-admin/admin-ajax.php', { method: 'POST', body: fd });
            const resData = await response.json();
            const now = new Date();
            currentKtxFullDataV2 = resData.trains.map(item => {
                const parseTrainTime = (str) => { if (!str || str.length < 12) return new Date(0); return new Date(str.substring(0,4), str.substring(4,6)-1, str.substring(6,8), str.substring(8,10), str.substring(10,12)); };
                item.depDate = parseTrainTime(item.raw_dep); item.arrDate = parseTrainTime(item.raw_arr);
                if (item.arrDate < item.depDate) item.arrDate.setDate(item.arrDate.getDate() + 1);
                return item;
            }).sort((a, b) => a.depDate - b.depDate);

            if (currentKtxFullDataV2.length > 0) {
                const totalPages = Math.ceil(currentKtxFullDataV2.length / ktxItemsPerPageV2);
                document.getElementById('ktx-total-pages-v2').innerText = totalPages;
                pgCtrl.style.display = 'flex';
                
                let firstUpcomingIdx = currentKtxFullDataV2.findIndex(t => t.depDate.getTime() > (now.getTime() - 300000));
                if (firstUpcomingIdx === -1) firstUpcomingIdx = 0;
                ktxCurrentPageV2 = Math.floor(firstUpcomingIdx / ktxItemsPerPageV2) + 1;

                if(resData.memo_template) {
                    const f_t = currentKtxFullDataV2[0].dep_time;
                    const l_t = currentKtxFullDataV2[currentKtxFullDataV2.length-1].dep_time;
                    const scrollTips = [" 전체 시간표는 하단 페이징을 확인하세요.", " 모든 배차 정보를 페이지별로 확인 가능합니다."];
                    const randomTip = scrollTips[Math.floor(Math.random() * scrollTips.length)];
                    memoDiv.innerText = resData.memo_template.replace('{first_t}', f_t).replace('{last_t}', l_t) + randomTip;
                    memoDiv.style.display = 'block';
                }
                renderKtxPageV2(ktxCurrentPageV2);
                document.getElementById('ktx-last-update-v2').innerText = now.getHours().toString().padStart(2,'0')+':'+now.getMinutes().toString().padStart(2,'0')+':'+now.getSeconds().toString().padStart(2,'0');
            } else {
                tbody.innerHTML = '<tr><td colspan="4" style="padding:60px 0; color:#94a3b8;">오늘 운행되는 열차 정보가 없습니다.</td></tr>';
                pgCtrl.style.display = 'none';
            }
        } catch (e) { tbody.innerHTML = '<tr><td colspan="4" style="padding:60px 0;">데이터 통신 오류</td></tr>'; }

        tbody.classList.remove('ktx-loading-v2');
        btn.innerText = "열차 시간 조회하기"; btn.classList.remove('is-searching'); btn.disabled = false;
    }

    ktxMasterLoadV2();
    setInterval(() => { if(document.getElementById('ktx-dep-field-v2').value) runKtxLiveSearchV2(false); }, 60000);
    document.addEventListener('keypress', function(e) { if((e.target.id === 'ktx-dep-field-v2' || e.target.id === 'ktx-arr-field-v2') && e.keyCode === 13) runKtxLiveSearchV2(true); });
    </script>
    



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">실시간 API 버스 도착 시간표</h2>


    <style>
        #bus-live-area { margin: 20px auto; max-width: 600px; background: #fff; border-radius: 12px; font-family: -apple-system, sans-serif; border: 2px solid #0045e6; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.1); }
        /* CLS 최적화: 10개 출력 시의 예상 높이인 750px를 선점 */
        #bus-content-view { min-height: 750px; transition: height 0.3s ease; position: relative; } 

        .station-header { background: #0045e6; padding: 12px 15px; display: flex; justify-content: space-between; align-items: center; color: #fff; }
        .station-header span { font-weight: bold; }
        .live-dot-bus { background: #fff; color: #0045e6; padding: 2px 8px; border-radius: 20px; font-size: 11px; font-weight: 800; animation: blink_live 1.5s infinite; }
        @keyframes blink_live { 50% { opacity: 0.5; } }
        
        .bus-table { width: 100%; border-collapse: collapse; text-align: center; table-layout: fixed; }
        .bus-table th { font-size: 13px; color: #666; padding: 12px 5px; background: #f8f9fa; border-top: 1px solid #eee; }
        .bus-table td { padding: 15px 5px; border-bottom: 1px solid #f0f0f0; text-align: center; vertical-align: middle; overflow: hidden; }
        
        .bus-arrival-row { animation: slideUp 0.6s ease-out forwards; opacity: 0; }
        @keyframes slideUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

        @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
        .soon-badge { background: #e11d48; color: #fff; padding: 2px 5px; border-radius: 4px; font-size: 11px; animation: pulse 1.5s infinite; font-weight: bold; }
        .route-path { width: 60px; height: 3px; background: #e2e8f0; margin: 8px auto 0; position: relative; }
        .bus-icon { position: absolute; top: -9px; font-size: 12px; transition: all 0.5s; }
        .verify-badge { font-size: 10px; color: #059669; background: #ecfdf5; padding: 1px 4px; border-radius: 3px; border: 1px solid #d1fae5; display: inline-block; margin-top: 4px; }
        
        #bus-announcement { background: #fffbe6; border-top: 1px dashed #ffe58f; padding: 10px 15px; font-size: 12px; color: #856404; line-height: 1.6; text-align: center; }
    </style>

    <div id="bus-live-area">
        <div class="station-header">
            <span id="bus-header-name">대곡역 버스 도착판</span>
            <div class="live-dot-bus">LIVE</div>
        </div>
        
        <div id="bus-content-view">
            <div id="bus-loading-overlay" style="padding:150px 0; text-align:center; color:#999; line-height:1.6;">
                <div style="display:inline-block; margin-bottom:12px; font-size:24px; animation: pulse 1.5s infinite;">🔍</div>
                <p style="margin:0;">
                    <strong id="loading-name">대곡역</strong> 버스 API 연결 중...<br>
                    <span style="font-size:12px;">10초 간 최대 3번 접속시도 하오니 기다려 주세요....</span>
                </p>
            </div>
        </div>
        
        <div id="bus-announcement">
            <span style="display:inline-block; margin-right:5px; animation: pulse 1s infinite;">📢</span> 
            <span id="announcement-text">실시간 정보는 1분 단위로 자동 갱신됩니다.</span>
        </div>

        <div style="display:flex; justify-content:space-between; padding: 8px 15px; background: #f8fafc; font-size:11px; color:#94a3b8; border-top: 1px solid #eee;">
            <span>연계 교통 실시간 모드</span>
            <span>최근 갱신: <span id="last-sync">--:--:--</span></span>
        </div>

        <script type="text/javascript">
        (function($) {
            "use strict";
            let curCity = '';
            let curName = '대곡';
            let altCity = '';
            let altName = '의정부';
            let hasTriedAlt = false;

            function loadBus() {
                if (document.hidden) return;
                
                const $view = $('#bus-content-view');
                // 갱신 시 현재 높이를 잠시 고정하여 화면 떨림 방지
                if ($view.height() > 0) {
                    $view.css('min-height', $view.height() + 'px');
                }

                $.ajax({
                    url: 'https://krailroad.co.kr/wp-admin/admin-ajax.php',
                    type: 'POST',
                    data: { action: 'get_bus_universal_final', city: curCity, name: curName },
                    success: function(res) { 
                        if (res.indexOf('정류소 정보를 찾지 못했습니다') !== -1 && altName !== '' && !hasTriedAlt) {
                            curCity = altCity;
                            curName = altName;
                            hasTriedAlt = true;
                            $('#bus-main-title').text(curName + '역 실시간 버스 도착 안내');
                            $('#bus-header-name').text(curName + '역 버스 도착판');
                            $('#loading-name').text(curName + '역');
                            loadBus();
                            return;
                        }
                        
                        $view.html(res);
                        
                        // 데이터 로드 후 최소 높이를 다시 750px로 일관성 있게 유지
                        setTimeout(() => { $view.css('min-height', '750px'); }, 100);

                        const now = new Date();
                        const timeStr = now.getHours().toString().padStart(2, '0') + ':' + now.getMinutes().toString().padStart(2, '0') + ':' + now.getSeconds().toString().padStart(2, '0');
                        $('#last-sync').text(timeStr);
                    }
                });
            }
            $(document).ready(function() { loadBus(); setInterval(loadBus, 60000); });
        })(jQuery);
        </script>
    </div>
    



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">실시간 날씨 및 맛집 정보</h3>



    <div class="weather-section-wrap" style="margin: 40px 0;">
        <h4 style="margin-bottom: 25px !important;">대곡역 API 실시간 날씨 예보</h4>
        <div class="weather-info-box" style="padding: 20px; border-radius: 12px; background: #f8fafc; border: 1px solid #e2e8f0; margin-top: 15px;">
            <div style="display: flex; gap: 10px; text-align: center;">
                <div style="flex: 1; background: #ffffff; padding: 12px; border-radius: 8px; border: 1px solid #edf2f7;">
                    <span style="font-size: 0.85em; color: #718096; display: block; margin-bottom: 4px;">기온</span>
                    <b style="font-size: 1.3em; color: #2d3748;">15℃</b>
                </div>
                <div style="flex: 1; background: #ffffff; padding: 12px; border-radius: 8px; border: 1px solid #edf2f7;">
                    <span style="font-size: 0.85em; color: #718096; display: block; margin-bottom: 4px;">상태</span>
                    <b style="font-size: 1.1em; color: #2d3748;">☁️ 흐림</b>
                </div>
                <div style="flex: 1; background: #ffffff; padding: 12px; border-radius: 8px; border: 1px solid #edf2f7;">
                    <span style="font-size: 0.85em; color: #718096; display: block; margin-bottom: 4px;">강수확률</span>
                    <b style="font-size: 1.3em; color: #3182ce;">30%</b>
                </div>
            </div>
        </div>
    </div>


    <div class="station-food-wrap" style="margin: 30px 0; padding-top: 5px;">
        <h4 style="margin-bottom: 25px !important;">대곡역 API 실시간 맛집 정보</h4>
        <ul style="list-style: none !important; padding: 0 !important; margin: 0 !important; font-family: 'Noto Sans KR', sans-serif;">
                                                <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EC%A7%80%ED%96%A5%ED%95%9C%EC%9A%B0%EB%A7%88%EC%9D%84+%EA%B2%BD%EA%B8%B0%EB%8F%84+%EA%B3%A0%EC%96%91%EC%8B%9C+%EB%8D%95%EC%96%91%EA%B5%AC+%EB%8C%80%EC%9E%A5%EB%8F%99+380-1" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">지향한우마을</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">한식&gt;소고기구이</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">경기도 고양시 덕양구 대장동 380-1</div>
                        </a>
                    </li>
                                    <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EC%9E%A5%EC%96%B4%EC%82%AC%EB%83%A5+%EA%B2%BD%EA%B8%B0%EB%8F%84+%EA%B3%A0%EC%96%91%EC%8B%9C+%EB%8D%95%EC%96%91%EA%B5%AC+%ED%86%A0%EB%8B%B9%EB%8F%99+667" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">장어사냥</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">한식&gt;장어,먹장어요리</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">경기도 고양시 덕양구 토당동 667</div>
                        </a>
                    </li>
                                    <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EC%B2%AD%EB%8B%B4%EC%B6%94%EC%96%B4%EC%A0%95+%EA%B2%BD%EA%B8%B0%EB%8F%84+%EA%B3%A0%EC%96%91%EC%8B%9C+%EB%8D%95%EC%96%91%EA%B5%AC+%ED%86%A0%EB%8B%B9%EB%8F%99+654-23" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">청담추어정</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">음식점&gt;한식&gt;추어탕</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">경기도 고양시 덕양구 토당동 654-23</div>
                        </a>
                    </li>
                                    <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EC%96%91%ED%8F%89%ED%95%B4%EC%9E%A5%EA%B5%AD+%EA%B2%BD%EA%B8%B0%EB%8F%84+%EA%B3%A0%EC%96%91%EC%8B%9C+%EB%8D%95%EC%96%91%EA%B5%AC+%ED%86%A0%EB%8B%B9%EB%8F%99+597-1" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">양평해장국</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">한식&gt;해장국</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">경기도 고양시 덕양구 토당동 597-1</div>
                        </a>
                    </li>
                                    <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EC%84%9C%EA%B6%81+%EA%B2%BD%EA%B8%B0%EB%8F%84+%EA%B3%A0%EC%96%91%EC%8B%9C+%EB%8D%95%EC%96%91%EA%B5%AC+%ED%86%A0%EB%8B%B9%EB%8F%99+565-5+%EC%84%9C%EA%B6%81+%ED%95%9C%EC%A0%95%EC%8B%9D" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">서궁</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">한식&gt;한정식</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">경기도 고양시 덕양구 토당동 565-5 서궁 한정식</div>
                        </a>
                    </li>
                                    </ul>
    </div>
    



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">실시간 주차장 요금 및 위치</h3>


    <div class="station-parking-section" style="margin: 30px 0; padding-top: 10px; min-height: 400px;">
        <h4 style="margin-bottom: 20px !important;">대곡역 실시간 주차장 요금</h4>
        
                    <div style="text-align: center; padding: 50px 20px; background: #f8fafc; border: 1px dashed #cbd5e1; border-radius: 12px; font-family: 'Noto Sans KR', sans-serif;">
                <p style="color: #64748b; margin: 0;">해당 역의 공식 주차 정보가 없습니다.</p>
            </div>
            </div>
    


    <div class="station-location-info" style="margin: 20px 0; font-family: 'Noto Sans KR', sans-serif;">
        <h4 style="margin-bottom: 20px !important;">대곡역 주차장 위치 및 문의</h4>
        
        <div style="margin-bottom: 25px; line-height: 1.8; background: #f8fafc; padding: 20px; border-radius: 12px; border: 1px solid #e2e8f0;">
            <p style="margin: 5px 0; font-size: 1.05rem; color: #334155;"><strong>📍 주차장 주소 :</strong> 대곡역 인근 공영 및 노상주차장 이용 권장</p>
            <p style="margin: 5px 0; font-size: 1.05rem; color: #334155;"><strong>📞 문의전화 :</strong> <a href="tel:1544-7788" style="color: #0052a4; font-weight: bold; text-decoration: none;">1544-7788</a></p>
        </div>

        <div style="text-align: center; margin: 30px 0;">
            <a href="https://map.naver.com/v5/search/%EB%8C%80%EA%B3%A1%EC%97%AD+%EC%A3%BC%EC%B0%A8%EC%9E%A5" target="_blank" rel="noopener noreferrer" style="display: inline-block; background: #03c75a; color: white; padding: 15px 35px; border-radius: 8px; text-decoration: none; font-weight: bold; font-size: 1.1rem; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
                  네이버 지도에서 실시간 위치 확인
            </a>
        </div>
    </div>
    



<p class="wp-block-paragraph"></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="350" height="350" src="https://krailroad.co.kr/wp-content/uploads/2026/04/교회선-무궁화호-시간표-대곡역-의정부역-상하행-전체-첫기차-마지막기차-노선-요금-정차역-실시간.jpg" alt="교외선-무궁화호-시간표-대곡역-의정부역-상하행-전체-첫기차-마지막기차-노선-요금-정차역-실시간" class="wp-image-20712" srcset="https://krailroad.co.kr/wp-content/uploads/2026/04/교회선-무궁화호-시간표-대곡역-의정부역-상하행-전체-첫기차-마지막기차-노선-요금-정차역-실시간.jpg 350w, https://krailroad.co.kr/wp-content/uploads/2026/04/교회선-무궁화호-시간표-대곡역-의정부역-상하행-전체-첫기차-마지막기차-노선-요금-정차역-실시간-300x300.jpg 300w, https://krailroad.co.kr/wp-content/uploads/2026/04/교회선-무궁화호-시간표-대곡역-의정부역-상하행-전체-첫기차-마지막기차-노선-요금-정차역-실시간-150x150.jpg 150w" sizes="(max-width: 350px) 100vw, 350px" /></figure>
</div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
