The guide
Import spots
Add spots on the Spots page brings in many spots at once: from a Google Maps list, a CSV file or a KML map file, or through your AI agent, and where it is on for your account, photos from your Instagram. The list and the files end in a preview that shows what each row adds or changes, and nothing is saved until you start the import from there. Its first card, Search by name, opens a screen of its own for adding places one by one, with its own page here, Search by name.
Pick the way in under Add spots from, the cards of the dialog; a guide without spots shows the same cards on its Spots page. Each card opens its own screen in Spots, headed with its name, like All spots / CSV file; All spots goes back to the list, except while an import runs. The small app tiles on each card show where its spots come from; point at one for its name.
| Card | Its tiles | Use it for |
|---|---|---|
| Search by name | Search | Places with their pins, details later: see Search by name. |
| Google Maps list | Google Maps | A list you shared from Google Maps, or links to single places. The pins come along. |
| CSV file | Excel, Numbers | All your spots in a spreadsheet: your guide's own download, another sheet, or a Google Takeout export. |
| KML file | Google Earth | A map from Google Earth or Google My Maps, saved as KML or KMZ. |
| Photos from your posts, into spots: you pick photos from your own Instagram posts and put each into a spot of the guide or a new one. It shows only where Instagram import is on for your account. | ||
| Sceniq MCP | Claude, Codex, Cursor | Your AI agent adds the spots for you. |
From a Google Maps list
- In Google Maps, open Saved, pick the list, tap Share and copy the link.
- Paste it into Link to your list. More lists, or links to single places, go one per line.
- Press Read the list. The studio reads every link, which can take a moment for a long list.
| A line holds | What comes in |
|---|---|
| The link to a shared list | Every place on the list: its name, its pin, your note on it, and a link to the place in Google Maps (a dropped pin has none). Its address shows in the preview only. |
| A link to one place | Its pin and its name, read from the link. A name written before the link, as in "Fulberg, https://maps.app.goo.gl/...", is used instead. |
| A name and a geo: link, as in "Fulberg, geo:46.9358,8.5469" | A spot with that name and pin. |
| Coordinates alone, as in "46.9358, 8.5469" | A skipped row, because coordinates carry no name. Its reason shows the line as it should be written, with the line's own coordinates: No name, write the line as "Place name, geo:46.9358,8.5469". Write the name in, then read the list again. |
| Anything else | A skipped row with the reason: "No map link on this line" or "Not a map link". |
A list has to be shared with anyone who has the link. When Google does not hand out its places, the studio says so and points to the CSV export of Google Takeout instead. A map link that is no list comes in as a single place. A list without places reads "No places found in that list.", and a list link the studio cannot read as a list, rarely, "That link is not a Google Maps list".
Notes and unnamed pins
When places on the list carry your notes, a box above the preview, on by default, uses them as descriptions: a short one-line note becomes the Short description, a longer note the text of the spot page, the Long description. Untick it to leave the notes out.
A pin Google has no name for (a dropped pin) takes the first line of its note as its name when that line reads like a name. Otherwise it comes in as Dropped pin, with a Name for this pin field in the preview and the warning "Unnamed in Google Maps; name it here". Type the name there before you import, or the spot keeps that name.
What a list changes
A Google Maps list never overwrites your work. A place that is already a spot of the guide only fills the fields the spot does not have yet, and sets its pin only when it has none. Everything else about the spot stays as it is.
Places never carry property values. While the guide has a property marked required, a new place comes in without that value, with the warning "No Effort yet, set it in Spots" (for a property called Effort). The spot list marks the spot Not ready until it has the value, and its next save in the form needs it.
One import takes at most 500 places, from all the lines together. When the lines hold more, the preview says so, like "One import takes the first 500 of these 537 places.", and how to bring in the rest: read fewer lists or links at a time, or split a long list in Google Maps. When Google sends only part of a long list, the preview says how many of how many places came; split the list in Google Maps and import the parts.
From a CSV file
The screen shows three steps:
- Download your spots: Download spots (CSV) saves every spot of the guide that is not archived, one row each, with its
spot_idand a column for each field and each property. In a guide without spots the step reads Download the template, and Download template (CSV) saves the header and one example row that shows each column's format. The file is named after the guide. - Edit it in Excel, Numbers or Google Sheets: change any cell, and add a row for each new spot. Spots missing from the file stay as they are.
- Upload it: drop the file on the box, or click it to choose the file. The preview opens; nothing is saved yet. A KML or KMZ file dropped here goes to the map file import instead.
The columns
What goes in each column, under the download button, lists every column with its type and what the cell takes. Required columns carry the blue asterisk.
| Column | Type | What goes in it |
|---|---|---|
spot_id | ID | Filled in for your existing spots: the row updates that spot. Leave it empty on new rows. |
title | Short text | The name of the spot. Required. |
categories | Short text | The spot's categories by name, comma separated, like Lake, Photo spot: the first is its map pin. A name the guide's categories do not have is left out, with a warning naming it. An empty cell keeps the spot's categories: they are never cleared. A sheet with a kicker column still imports: its words that name a category, like Waterfalls, become that category. |
short_description | Text | One or two sentences. |
long_description | Long text | The text of the spot page. |
google_maps_link | Link | From Google Maps. A share link sets the pin for you. |
latitude, longitude | Number | The pin, like 46.9358 and 8.5469. Leave both empty to take the pin from the link. |
After them comes one column per property, headed by its name, with the type it has on Properties:
| Property type | What the cell takes |
|---|---|
| Short text | Short text. |
| Number | A number, in the property's unit when it has one. |
| Single select | One of the property's options, by name; the list names them. |
| Multi-select | Any of its options, by name, with a vertical bar between several. |
| Date | A date as YYYY-MM-DD. |
| Own page | Longer text, opened as its own page from the spot. |
How the file is read
- The file can be .csv, .tsv or .txt, with commas, semicolons or tabs between the cells. An Excel, Numbers or OpenDocument file is refused: save it as CSV first (File, then Export or Download, then CSV). A very large file is refused too.
- Columns are found by their header, with case, accents and punctuation ignored: the template's headers, a property's name or key, then common names like name, place, notes, url, link, lat, lng or coordinates. Columns nothing claims are listed above the preview after "Not imported:".
- The template's example row, the one whose title starts with Example:, is skipped.
- A file with more than 500 rows is refused: split it and import the parts. A file without rows reads "No spots found in that file. Keep the header row and add one spot per row."
- Google Maps share links in the link column are followed for their pins while the file is read.
- Numbers may carry thousands separators, a decimal comma and a unit: 1,240 and 1'240 m read as 1240, and 2,5 as 2.5. Dates read as YYYY-MM-DD, DD.MM.YYYY or DD/MM/YYYY, and options by their name, several apart with a vertical bar, a semicolon or a comma. A value that does not read leaves that property as it is, and the row says why.
- A cell a spreadsheet would run as a formula starts with an apostrophe in the download; the import drops the apostrophe again.
Your own file, or another sheet
A file with the template's columns, like the one you downloaded, is the truth for every column it has:
- a changed cell changes the spot, and an empty cell clears that field on it (an empty required property skips the row instead, as the spot's form would not save it either);
- a new title renames the spot when the row has its
spot_id; a row that found its spot by name keeps the spot's spelling; - the pin is set or moved, never removed: an empty
latitudeandlongitudekeep it.
Any other sheet only fills gaps, like a Google Maps list: a spot already in the guide gets the fields it does not have yet, and the preview says so. An empty cell keeps what the spot has, for a required property too. Google Takeout's export of a saved list is recognized; it carries no pins, so share the list and import its link to get them.
Required properties
From any file, a new row without a value for a property marked required still adds its spot, with the warning "No Effort yet, set it in Spots"; the spot list marks it Not ready until it has the value. A row that changes the property values of a spot needs the required ones, as a save in the spot's form does: when the spot has no Effort and the row brings none, the row is skipped with "Effort is required". A spot that hides its properties needs none.
From a KML file
A KML file is a map saved as a file; a KMZ is a KML packed into one file, often with photos inside. Google Earth, Google My Maps and most map apps export one:
- in Google My Maps, open the map's menu and choose Export to KML/KMZ;
- in Google Earth, open the project's menu and choose Export as KML file.
Drop the file on Map file, or click the box to choose it. The preview opens; nothing is saved yet. A CSV file dropped here goes to the CSV import instead.
What a map file brings
Only pins become spots. For each pin:
| From the pin | Becomes |
|---|---|
| Its name | The title. When most of the file's names carry list numbers, like 12. Seealpsee, the numbers go. |
| Its location | The pin. |
| Its description | The short description or the text of the spot page, with Use the descriptions from the file on. |
| Its folder (a My Maps layer, a Google Earth folder) | Its category, when the folder's name names one, like Lakes or Parking, with Use the folder names as categories on. |
| The place in Google Maps | The spot's map link: the place Google Earth saved the pin from, or else the first Google Maps link to a place in its description. |
| A data field named like a property | That property's value, read the way a sheet cell is. |
In the preview, the line under a new pin's title shows its folder, or its address.
A description written as a web page, the way Google Earth writes them, comes in as plain text, line by line: a link keeps its address in brackets, the first Google Maps link to a place becomes the spot's map link instead, and pictures drop out. A description that only repeats the name is left out.
A pin without a real name (Untitled placemark, Dropped pin, or only its coordinates) takes the place's name from its Google Maps link when the link spells it. Otherwise it comes in as Dropped pin, with a Name for this pin field and the warning "Unnamed in the file; name it here".
Lines, areas and entries without a location are left out. The line above the preview counts them, like "Only pins become spots; left out: 2 lines and 1 area.", and says when the file holds photos: they are not imported.
The two switches
Above the preview, both on by default:
| Switch | Shows when | What it does |
|---|---|---|
| Use the descriptions from the file | A pin has a description. | A one-line description becomes the Short description, a longer one the text of the spot page, the Long description. Off, the descriptions stay out. |
| Use the folder names as categories | A folder's name names a category, like Lakes, Viewpoints or Parking. | The pins in those folders get that category (see Categories); the line under the switch names the folders. Other folders give no category. Off, no pin gets one from its folder. |
What a map file changes
Like a Google Maps list, a map file only fills gaps: "Spots already in the guide only get fields they do not have yet." A pin that is already a spot gets its pin only when the spot has none. While the guide has a property marked required, a new pin without a data field for it comes in without the value, with the warning "No Effort yet, set it in Spots".
Files the studio refuses
| Message | Meaning |
|---|---|
| At most 500 places per import. Export the map in parts, a layer or folder at a time. | The file holds more pins than one import takes. |
| The map in this file is larger than 20 MB. | The map itself is too large; export it in parts. A very large file is refused before it is opened. |
| This file only links to a map online. Export it again without the network link option. | The export points to the map instead of holding it. |
| No pins in this file. Only pins become spots, not lines or areas. | The file holds only lines or areas. |
| No places found in that file. | The file holds no places at all. |
| Could not open this KMZ. Export the map as KML and try again. | The KMZ could not be unpacked. A KMZ is read for its KML, the one at its top level first, the way Google Earth opens it. |
| This KMZ holds no KML file. | The KMZ has no map in it. |
| That is not a KML file. Export the map as KML or KMZ and try again. | The file is something else. |
From Instagram
The Instagram card brings photos, not places: you pick photos from your own Instagram posts and put each one into a spot of the guide, or into a new spot made for it. Instagram never shares where a photo was taken, so nothing places a photo on the map for you.
Connect your account
The first time, the card shows Connect your Instagram. Connect Instagram opens Instagram's own sign-in: log in there and allow Sceniq to read your profile and your posts. Sceniq can read them and nothing else; it cannot post, comment or send messages.
It works for Creator and Business accounts, Instagram's professional accounts. Instagram does not let other apps read a personal account; you can switch to a professional account for free in Instagram's settings.
Instagram then sends you back: Connecting Instagram shows for a moment, then the guide's Spots page opens on the Instagram screen with your photos. When you connected from a spot's Find photos, that spot opens instead, with Find photos on your photos. Not moving? Back to the guide takes you there by hand. When you cancel on Instagram, the page reads "Instagram was not connected." and Back to the guide returns you.
The connection belongs to your creator account: the next import starts on your photos without signing in again. It stays while you import with it; left unused long enough, it ends, and the card asks you to connect again. Disconnect, beside your account name, ends it at once: Sceniq forgets its key to your account. Removing Sceniq in Instagram's settings (Apps and websites) does the same.
Choose photos
Your photos show newest first, every photo of a carousel on a tile of its own, so you pick exactly the ones you want. Show more loads older ones, a few dozen at a time. Screen readers call the grid Your photos. Click a photo to pick it, and click it again to drop it. Videos and Reels do not show, since only photos go into spots.
In guide marks a photo the guide holds already, from an earlier import.
Import photos takes the photos you picked to the next step and says how many, like Import 1 photo or Import 12 photos. Nothing is stored yet: first you choose where each photo goes.
Choose the spots
Each photo you picked is a row, in the order of your posts, with the post's date and the first line of its caption under it, to remind you where it was taken.
The spot picker on each row starts with New spot, then lists the spots of the guide; type in its search box to find one. New spot opens a field for the new spot's name, Name of the new spot: type it and press Enter. Typing a name in the search box that is no spot yet does the same in one go: the list offers it, like Add "Seealpsee". Either way the photo goes to a new spot of that name, and the spot is listed with the others in every row, so you name a place once and pick it for all its photos. Each photo starts where its post's caption points:
- the spot named after a pin emoji in the caption, without the region after a comma: a caption line "Caumasee, Flims" behind a pin picks Caumasee;
- else a spot of the guide the caption names;
- else a new spot named after the pinned place, or Choose a spot when the caption names no place.
Photos picked for the same new spot all go into it, and a new name that is already a spot of the guide goes into that spot. A photo without a spot stays out of the import, and the footer says so, like 1 photo has no spot yet.
The cross at the end of a row, Leave this photo out, takes the photo out of the import. A photo the guide holds already says In this guide already: it still goes where you choose, and a spot never takes the same photo twice. Back to photos returns to your photos, and the rows you set up stay as they are.
While the guide has a property marked required, a new spot comes in without its value, as with every import: the row says so, like "No Effort yet, set it in Spots" for a property called Effort, and the spot list marks the spot not ready until you set it in its form.
Importing the photos
The button says how many photos go, like Add 1 photo or Add 12 photos, and beside it to how many spots, like to 1 spot or to 4 spots, 2 of them new. While no photo has a spot it reads Add photos and waits. During the import the rows hold still.
New spots are made first, each checked by the same rules as a spot you save in its form. Then the photos come in, with a count like 4 of 15. Each photo is read from Instagram again and stored like a photo you upload: sized for the web, its file metadata removed, and with the address of its Instagram post kept with it, which is how the import knows the photos a guide holds. A photo its spot holds already is not added twice. On a live guide, buyers see the new photos and spots once you publish them.
When it ends, the screen says what happened, like 12 photos added, 2 new spots, how many photos were in their spots already, and anything that failed with its reason. New spots come without a pin: the No pin filter on Spots lists them. Done goes back to the spot list; Import more goes back to your photos.
With the Sceniq MCP
The Sceniq MCP card hands the job to your AI agent: Claude, Codex or Cursor, working on the guide over the Sceniq MCP. There is no preview here: the agent writes the spots itself.
- Connect your agent once in Settings: see AI agents and API keys.
- Pick the job, Add new spots or Complete my spots. The prompt below changes with it.
- Copy the prompt, send it to your agent, and paste your Google Maps links and notes where the prompt says.
The prompt names this guide and its properties. It tells the agent to use only what you give it and what the links show, to leave a field empty rather than guess, and not to publish; Complete my spots also tells it never to change what you wrote. The prompt box shows the whole prompt. The agent's spots and edits show up in the spot list as it works; the link under the prompt opens the developer docs, the API reference the agent works from.
How rows find their spots
Before it adds a spot, the import looks for it in the guide, so a spot you already have is updated rather than added twice. Each row looks in this order:
- By
spot_id: the row updates that spot. Aspot_idthe guide does not have, from another guide's file for example, makes the row a new spot with the warning "Its spot_id is not in this guide, so it becomes a new spot"; the row does not look for a spot by name or place. When the guide has a spot of that name, a second warning says so, like "This guide already has a spot called Fulberg": untick the row, or empty itsspot_idto update that spot instead. - By name, with case, accents and punctuation ignored. When several spots share the name, a place from a list or a map file (or a row with a pin from another sheet) takes the nearest of them if it lies close by; otherwise the row is skipped until you keep the
spot_idcolumn to pick one. - By place, for lists, links, map files and other sheets: a place right next to a spot, or close by with a distinctive word in both names (Oeschinen Lake and Oeschinensee), is that spot.
Only a row that finds no spot this way becomes a new spot. Check the What happens column before you import.
Archived spots take part: a row that finds one updates it, and it stays archived.
Within one import:
- two places of a list or a map file that find the same spot (a pass and its viewpoint) update it once, and the second shows as Unchanged;
- two rows of your own file for one spot conflict: the second is skipped, "Another row already updates this spot";
- a new name that comes twice, close together, is added once: "Listed twice; only the first one is added".
The preview
At the top: the list's name (Your list when it has none), the number of lists, Your links for single places, the map's name, or the file's name, with how many rows were read, like 1 place or 24 places. Notes about the file show under it. Start over goes back to the first step. On a published guide, a line reminds you that buyers see the imported spots and changes once you publish them.
The chips filter the rows, each with its count (screen readers call the group Show rows). A chip with no rows hides.
| Filter | Rows |
|---|---|
| All | Every row. |
| New | Rows that add a spot. |
| Updates | Rows that change a spot of the guide. |
| Unchanged | Rows that found their spot and change nothing on it. |
| Skipped | Rows that cannot be imported, each with the reason. |
The table:
| Column | Shows |
|---|---|
| The tick box | On for every row that adds or updates a spot; untick a row to leave it out. The box in the header, Import every row, ticks or unticks them all. |
| Spot | The title, or No title. Under it, "In the guide as" and the spot's name when the row found a spot spelled differently; for a new spot, the place's address, or a map pin's folder. An unnamed pin has its Name for this pin field here. |
| Pin | The pin's coordinates, or No pin. Hidden on a narrow screen. |
| What happens | New; Update with up to three changed fields, each with its old and new value (empty for a blank one) and a count of the rest; Already in the guide for an unchanged row; or in red why a row is skipped. Warnings show in amber under it. |
Messages in the rows
| Message | Meaning |
|---|---|
| No title | The row has no name. Skipped. |
| Effort is required | The row changes a spot's property values but leaves Effort, a property marked required, without a value. Skipped. |
| No Effort yet, set it in Spots | A new spot comes in without a value for Effort, a property marked required. The spot list marks it Not ready until you set it in the spot's form. |
| No pin yet, set it in Spots | The spot comes in without a pin; set it in its form. |
| No pin found in this link, set it in Spots | The share link led to no pin. The spot comes in without one. |
| Unnamed in Google Maps; name it here | A dropped pin from a list: type a name in its field. |
| Unnamed in the file; name it here | A pin from a map file without a real name: type a name in its field. |
| The link is not a map link, left out | The link cell holds no map link. The rest of the row comes in. |
| Latitude and longitude are not valid numbers | The pin cells do not read. Fix them, or leave both empty. |
| Effort: "steep" is not a number | A property value does not read; the property stays as it is. Options and dates say so the same way. |
| Its spot_id is not in this guide, so it becomes a new spot | The row carries a spot_id this guide does not have, and becomes a new spot: see How rows find their spots. |
| This guide already has a spot called Fulberg | Shown with the warning above: the new spot would share its name with a spot of the guide. |
| 2 spots in this guide are called Fulberg; keep the spot_id column to pick one | The name fits more than one spot. Skipped. |
| Another row already updates this spot | Two rows of the file for one spot. Skipped. |
| Listed twice; only the first one is added | Skipped. |
Importing
The button under the table says what it will do, like Add 12 and update 3; with no row ticked it reads Nothing to import. The rows go in one after another, with a count like 4 of 15 beside the button. Each spot is checked by the same rules as a spot you save in its form, except that a new spot may come without its required property values: a row the server refuses is listed at the end with its reason (under Untitled when it has no title), and the other rows are saved.
When it ends, the screen says what happened, like 12 spots added, 3 spots updated, or Nothing was imported. Done goes back to the spot list; Import more starts a new import.
What an import leaves to you
- Photos: a list, a file or an agent brings none, not even the photos of a map file; Instagram is the one source of photos. New spots show No photos in the list; add their photos in each spot's form or from Instagram. Captions and credits are then edited on Media.
- Everything beyond what the source holds: Getting there, the spot's links, Visibility, routes and places stay as they are.
- Removing spots: spots missing from the file or the list stay in the guide. Archive or delete them in their form, see Archive or delete.
- Buyers: on a live guide, imported spots and changes reach buyers when you publish. See Preview and publish.
Checking the result
Back on the list, the filters find what the import left open: Not ready for anything missing, No photos and No pin. Open a spot to add its photos, set its pin or fill in a required property. To look over every spot at once, download the CSV again.