The project's README from github.com/megumi-ben/marco-polo.skill. As one markdown file: README.md.
English | 简体中文
An AI travel planning skill that plans around your stay, real transport routes, and visiting times, with an interactive map, a food guide, and a city guide in one travel handbook.
Why Marco Polo · Quick start · See an example · Workflow · Dependencies

Nanjing itinerary showcase: daily colors, a visit timeline, and place details. Lines in this example show visit order; the planning workflow queries actual transport routes separately.
![]() |
![]() |
![]() |
| Travel handbook Routes, food, and sights in one place. |
Food guide Find local dishes and places to eat. |
City guide Get a feel for the city and every stop. |
Screenshots from the Nanjing example · Click to enlarge
Choose where to stay and what to see, then work out each day—with routes, timing, and reservations connected.
| What makes it useful | What you get |
|---|---|
| 📍 Routes grounded in real places | Amap coordinates, entrances, and transport routes help group nearby stops around your accommodation, accounting for detours and transfers. |
| 🕒 Days planned down to the details | Opening hours, booking slots, meals, and evening views fit together, with room for breaks, queues, and departure. A separate reservation checklist helps you prepare ahead. |
| 🗺️ A trip you can explore on a map | A webpage with daily colors, date filters, place selection, and itinerary details—useful before departure and during the trip. |
Explore a varied set of places before choosing. Keep sources and per-person costs at hand. When plans change, update the itinerary, budget, and map together.
Amap provides POIs, coordinates, and entrances for attractions, accommodation, and relevant transport hubs. The workflow checks ambiguous names and sites within larger attractions, then groups visits by location. Your chosen accommodation shapes where each day begins, which places belong together, and how you get back.
Walking, public transport, or driving routes between consecutive stops supply road distances and estimated travel times. Detours, entrances, and transfers all inform the plan. The geography and the journey both matter.
Museums during visiting hours, food streets around mealtimes, and evening views after dark: each stop is scheduled alongside opening hours, visit duration, reservation slots, and travel time. Meals, rest, queues, luggage collection, and getting to your train or flight also need room in the day.
A separate attraction reservation checklist records booking channels, ticket release rules, target slots, current status, and alternatives if a booking falls through. Prepare ahead, then see the relevant reminders in each day's itinerary.
The final map.html webpage shows each day in a different color, with visit order and direction arrows. Filter by date, locate a place from the itinerary, and open details about visit duration, reservations, and transport. Browser checks include readability on mobile.
Accommodation, attractions, and transport hubs have distinct markers. Selected food streets and night markets stay on the route; restaurant recommendations live in a separate guide. See the whole trip before departure, then find your next stop while traveling.
The food guide combines web research and Xiaohongshu experiences to recommend local dishes and specific restaurants, grouped by area or type. The city guide introduces the city and selected attractions with highlights, visiting tips, and matching images. Both pages can be read independently of the map.
Useful details throughout the process:
| Advantage | What it means for your trip |
|---|---|
| 🧭 You keep the choices | Candidates cover different interests and neighborhoods, with reasons, priorities, and tradeoffs. Explore options before narrowing them down. Existing tickets, hotels, and must-see places are respected. |
| 🔎 Sources and uncertainty stay visible | Xiaohongshu contributes experience and opinions; official sources verify opening hours, tickets, and reservations. Sources and lookup dates are retained. Unverified facts and outstanding bookings stay clearly marked. |
| 💰 Clear costs per person | Shared hotel and taxi costs are split across travelers; individual costs such as admission are recorded separately. Confirmed, estimated, and unknown amounts stay distinct, with checks against counting bundled tickets twice. |
| 🔄 Changes stay consistent | Changing accommodation, places, or dates updates the affected itinerary, routes, reservation targets, costs, and map. Existing bookings retain their actual status, and changes that affect them are explained. |
Your itinerary, reservation checklist, budget, map, and structured data are saved as local files. Keep the results and continue refining them.
Use it for a weekend away, a trip with friends, or a few days of sightseeing after you've already booked transport and accommodation. Transport you are arranging yourself can be skipped; an existing hotel becomes the starting point for planning.
Run in your project directory:
mkdir -p .agents/skills
git clone https://github.com/megumi-ben/marco-polo.skill.git .agents/skills/marco-polo
Install the Xiaohongshu skill bundle and both Amap skills, then configure your own Amap credentials and Xiaohongshu login. Add FlyAI when you need transport or specific hotel searches. Place these skills alongside marco-polo/; see Dependencies for download links and setup.
Your agent also needs web research access to check official travel information.
For example:
$marco-polo I'd like two relaxed days in Beijing, with historic architecture and parks.
I'll arrange travel to and from the city myself, but haven't chosen where to stay.
Help me plan.
Start with what you know. Marco Polo asks for the dates, group size, budget, and other information needed for the current stage. Later, you can continue with requests such as:
My hotel has changed to this address. Update the first and last journeys each day, along with their costs.
Alternatively, download the ZIP, rename the extracted folder to marco-polo, and place it in .agents/skills/. The entry point should be .agents/skills/marco-polo/SKILL.md.
~/.agents/skills/marco-polo/. See the official Codex skill locations. If the skill does not appear, start a new session or restart Codex.travel_plan/<city-trip-id>/ under your working directory. Revisions reuse the same data, so you can continue where you left off.An illustrative conversation. Opening hours, tickets, and routes are verified for the actual travel dates.
1. Describe the trip
I'd like two relaxed days in Beijing, with historic architecture and parks. I'll handle travel to and from the city, but haven't chosen where to stay.
Marco Polo asks for missing essentials such as dates and group size, compares 1–3 areas to stay, and offers a varied set of attractions with reasons, priorities, visit lengths, and initial booking information.
2. Choose your stay and places, then review the daily plan
Let's stay around Wangfujing. I'd like the Palace Museum, Jingshan, Beihai, and the Temple of Heaven. Leave the others out for now.
After checking opening hours and reservations, Amap locations, entrances, and transport help group nearby stops with time for meals, breaks, and departure. You review the proposed itinerary:
| Day | Simplified example |
|---|---|
| Day 1 | Palace Museum in the morning → lunch and rest → Jingshan → Beihai |
| Day 2 | Temple of Heaven in the morning → lunch → free time, with a departure buffer based on your train |
3. Confirm the route and take your trip files with you
Get a daily itinerary, reservation checklist, per-person budget, and travel handbook. The map, food guide, and city guide have separate pages, with index.html as the entry point. Map loading, navigation, images, and mobile layout are checked. Outstanding bookings retain their actual status, and you can continue revising the trip.
| Output | Purpose |
|---|---|
| Accommodation areas and attraction shortlist | Compare areas and places, with recommendation reasons and final selections |
| Reservation checklist | Know when, where, and which time slot to book before departure |
| Daily itinerary | Daily visits, transport, food, breaks, and alternatives |
| Per-person budget (CSV) | Confirmed, estimated, and unknown expenses, calculated per person |
map.html |
Locations, visit order, directions, and place details |
Food recommendations and food.html |
Local dishes and specific restaurants, grouped by area or type |
city-impression.html |
City character, selected attraction highlights, and images |
index.html |
One entry point for the map, food guide, and city guide |
| Trip data and progress | Facts, decisions, and progress for future revisions |
Files are created as needed. Transport comparisons are added only when requested. See the output specification for the full file conventions.
Five stages turn preferences into a travel handbook. Research accommodation and attractions in parallel, then develop the route, food guide, and city guide independently. Only the map waits for route confirmation; content pages can be built as soon as their research is ready.
flowchart TD
A["1. Requirements and optional intercity transport"] --> B["2. Areas to stay"]
A --> C["3. Attraction candidates"]
B --> D["You choose accommodation and attractions"]
C --> D
D --> E["4. Route: verify opening and booking rules<br/>Amap locations, transport, timing, and costs"]
D --> F["4. Food: web and Xiaohongshu research<br/>Dishes, restaurants, and practical details"]
D --> G["4. City guide: city character<br/>Selected attraction highlights and images"]
E --> H["You confirm the route"]
H --> I["5. map.html"]
F --> J["5. food.html"]
G --> K["5. city-impression.html"]
I --> L["index.html<br/>Check and deliver the complete handbook"]
J --> L
K --> L
Existing transport and hotels are respected. Urgent reservation deadlines are surfaced early. Restaurant recommendations are independent of the daily route; selected food streets, night markets, and fixed reservations remain part of planning. Approving an itinerary does not place an order or make a reservation.
Install both Amap skills and the Xiaohongshu skill bundle for research and maps. Add FlyAI when you need transport, specific hotels, or travel products. Place dependencies alongside marco-polo/.
| Skill | Purpose | Download |
|---|---|---|
amap-lbs-skill |
POIs, coordinates, entrances, and transport routes | Official Amap guide · Official ZIP |
amap-jsapi-skill |
Interactive Amap webpages | Official Amap guide · Official ZIP |
xiaohongshu-skills |
Experience-based research on accommodation, attractions, and food | XHS Bridge implementation; use Code → Download ZIP and preserve the repository structure |
flyai (optional) |
Transport, specific hotels, and travel products | Official setup · Source; use the skills/flyai/ directory |
Amap: Extract both ZIPs into your skill directory. Create your own Web Service Key and Web JSAPI Key in the Amap console. Install the LBS runtime dependencies as documented (npm install for versions with a package.json) and configure AMAP_WEBSERVICE_KEY. JSAPI needs its own key and the corresponding security configuration. See the Web Service setup guide.
When generating a map, copy assets/amap-html-template/config.local.example.js into the trip output directory as config.local.js. Set your own jsapiKey and either securityJsCode or an already deployed serviceHost. Keep the Web Service Key out of browser configuration. For public hosting, follow Amap's security configuration guidance for proxying and domain restrictions.
To preview the handbook, run python3 -m http.server 8000 --bind 127.0.0.1 in the trip directory and open http://127.0.0.1:8000/index.html; map.html also opens directly. The base map requires internet access and valid configuration. The food and city guides can be read independently. Press Ctrl+C in the server terminal when finished.
Xiaohongshu: Requires Python 3.11+, uv, and Chrome. Run uv sync in the dependency directory. Follow the upstream README to load its extension/ directory as an unpacked Chrome extension and enable XHS Bridge, then run uv run python scripts/cli.py check-login. Authentication and search subskills are already included. Sign in with your own account; this travel workflow does not need publishing, comments, or likes.
FlyAI (optional): After installing skills/flyai/, run npm i -g @fly-ai/flyai-cli, then check flyai --help for the available commands. Follow the upstream instructions for queries and optional API key setup, using your own credentials.
After installation, verify a POI and route query, plus a Xiaohongshu search and note-detail retrieval. A successful login alone does not verify the research capability. Missing capabilities are reported in the plan.
marco-polo/
├── SKILL.md Five-stage workflow
├── README.md English overview and setup
├── README.zh-CN.md Chinese overview and setup
├── agents/openai.yaml Display name and invocation prompt
├── references/outputs.md Output conventions
└── assets/
├── demo-map.png Nanjing map showcase
└── amap-html-template/
├── map.html Map template without itinerary data
└── config.local.example.js Configuration placeholders
Want to try it on your next trip? ⭐ Star Marco Polo to find it again when you're ready to plan.
Share your experience: what worked, where a route took a detour, or which booking detail was missing. Contributions to setup, route planning, and map presentation are welcome. Remove credentials, orders, and personal information before posting.
Start contributing with the planning rules and output specification.