{
  "name": "Save Mastodon bookmarks to Raindrop automatically",
  "nodes": [
    {
      "id": "4e0a9ee0-5cd6-4d27-8cc1-e9171f9d8bd1",
      "name": "Allows manual testing of the workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1540,
        100
      ]
    },
    {
      "id": "f191c5e3-adf2-4e00-9ef2-76872dde02c6",
      "name": "Triggers the workflow on a set interval",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1540,
        300
      ]
    },
    {
      "id": "6f2bc516-7496-418e-bc71-2c83b4d2b9d5",
      "name": "Retrieves the last processed min_id to avoid duplicates",
      "type": "n8n-nodes-base.code",
      "position": [
        -1320,
        200
      ]
    },
    {
      "id": "a119babd-8305-4476-8a84-5285e1890dd8",
      "name": "Makes authenticated request to Mastodon’s bookmarks API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1100,
        200
      ]
    },
    {
      "id": "f0b97bb2-2c35-42df-b0fb-9fecd01498ae",
      "name": "Ensures the response has bookmarks before continuing",
      "type": "n8n-nodes-base.if",
      "position": [
        -880,
        200
      ]
    },
    {
      "id": "a5b393c0-51ab-4422-a2d7-bf098b97b729",
      "name": "Extracts pagination data (like next min_id) from HTTP headers",
      "type": "n8n-nodes-base.code",
      "position": [
        -660,
        200
      ]
    },
    {
      "id": "3117db2a-cc3f-45b8-94df-cb0290f18f87",
      "name": "Saves the new min_id to workflow static data",
      "type": "n8n-nodes-base.code",
      "position": [
        -440,
        300
      ]
    },
    {
      "id": "e7c0cfbb-a0be-47f2-9ff2-26955c0678c4",
      "name": "Splits API response into individual bookmark items",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -440,
        100
      ]
    },
    {
      "id": "813c1f01-2400-4e6c-a51a-1709bb2c27d3",
      "name": "Filters out invalid or incomplete bookmark data",
      "type": "n8n-nodes-base.if",
      "position": [
        -220,
        100
      ]
    },
    {
      "id": "e6620ed1-48c0-44ee-98de-d79bc1c801ab",
      "name": "Saves valid bookmark using post metadata (e.g., title, card.url)",
      "type": "n8n-nodes-base.raindrop",
      "position": [
        0,
        0
      ]
    },
    {
      "id": "1a5d6393-207d-443c-ab76-ffb10a93f143",
      "name": "Saves bookmark using alternate fields if card data is missing",
      "type": "n8n-nodes-base.raindrop",
      "position": [
        0,
        200
      ]
    },
    {
      "id": "19213b61-9f95-445f-8f28-a5de7868988d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1800,
        -380
      ],
      "parameters": {
        "width": 780,
        "height": 400,
        "content": "## 🗂️ Sync Mastodon Bookmarks to Raindrop\n\nThis workflow fetches your latest bookmarks from Mastodon and saves them to Raindrop.io, allowing you to organize and access saved posts outside of Mastodon."
      }
    }
  ],
  "connections": {
    "Allows manual testing of the workflow": {
      "main": [
        [
          {
            "node": "Retrieves the last processed min_id to avoid duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Triggers the workflow on a set interval": {
      "main": [
        [
          {
            "node": "Retrieves the last processed min_id to avoid duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filters out invalid or incomplete bookmark data": {
      "main": [
        [
          {
            "node": "Saves valid bookmark using post metadata (e.g., title, card.url)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Saves bookmark using alternate fields if card data is missing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Splits API response into individual bookmark items": {
      "main": [
        [
          {
            "node": "Filters out invalid or incomplete bookmark data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ensures the response has bookmarks before continuing": {
      "main": [
        [
          {
            "node": "Extracts pagination data (like next min_id) from HTTP headers",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieves the last processed min_id to avoid duplicates": {
      "main": [
        [
          {
            "node": "Makes authenticated request to Mastodon’s bookmarks API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Makes authenticated request to Mastodon’s bookmarks API": {
      "main": [
        [
          {
            "node": "Ensures the response has bookmarks before continuing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extracts pagination data (like next min_id) from HTTP headers": {
      "main": [
        [
          {
            "node": "Splits API response into individual bookmark items",
            "type": "main",
            "index": 0
          },
          {
            "node": "Saves the new min_id to workflow static data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}