{
  "nodes": [
    {
      "ID": "guide",
      "name": "Start here",
      "type": "Guide",
      "properties": {},
      "description": "This is a fill-in template for a podcast: the show, its seasons and episodes, the people who host and appear in them, the chapters each episode is divided into, the soundbites worth sharing and the transcripts that go with them. The nodes around this one are samples, one of each type. Edit them, or replace them with your own.\n\nHow to add your own node:\n1) Right-click the empty canvas where the node should go and choose Create node here. Shortcut: Cmd/Ctrl-click the empty canvas.\n2) In Add new node, enter a unique ID, a Name and a Description, and pick a Type from the list below. The ID cannot be changed later.\n3) Fill in the fields that appear for that type, then confirm. Drag the new node next to the nodes it belongs with.\n4) To link two nodes, Cmd/Ctrl-click the first node, then the second. In Add new link, enter a short name such as \"is about\" in Name1. Add Name2 if it reads differently from the other side, such as \"is covered in\". Set Direction 0 (no arrow), like the sample links, and confirm.\n5) Click Save in the top toolbar after each change and keep the address it shows. A reload loses anything not saved.\n\nTypes in this template:\n- Show: the podcast itself, what it covers and who makes it.\n- Season: a group of episodes released as one run.\n- Episode: one episode, with its release date, length and audio file.\n- Person: a host, guest or anyone else who takes part.\n- Chapter: a titled part of an episode, starting at a given time.\n- Soundbite: a short passage worth sharing or quoting, with its start time and length.\n- Transcript: the written text of an episode, as a file or web page.\n\nEvery date (YYYY-MM-DD) and every number needs a value; text and list fields may stay empty. Show type is Episodic or Serial; Episode type is Full, Trailer or Bonus; Episode number is 0 for an episode the show does not number. Duration is the length as shown (48:15) and Duration seconds the same length in seconds (2895). For a Chapter or Soundbite, Timestamp is the start time as shown (12:30) and Seconds the same time in seconds (750); a Soundbite usually lasts 15 to 120 seconds. Person Role is Host, Co-host, Guest or Producer. Explicit is ticked for episodes with adult content.\n\nDelete a sample only once one of your own nodes has its type: a type that no node uses is dropped at Save.",
      "size": 3,
      "position": {
        "x": 0,
        "y": 0,
        "z": 0
      }
    },
    {
      "ID": "show-1",
      "name": "Allotment Hour",
      "type": "Show",
      "properties": {
        "URL": "https://www.example.org/allotment-hour",
        "Feed URL": "https://feeds.example.org/allotment-hour.xml",
        "Publisher": "Green Row Audio",
        "Language": "English",
        "Category": "Home and Garden",
        "Show type": "Episodic"
      },
      "description": "A fortnightly gardening podcast recorded on a shared allotment site, where two plot holders talk through what is growing, what is failing and why. Each episode takes one practical question from listeners, from slugs to seed saving, and brings in a grower or scientist who can answer it properly, so beginners leave with something to try at the weekend.",
      "size": 2.4,
      "position": {
        "x": 10,
        "y": 0,
        "z": 0
      }
    },
    {
      "ID": "season-1",
      "name": "Season 3: Soil First",
      "type": "Season",
      "properties": {
        "Number": 3
      },
      "description": "The third season turns away from plants and looks underground, on the idea that most problems on a plot start with the soil. Its ten episodes cover compost, mulch, worms, drainage and soil testing, released through the autumn and winter while beds are resting.",
      "size": [6, 1.4],
      "position": {
        "x": 18.5,
        "y": 0,
        "z": 0
      }
    },
    {
      "ID": "episode-1",
      "name": "Why Your Compost Heap Stays Cold",
      "type": "Episode",
      "properties": {
        "URL": "https://www.example.org/allotment-hour/s3e4-compost-heap",
        "Audio URL": "https://media.example.org/allotment-hour/s3e4.mp3",
        "GUID": "allotment-hour-s3e4",
        "Published": "2026-10-07",
        "Episode number": 4,
        "Episode type": "Full",
        "Duration": "48:15",
        "Duration seconds": 2895,
        "Explicit": false
      },
      "description": "A listener's compost heap has sat cold and wet for a whole summer, and the hosts set out to find out why. With a soil ecologist as guest they work through the balance of green and brown material, the air a heap needs, the right size and the effect of turning, and end with a weekend rescue plan that gets a stalled heap warm again within two weeks.",
      "size": 2,
      "position": {
        "x": 27,
        "y": 0,
        "z": 0
      }
    },
    {
      "ID": "person-1",
      "name": "Elena Marsh",
      "type": "Person",
      "properties": {
        "Role": "Guest",
        "URL": "https://www.example.org/elena-marsh"
      },
      "description": "Elena Marsh is a soil ecologist who studies how small organisms break down garden waste, and she runs compost workshops for community gardens in her spare time. On the show she explains the biology behind each tip in plain words and keeps returning to one rule: feed the microbes and the heap looks after itself.",
      "size": 1.5,
      "position": {
        "x": 33.364,
        "y": -6.364,
        "z": 0
      }
    },
    {
      "ID": "chapter-1",
      "name": "Turning the heap",
      "type": "Chapter",
      "properties": {
        "Timestamp": "24:10",
        "Seconds": 1450,
        "URL": "https://www.example.org/allotment-hour/turning-guide"
      },
      "description": "The part of the episode on turning: why oxygen matters to the microbes that heat a heap, how often to turn it in summer and in winter, and how to tell from smell alone that a heap has gone short of air. The guest also explains when a heap is better left alone.",
      "size": 1.5,
      "position": {
        "x": 21.838,
        "y": 7.372,
        "z": 0
      }
    },
    {
      "ID": "soundbite-1",
      "name": "One brown for every green",
      "type": "Soundbite",
      "properties": {
        "Timestamp": "16:42",
        "Seconds": 1002,
        "Duration seconds": 38
      },
      "description": "The guest's short rule for a heap that works: add one bucket of dry brown material, such as cardboard, straw or autumn leaves, for every bucket of fresh green waste. Too much green turns a heap wet and smelly, too much brown leaves it dry and cold, and keeping the two in balance does more than any additive sold for the purpose.",
      "size": [6, 1.4],
      "position": {
        "x": 37,
        "y": 0,
        "z": 0
      }
    },
    {
      "ID": "transcript-1",
      "name": "Transcript of Why Your Compost Heap Stays Cold",
      "type": "Transcript",
      "properties": {
        "URL": "https://www.example.org/allotment-hour/s3e4-transcript.vtt",
        "Format": "VTT",
        "Language": "English"
      },
      "description": "The full written text of the episode with speaker names and time codes, published as a captions file next to the audio. It lets listeners search for the moment a tip was given and read the guest's explanations at their own pace.",
      "size": 1.5,
      "position": {
        "x": 34.071,
        "y": 8.426,
        "z": 0
      }
    }
  ],
  "links": [
    {
      "node1": "guide",
      "node2": "show-1",
      "name1": "is explained by",
      "name2": "explains",
      "direction": 0
    },
    {
      "node1": "show-1",
      "node2": "season-1",
      "name1": "is a season of",
      "name2": "has season",
      "direction": 0
    },
    {
      "node1": "season-1",
      "node2": "episode-1",
      "name1": "is in",
      "name2": "contains",
      "direction": 0
    },
    {
      "node1": "person-1",
      "node2": "episode-1",
      "name1": "features",
      "name2": "appears in",
      "direction": 0
    },
    {
      "node1": "person-1",
      "node2": "soundbite-1",
      "name1": "is said by",
      "name2": "says",
      "direction": 0
    },
    {
      "node1": "episode-1",
      "node2": "chapter-1",
      "name1": "is a chapter of",
      "name2": "has chapter",
      "direction": 0
    },
    {
      "node1": "episode-1",
      "node2": "soundbite-1",
      "name1": "is taken from",
      "name2": "has soundbite",
      "direction": 0
    },
    {
      "node1": "episode-1",
      "node2": "transcript-1",
      "name1": "is the transcript of",
      "name2": "has transcript",
      "direction": 0
    }
  ],
  "visuals": [
    {
      "nodeType": "Guide",
      "shape": "star",
      "borderColor": "#e8684a"
    },
    {
      "nodeType": "Show",
      "shape": "circle",
      "borderColor": "#7262fd"
    },
    {
      "nodeType": "Season",
      "shape": "rectangle",
      "borderColor": "#008685"
    },
    {
      "nodeType": "Episode",
      "shape": "hex",
      "borderColor": "#5b8ff9"
    },
    {
      "nodeType": "Person",
      "shape": "hex[7]",
      "borderColor": "#9661bc"
    },
    {
      "nodeType": "Chapter",
      "shape": "hex[6]",
      "borderColor": "#65789b"
    },
    {
      "nodeType": "Soundbite",
      "shape": "rectangle",
      "borderColor": "#f6bd16"
    },
    {
      "nodeType": "Transcript",
      "shape": "hex[9]",
      "borderColor": "#78d3f8"
    }
  ],
  "dataTypes": {
    "URL": "string",
    "Feed URL": "string",
    "Publisher": "string",
    "Language": "typelist",
    "Category": "typelist",
    "Show type": "typelist",
    "Number": "int",
    "Audio URL": "string",
    "GUID": "string",
    "Published": "datetime",
    "Episode number": "int",
    "Episode type": "typelist",
    "Duration": "string",
    "Duration seconds": "int",
    "Explicit": "bool",
    "Role": "typelist",
    "Timestamp": "string",
    "Seconds": "int",
    "Format": "typelist"
  },
  "detailView": [
    {
      "nodeType": "*",
      "own": "*",
      "others": []
    }
  ]
}
