Docs/Content/Content creation

Content creation

What you need to create an audio tour

Before diving into JSON files, let's talk about what you actually need to create an audio tour. Spoiler: it's probably less than you think.

The essential ingredients

Every audio tour needs three things:

Audio Files

MP3 or M4A recordings for each stop

Images

Photos to accompany each stop

Tour data

A JSON file describing your tour

That's it. Everything else—themes, multiple languages, offline mode—is optional polish.

Audio files

Your audio content is the heart of the tour. Here's what works:

Supported formats

FormatExtensionRecommendation
MP3.mp3Universal support, good compression
AAC.m4aBetter quality at same file size
WAV.wavSupported but large files

We recommend M4A (AAC) for the best balance of quality and file size. Most podcast hosting services and audio editors support it.

Tour data (JSON)

The tour data file tells AudioGuideKit about your tour structure. It's a JSON file containing:

  • Tour title and description
  • List of stops with their content
  • Settings like theme and offline mode

Example structure

{
  "id": "barcelona",
  "language": "en",
  "title": "Barcelona Walking Tour",
  "description": "Discover Gothic Quarter's hidden gems",
  "totalDuration": "45 mins",
  "totalStops": 5,
  "image": "https://images.unsplash.com/photo-barcelona...",
  "stops": [
    {
      "id": "1",
      "type": "audio",
      "title": "Welcome to Barcelona",
      "duration": "3 min audio",
      "image": "https://...",
      "audioFile": "https://..."
    }
  ]
}

We'll cover the complete structure in Creating a Guide.

File organization

Here's how your content files should be organized:

src/data/tour/
├── metadata.json     # Shared settings (theme, offline mode)
├── en.json           # English tour content
├── es.json           # Spanish tour content (optional)
└── de.json           # German tour content (optional)

Tour files also need to be copied to src/data/tour/ for build-time discovery. Both directories must stay in sync. This is a technical requirement of how the app bundles content.