gabrielAHN/gtfs-tools

GTFS フィードのインポート、駅/停留所/通路/路線/運行/カレンダー/シェイプデータのクエリ、接続・ノード・路線・運行・停車時刻の編集、運行パターンとスケジュールの比較、変更の GTFS CSV へのエクスポート、gtfs-tools CLI によるローカルブラウザダッシュボードの起動を行います。GTFS データ、交通機関の駅、通路、路線、運行、スケジュール、またはアクセシビリティ監査を扱う際に使用します。

gtfs-tools とは?

このスキルは、GTFS 交通フィードを操作するための強力なコマンドラインインターフェース (CLI) ツールです。DuckDB を内部データベースとして使用し、ローカルにデータを保存して高速なクエリと編集を可能にします。主な機能には、GTFS フィードのインポート、駅・停留所・路線・運行・カレンダー・シェイプデータのブラウズとフィルタリング、運行スケジュールの比較、駅の通路と接続の分析、駅構内の経路探索、データの編集(接続、ノード、運行、スケジュール、サービス)、および変更の GTFS CSV へのエクスポートが含まれます。また、データを視覚的に探索するためのローカルダッシュボードも提供します。このツールは、Claude Code、Coder、Cursor、GitHub Copilot、OpenAI、Gemini などのさまざまな AI エージェントと統合でき、`npx skills add gabrielAHN/gtfs-tools` でスキルをインストールすることで使用できます。さらに、S3 や R2 などのリモートストレージからの GTFS フィードのインポートや、運行の再ルーティングや分割などの高度な編集操作もサポートしており、交通データの分析やアクセシビリティ監査に役立ちます。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/gabrielAHN/gtfs-tools/tree/HEAD/skills/gtfs-tools

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

GTFS Tools CLI

GTFS フィードをインポートし、交通データをクエリし、路線/運行/カレンダー/シェイプをブラウズし、運行スケジュールを比較し、駅/通路/路線/運行/停車時刻を編集し、変更をエクスポートするか、ローカルダッシュボードを開きます。

リファレンスファイル

正確な列名、SQL 構文、またはフラグの詳細が必要な場合は、以下を参照してください。

インストール

CLI をグローバルにインストールし、スキルを登録します。

npm install -g @gabrielahn/gtfs-tools
gtfs-tools install-skill openai

または、npx を使用してスキルのみをインストールします。

npx skills add gabrielAHN/gtfs-tools

AI プロバイダーには anthropic、openai、google、または generic を使用します。gtfs-tools install-skill --list-providers を実行すると、解決されたインストールパスが表示されます。--provider <name> は位置引数のプロバイダー名と同等であり、--target-dir <dir> はデフォルトを上書きします。--target-dir が設定されている場合、非対話型の使用でもプロバイダーが必要です。その隣にある古い gtfs-viz スキルディレクトリはそのまま残り、古いものとして報告されます。このスキルがインストールされたら、自分で削除してください。

一般的なヘルプには gtfs-tools h を、gtfs-tools h <command> を使用すると、gtfs-tools help <command> および gtfs-tools <command> -h と同じコマンド固有のヘルプを表示できます。

インストール済みの CLI を表示または更新します。

gtfs-tools --version
gtfs-tools update --check
gtfs-tools update
gtfs-tools update --provider openai

update は、インポートされたデータセットとセッションを保持します。CLI 更新後、インストール済みスキルをそのプロバイダー向けに更新するには --provider を追加します。

gabrielAHN/gtfs-tools のチェックアウトから:

npm ci
npm run build
npm install -g .

クイックスタート

gtfs-tools import /path/to/feed.zip
gtfs-tools status
gtfs-tools stations
gtfs-tools station "Park Street"
gtfs-tools station_pathways "Park Street" --data

インポート

gtfs-tools import /absolute/path/to/feed.zip
gtfs-tools import https://example.com/gtfs/feed.zip
gtfs-tools import s3://my-bucket/gtfs/feed.zip      # s3a://、s3n:// も同様
gtfs-tools import r2://my-bucket/gtfs/feed.zip

プレーンまたは引用符で囲まれたパスまたは URL を使用します。バッククォートは使用しないでください。インポートは一度限りです。新しいインポートは現在のデータセットを置き換えます。データは ~/.gtfs-viz-cli/current に保存されます。データセットは 7 日後に自動的に期限切れになります。

リモートフィードは最初に ~/.gtfs-viz-cli/downloads/ にダウンロードされます。ZIP アーカイブである必要があり、インポート後に削除されます。ダウンロードおよび検証の失敗 (ZIP ではない、stops.txt がない) は現在のデータセットに影響を与えません。DuckDB インポート自体の失敗は、ローカルファイルの場合と同様に、データセットをクリアします。クエリ文字列 (署名付き URL) はダウンロードに使用されますが、保存も出力もされません。ユーザー名またはパスワードが埋め込まれた URL は拒否され、他のスキーム (gs://、az://、hf://、…) はサポートされていません。http(s) URL パス内のエンコードされていない @ も拒否されます。%40 としてパーセントエンコードし、URL に資格情報を絶対に入れないでください。

s3:// および r2:// オブジェクトは、DuckDB シークレットを通じて認証されます。最初に一致するシークレット (永続的なものを含む、例: duckdb -c "CREATE PERSISTENT SECRET (TYPE s3, KEY_ID '…', SECRET '…', REGION 'us-east-1')") が使用されます。次に、s3:// の場合は、AWS 環境変数、一時的な credential_chain シークレットによる AWS プロファイルまたは SSO、次に匿名リクエストが試行されます。r2:// には CREATE PERSISTENT SECRET (TYPE r2, KEY_ID '…', SECRET '…', ACCOUNT_ID '…') が必要です。MinIO およびその他の S3 互換ストレージは、ENDPOINT、URL_STYLE 'path'、USE_SSL を指定した s3 シークレットを使用します。実行するコマンドにシークレット値を貼り付けるようユーザーに依頼しないでください。代わりに、ユーザー自身でシークレットを作成するよう依頼してください。

ブラウズ & フィルター

CLI で直接駅または停留所をフィルタリングします。

gtfs-tools stations                                # すべての駅
gtfs-tools stations --name "Park"                  # 名前に「Park」を含む
gtfs-tools stations --pathways "no"                # 通路なし
gtfs-tools stations --wheelchair "accessible"      # アクセシブル
gtfs-tools stations --station-id place-pktrm       # 正確な ID
gtfs-tools stations --name "Park" --pathways "yes" # 複合条件

gtfs-tools stops                                   # すべての単独停留所
gtfs-tools stops --name "Albany"                    # 名前に「Albany」を含む
gtfs-tools stops --location-type "Stop"             # タイプ別
gtfs-tools stops --wheelchair "unknown"             # 車いす対応状況別
gtfs-tools trips                                   # 運行ビューを開く
gtfs-tools trips --route R1 --data                 # 路線の運行を表示
gtfs-tools trip trip-123 --data                    # 運行の停車時刻を表示
gtfs-tools trip trip-123 --view timeline           # タイムラインビューを開く
gtfs-tools trip trip-123 --compare trip-456        # 2 つの運行を比較

gtfs-tools calendar --data                         # すべてのサービスを一覧表示
gtfs-tools calendar SAT-1 --data                   # サービスのカレンダーを表示

gtfs-tools shapes --data                           # すべてのシェイプを一覧表示
gtfs-tools shapes shape-123 --data                 # シェイプのポイントを表示

JSON 出力には --format json を追加します。

ダッシュボード

コマンドはデフォルトでダッシュボードを開きます。代わりに行を出力するには --data を追加します。

gtfs-tools station "Park Street"                    # 駅情報を開く
gtfs-tools station "Park Street" --data             # 行を出力
gtfs-tools stop-info "Trade Center"                 # ポップアップとズーム付きの停留所マップを開く
gtfs-tools station_connections "Park Street"         # フローグラフを開く
gtfs-tools station_pathways place-pktrm --node-id node-pktrm-stair7-gl
gtfs-tools view --view stations/map --map-focus 42.355,-71.06,12
gtfs-tools view --view export --url-only

出力されたダッシュボード URL をユーザーに返します。

駅検索

gtfs-tools station "Park Street"
gtfs-tools station --id place-pktrm --data
gtfs-tools station --id place-pktrm --format json

値のタイプがわかっている場合は --station-id または --station-name を使用します。どちらの可能性もある場合は --selected-station または位置引数を使用します。

通路 & 接続

gtfs-tools station_connections "Park Street" --data
gtfs-tools station_pathways "Park Street" --data
gtfs-tools station_pathways place-pktrm --node-id node-pktrm-stair7-gl --data

--node-id は、駅内のプラットフォーム、出口/入口、または通路ノードを対象とします。

駅の欠落部品や内部接続の破損を確認する場合は、駅部品とネットワーク関数のみを使用してください。まず get_station_stops(station_id) から始め、次に get_station_pathways(station_id)、get_station_routes(station_id)、find_shortest_path、または find_reachable_stops を調査します。StopsTable から駅内部の接続性を監査しないでください。このテーブルは単独の停留所を対象としています。「references/gtfs-schedule-reference.md」を参照してください。

路線 & サービス

gtfs-tools routes                                   # すべての路線を一覧表示
gtfs-tools routes --type Bus                        # タイプでフィルター
gtfs-tools routes --route-name "Metro"              # 名前でフィルター
gtfs-tools routes --route-id ROUTE_ID               # ID でフィルター
gtfs-tools route "Line 1"                           # 路線情報を開く
gtfs-tools route --route-id ROUTE_ID --data         # 路線データを出力
gtfs-tools route "Line 1" --view service            # サービスの表示を開く

運行 & 停車時刻

gtfs-tools trips --data                             # すべての運行を一覧表示
gtfs-tools trips --route R1 --data                  # 路線の運行を表示
gtfs-tools trip trip-123 --data                     # 停留所名付きの停車時刻
gtfs-tools trip trip-123 --data --view info          # 運行メタデータ
gtfs-tools trip trip-123 --view timeline             # タイムラインビューを開く
gtfs-tools trip trip-123 --view map                  # マップビューを開く
gtfs-tools trip trip-123 --compare trip-456 --data   # 停車時刻を比較
gtfs-tools trip trip-123 --compare trip-456,trip-789 --view map # 3 つの運行をマップ上で比較
gtfs-tools trips --compare trip-1,trip-2,trip-3      # ダッシュボードで運行を比較

ビュー: timetable (デフォルト)、timeline (時間チャート)、map (位置)、info (メタデータ、--data と併用)。

カレンダー & シェイプ

gtfs-tools calendar --data                          # 運行数付きのサービスを一覧表示
gtfs-tools calendar --route R1 --data               # 路線のサービスを表示
gtfs-tools calendar SAT-1 --data                    # サービスのカレンダー + 日付
gtfs-tools shapes --data                            # ポイント数付きのシェイプを一覧表示
gtfs-tools shapes --route R1 --data                 # 路線のシェイプを表示
gtfs-tools shapes shape-123 --data                  # シェイプのポイントを表示

路線ラインバンド

gtfs-tools route-bands                              # 並行路線ラインバンドを構築 (路線分離)
gtfs-tools route-bands --data                       # band_rows、routes、widest_bundle を出力
gtfs-tools route-bands --status --data              # 再構築せずに既存のバンド数を報告

GTFS shapes のみから RouteShapeBandsTable を構築します。廊下を共有する路線は 1 つの中心線に収束され、ダッシュボードの路線分離ビューで平行なバンドとして描画されるように横方向のレーンが与えられます。これらの回廊マクロを実行するには、query ではなくこれを使用してください。これらは書き込み可能な空間セッションを必要とします。

駅路線 & 経路探索

gtfs-tools station_routes "South Station" --data
gtfs-tools station_routes "South Station" --data --time-interval 60
gtfs-tools station_routes "South Station" --data --connection-type "Exit/Entrance"
gtfs-tools station_routes "South Station" --data --node-id door-sstat-dewey
gtfs-tools station_shortest_route "South Station" --data

station_shortest_route は、入口から出口までの時間ベースで最速ルートを見つけます。

データ編集 (接続)

gtfs-tools add_connection --from NODE_A --to NODE_B --traversal-time 45
gtfs-tools add_connection --from NODE_A --to NODE_B --bidirectional --pathway-mode 2 --stair-count 12
gtfs-tools update_connection --pathway-id PATHWAY_ID --traversal-time 60
gtfs-tools delete_connection --pathway-id PATHWAY_ID

通路モード: 1=歩道、2=階段、3=動く歩道、4=エスカレーター、5=エレベーター、6=改札口、7=出口ゲート。

まず通路 ID を見つけます。

gtfs-tools station_pathways "Park Street" --data
gtfs-tools query --sql "SELECT pathway_id, from_stop_id, to_stop_id, traversal_time FROM PathwaysView WHERE from_stop_id LIKE '%pktrm%'"

データ編集 (ノード)

gtfs-tools add_node --stop-id NEW_ID --lat 42.35 --lon -71.06 --parent-station place-pktrm
gtfs-tools add_node --stop-id door-new --stop-name "New Entrance" --lat 42.35 --lon -71.06 --location-type "Exit/Entrance" --parent-station place-pktrm
gtfs-tools update_node --stop-id NODE_ID --stop-name "Main Lobby"
gtfs-tools delete_node --stop-id NODE_ID

ロケーションタイプ: Station、Stop、Exit/Entrance、Generic Node、Boarding Area。

まず停止 ID を見つけます。

gtfs-tools query --name station-stops --args-json '{"stationId":"place-pktrm"}' --data

運行、スケジュール、サービスの編集

インポートしたフィードにサービス変更 (アラートページなどから) を適用します。CLI はアラートを読み取りません。変更内容を編集に変換します。完全な変更セット形式、読み取り→確認→確認→実装→レビューのワークフロー、およびアラート検証レポート形式 (データ内ステータス + アラート説明 + ソースリンク + クリック可能で CLI 検証済みのダッシュボードリンク) については、references/edits.md を参照してください。また、運行を別の路線に再ルーティングする方法 (例:「A/C を F 経由で運行」) についても説明されています。gtfs-tools reroute を使用します。これは、停留所を単にスキップするのではなく、ドナー路線の停留所を調整されたタイミングで組み込みます。gtfs-tools trip <id> --compare <donor_trip> --view map で表示します。

gtfs-tools add_trip --trip-id T2 --route-id R1 --service-id WKD --headsign "Uptown Express" --direction-id 0
gtfs-tools update_trip --trip-id T2 --headsign "Express"        # 指定されたフィールドのみ変更
gtfs-tools delete_trip --trip-id T2                             # stop_times に連鎖
gtfs-tools set_stop_times --trip-id T2 --stops-json '[{"stop_sequence":1,"stop_id":"S1","arrival_time":"09:00:00","departure_time":"09:00:00"}]'
gtfs-tools reroute --trip A_TRIP   # 影響を受ける運行を直接rerouteフォームで開く
gtfs-tools reroute --trip A_TRIP --via F_TRIP --from "W 4 St-Wash Sq" --to "Jay St-MetroTech"   # AをF経由でこれらの停留所間で運行
gtfs-tools remove_stops --trip T2 --stops "Spring St,Canal St"                # スキップ/急行、駅迂回
gtfs-tools truncate_trip --trip T2 --to "14 St"                                # 短絡/早期終了
gtfs-tools split_trip --trip T2 --gap-from "Crescent St" --gap-to "Broadway Junction" --new-trip-id T2_SEC2  # 2区間分割
gtfs-tools add_calendar --service-id WKND --days sat,sun --start-date 20260101 --end-date 20261231
gtfs-tools update_calendar --service-id WKD --days mon,tue,wed,thu,fri,sat
gtfs-tools delete_calendar --service-id WKND
gtfs-tools add_calendar_date --service-id WKD --date 20260906 --exception-type 1   # 1=追加、2=日付のサービスを削除
gtfs-tools delete_calendar_date --service-id WKD --date 20260906
gtfs-tools add_service --service-id NEW --days mon,tue,wed,thu,fri --start-date 20260101 --end-date 20261231 --calendar-dates '[{"date":"20260906","exception_type":2}]'
gtfs-tools add_service --service-id NEW --days mon,tue,wed,thu,fri --start-date 20260101 --end-date 20261231 --added-dates '["20261126","20261225"]' --removed-dates '["20260906"]'

update_trip の引数はオプションです。指定されたフィールドのみが変更されます。

データのエクスポート

gtfs-tools export /path/to/export.zip
gtfs-tools export --format csv
gtfs-tools export --format geojson
gtfs-tools export --format gtfs
gtfs-tools export --format gtfs-zip
gtfs-tools export --format gtfs-unzip
gtfs-tools export --format gtfs-sql
gtfs-tools export --format gtfs-sql-zip

エクスポートは、編集、追加、削除を含む現在のデータセット全体を保存します。

SQL クエリ

gtfs-tools query --sql "SELECT * FROM stops LIMIT 5"
gtfs-tools query --named station-stops --args-json '{"stationId":"place-pktrm"}'
gtfs-tools query --named station-stops --args-json '{"stationId":"place-pktrm"}' --data
gtfs-tools query --file /path/to/query.sql
gtfs-tools query --describe
gtfs-tools query --describe --named
gtfs-tools query --describe --named station-stops
gtfs-tools query --walk --sql "SELECT * FROM stops"  # DuckDB のクエリプランを表示

--named は references/examples.sql から SQL をロードします。--describe は --named を指定せずにすべての SQL 関数を表示し、--named とともに特定の名前付きクエリの詳細を表示します。--walk は DuckDB EXPLAIN ANALYZE 出力を解釈して表示します。

システムコマンド

gtfs-tools status
gtfs-tools dbinfo
gtfs-tools logs
gtfs-tools clear
gtfs-tools clear --force
gtfs-tools update
gtfs-tools uninstall-skill openai
gtfs-tools version
gtfs-tools help
gtfs-tools help import
gtfs-tools help add_connection

関連スキル