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

  1. 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.

  2. Talk it through with your AI until the plan is right.

  3. 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:

  1. 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.
  2. 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.
  3. 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:

The trip

FieldRequiredWhat it is
formatyesAlways "scrapbook-holidays-trip".
versionyesAlways 1.
languageyesLanguage of all the text, as a BCP 47 tag such as "en-GB", "vi" or "de".
titleyesA short name for the trip, up to 120 characters.
subtitleOne line under the title.
startyesThe 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.
stopsyesThe stops in order, 1 to 60 of them.
notesUp to 20 short tips for the whole trip, as strings.

Each stop

FieldRequiredWhat it is
nameyesThe place as the traveller would say it, such as "Edinburgh".
searchWhat to search a map for, if the name alone is ambiguous, such as "Perth, Scotland". Defaults to the name.
countryISO 3166-1 two-letter country code, such as "GB". Strongly recommended.
hometrue for the traveller’s home when the trip leaves from it (first stop) or returns to it (last stop). Home has no nights.
nightsyesNights spent here, a whole number from 0 to 60. 0 means passing through. Leave it out for home.
shortNameA short label for the timeline, up to 40 characters, such as "Skye".
stayWhere to stay, such as "Stay in the Old Town".
aboutA few sentences about the place and why it is on the trip, up to 1500 characters.
localNameThe name in the local language when it differs, such as "Dùn Èideann".
travelHow the traveller gets here from the previous stop. See below. Not on the first stop.
mustSeesUp to 25 sights at or near this stop, in the order to visit them. See below.
lat, lngOptional coordinates in decimal degrees. Only used if the app’s own search finds nothing.

Travel to a stop

FieldRequiredWhat it is
modeyesOne 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.
departsLocal departure time at the previous stop, HH:MM on a 24-hour clock.
arrivesLocal arrival time here, HH:MM. With both times, the app works out an overnight arrival from the two time zones itself.
daysLaterOnly without both times: the number of days after departure that the traveller arrives, from -1 to 3. Usually 0, which is the default.
durationHow long it takes in words, such as "about 3 hours".
roadsRoad numbers along the way, such as ["M9", "A82"].
noteAnything useful: the operator, booking advice, a stop on the way.

Each must-see

FieldRequiredWhat it is
nameyesThe sight’s usual name, such as "Edinburgh Castle".
categoryyesOne 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).
searchWhat to search a map for, if the name alone is ambiguous. Defaults to the name.
aboutA sentence or two on why it is worth seeing.
localNameThe name in the local language when it differs.
lat, lngOptional 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.