{
  "slug": "opml-converter",
  "name": "gizza-ai/opml-converter",
  "version": "0.1.0",
  "title": "OPML Converter — OPML ⇄ JSON ⇄ CSV — gizza.ai",
  "description": "Convert OPML subscription files (podcast/RSS exports) to and from JSON and CSV in any direction — in your browser. Folders round-trip; nothing is uploaded.",
  "tags": [
    "opml to json",
    "opml to csv",
    "json to opml",
    "csv to opml",
    "opml converter",
    "rss opml",
    "podcast opml export"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/opml-converter/",
    "markdown": "https://gizza.ai/tools/opml-converter/index.md",
    "descriptor": "https://gizza.ai/tools/opml-converter/tool.json",
    "deep_link_example": "https://gizza.ai/tools/opml-converter/?input=%3Copml%20version%3D%222.0%22%3E%3Cbody%3E%3Coutline%20type%3D%22rss%22%20text%3D%22Example%22%20xmlUrl%3D%22https%3A%2F%2Fexample.com%2Frss%22%2F%3E%3C%2Fbody%3E%3C%2Fopml%3E&from=opml&to=json&pretty=true"
  },
  "cli": "gizza tool opml-converter '<opml version=\"2.0\"><body><outline type=\"rss\" text=\"Example\" xmlUrl=\"https://example.com/rss\"/></body></opml>' 'from=opml' 'to=json'",
  "tool": {
    "description": "Convert OPML subscription files (podcast/RSS feed exports) between OPML, JSON, and CSV in any direction. Specify from and to (opml/json/csv). OPML ⇄ JSON faithfully round-trips the whole outline tree (each <outline> becomes a JSON object of its attributes — text, type, xmlUrl, htmlUrl — plus a nested \"outlines\" array). CSV is the flat feed list: one row per feed with a category column recording the folder path, so folders round-trip back to nested OPML/JSON. pretty indents OPML/JSON output (default true). Runs locally; nothing is uploaded.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "from": {
          "default": "opml",
          "description": "Source format of the input.",
          "enum": [
            "opml",
            "json",
            "csv"
          ],
          "type": "string"
        },
        "input": {
          "description": "The OPML, JSON, or CSV data to convert. OPML is the XML outline format used by podcast/RSS subscription exports; JSON is the faithful tree {\"title\":…,\"outlines\":[…]}; CSV is the flat feed list with a category column.",
          "type": "string"
        },
        "pretty": {
          "default": true,
          "description": "Indent the OPML/JSON output. Set false for compact single-line output (ignored for CSV). Default true.",
          "type": "boolean"
        },
        "to": {
          "default": "json",
          "description": "Target format to convert to.",
          "enum": [
            "opml",
            "json",
            "csv"
          ],
          "type": "string"
        }
      },
      "required": [
        "input",
        "from",
        "to"
      ],
      "type": "object"
    }
  }
}