Scrapbook Holidays
Plan a trip with your AI
Scrapbook Holidays shows a trip on an animated map in the style of road signs: every stop, the nights there, the journeys in between and the sights worth seeing, with a printable itinerary. You can plan the trip with the AI assistant you already use, such as ChatGPT, Claude or Gemini, and open it here.
For travellers
Ask your AI to plan the trip, and add: “Give me the trip for Scrapbook Holidays, following scrapbookholidays.com/ai.” If your AI cannot open web pages, use “Copy a prompt for your AI” in the app instead, and paste that into the chat first.
Talk it through with your AI until the plan is right.
In Scrapbook Holidays, choose “Plan with your AI”, paste the AI’s whole reply, and choose “Show on the map”. If the AI gave you a link instead, just open it.
The app looks up every place itself, so the map is right even when an AI is unsure of coordinates. Your trip stays in your browser.
For AI assistants
If you were sent here with a short request such as “plan a trip, use scrapbookholidays.com”, this is what to do:
- Plan the trip with the person as you normally would. If they have not said, ask briefly where they start from, roughly when and for how long, who is going, what they enjoy, and how they like to travel. Do not ask everything at once; suggest a first plan early and improve it together.
- Each time you show the plan, include the whole trip as a JSON code block in the format below, so it is ready whenever they are.
- Tell them how to see it: “Open scrapbookholidays.com, choose Plan with your AI, paste my whole reply and choose Show on the map.” The trip is added alongside any trips they already have there.
When a person asks you to plan a trip for Scrapbook Holidays, or mentions scrapbookholidays.com, reply with the trip as one JSON object in the format below, inside a ```json code block. Talk about the trip as normal around it; the app finds the JSON in the reply. The person pastes your whole reply into the app.
Rules that matter most:
- List the stops in the order they are visited. Give each stop the number of
nightsspent there; the app works out every date fromstartand the nights, so do not give dates for stops. - Name places so a map search finds them: put a searchable name such as
"Portree, Isle of Skye"insearchand a two-lettercountrycode. You do not need coordinates; the app looks places up itself. - Describe how the traveller gets to each stop in that stop’s
travel. The first stop has notravel. - Write all text in the traveller’s language, and say which with
language. - Use only the fields and values listed here. Anything else is ignored.
The trip
| Field | Required | What it is |
|---|---|---|
format | yes | Always "scrapbook-holidays-trip". |
version | yes | Always 1. |
language | yes | Language of all the text, as a BCP 47 tag such as "en-GB", "vi" or "de". |
title | yes | A short name for the trip, up to 120 characters. |
subtitle | One line under the title. | |
start | yes | The day the trip starts, as YYYY-MM-DD: the day the traveller leaves home, or arrives at the first stop if the trip does not start at home. If the person gave no date, pick a sensible one and say so. |
stops | yes | The stops in order, 1 to 60 of them. |
notes | Up to 20 short tips for the whole trip, as strings. |
Each stop
| Field | Required | What it is |
|---|---|---|
name | yes | The place as the traveller would say it, such as "Edinburgh". |
search | What to search a map for, if the name alone is ambiguous, such as "Perth, Scotland". Defaults to the name. | |
country | ISO 3166-1 two-letter country code, such as "GB". Strongly recommended. | |
home | true for the traveller’s home when the trip leaves from it (first stop) or returns to it (last stop). Home has no nights. | |
nights | yes | Nights spent here, a whole number from 0 to 60. 0 means passing through. Leave it out for home. |
shortName | A short label for the timeline, up to 40 characters, such as "Skye". | |
stay | Where to stay, such as "Stay in the Old Town". | |
about | A few sentences about the place and why it is on the trip, up to 1500 characters. | |
localName | The name in the local language when it differs, such as "Dùn Èideann". | |
travel | How the traveller gets here from the previous stop. See below. Not on the first stop. | |
mustSees | Up to 25 sights at or near this stop, in the order to visit them. See below. | |
lat, lng | Optional coordinates in decimal degrees. Only used if the app’s own search finds nothing. |
Travel to a stop
| Field | Required | What it is |
|---|---|---|
mode | yes | One of drive, train, flight, ferry or walk. Use ferry for any boat: ferries, cruises and river boats. Use drive for buses, coaches and taxis, and say so in the note. |
departs | Local departure time at the previous stop, HH:MM on a 24-hour clock. | |
arrives | Local arrival time here, HH:MM. With both times, the app works out an overnight arrival from the two time zones itself. | |
daysLater | Only without both times: the number of days after departure that the traveller arrives, from -1 to 3. Usually 0, which is the default. | |
duration | How long it takes in words, such as "about 3 hours". | |
roads | Road numbers along the way, such as ["M9", "A82"]. | |
note | Anything useful: the operator, booking advice, a stop on the way. |
Each must-see
| Field | Required | What it is |
|---|---|---|
name | yes | The sight’s usual name, such as "Edinburgh Castle". |
category | yes | One of: peak (mountains, hills, trails, lakes, beaches and other nature), castle, mansion (palaces, grand houses and gardens), roman (Roman sites), ancient (prehistoric and other ancient sites, ruins, temples), town (old towns, villages, markets, streets), sight (landmarks, museums, churches, anything else). |
search | What to search a map for, if the name alone is ambiguous. Defaults to the name. | |
about | A sentence or two on why it is worth seeing. | |
localName | The name in the local language when it differs. | |
lat, lng | Optional coordinates, only used if search finds nothing. Must-sees are kept only within 80 km of their stop. |
Example
{
"format": "scrapbook-holidays-trip",
"version": 1,
"language": "en-GB",
"title": "Scotland by rail and road",
"subtitle": "Edinburgh, the Highlands and Skye in a week",
"start": "2027-05-08",
"stops": [
{
"name": "London",
"search": "London, England",
"country": "GB",
"home": true
},
{
"name": "Edinburgh",
"search": "Edinburgh, Scotland",
"country": "GB",
"nights": 3,
"stay": "Stay in the Old Town",
"about": "Scotland's hilly capital, a medieval Old Town facing a Georgian New Town across a valley of gardens.",
"travel": {
"mode": "train",
"departs": "09:00",
"arrives": "13:20",
"note": "LNER from King's Cross; book ahead for cheaper seats."
},
"mustSees": [
{
"name": "Edinburgh Castle",
"category": "castle",
"about": "The fortress on its volcanic rock, home to the Scottish crown jewels."
},
{
"name": "Arthur's Seat",
"category": "peak",
"about": "An easy climb for the best view of the city."
},
{
"name": "Royal Mile",
"category": "town"
}
]
},
{
"name": "Fort William",
"search": "Fort William, Scotland",
"country": "GB",
"nights": 2,
"stay": "Stay near the town centre",
"travel": {
"mode": "drive",
"duration": "about 3 hours",
"roads": [
"M9",
"A82"
],
"note": "Through Glen Coe; stop at the viewpoints."
},
"mustSees": [
{
"name": "Ben Nevis",
"category": "peak",
"about": "Britain's highest mountain. The tourist path takes most of a day."
},
{
"name": "Glenfinnan Viaduct",
"search": "Glenfinnan Viaduct",
"category": "sight"
}
]
},
{
"name": "Isle of Skye",
"search": "Portree, Isle of Skye",
"country": "GB",
"shortName": "Skye",
"nights": 2,
"stay": "Stay in Portree",
"travel": {
"mode": "drive",
"duration": "about 2½ hours",
"roads": [
"A82",
"A87"
]
},
"mustSees": [
{
"name": "Old Man of Storr",
"category": "peak"
},
{
"name": "Eilean Donan Castle",
"category": "castle",
"about": "On the way, where three lochs meet."
}
]
},
{
"name": "London",
"search": "London, England",
"country": "GB",
"home": true,
"travel": {
"mode": "flight",
"departs": "18:10",
"arrives": "19:45",
"note": "Drive to Inverness and fly home; return the hire car at the airport."
}
}
],
"notes": [
"Hire the car in Edinburgh on day 4.",
"Midges are out from June; bring repellent."
]
}
The same example is at /trip-example.json.
A link instead of pasting
If you can run code, you may also give the person a link that opens the trip directly: https://scrapbookholidays.com/#import= followed by the trip JSON encoded with encodeURIComponent. The app shows the trip and asks the person before replacing their plan. Only offer a link you encoded with code; always include the JSON block as well.