AutomationFlowsGeneral › Tiny Tiny RSS Starred to Wallabag

Tiny Tiny RSS Starred to Wallabag

Original n8n title: Tiny Tiny RSS New Stared Article Saved to Wallabag

Tiny Tiny Rss New Stared Article Saved To Wallabag. Uses manualTrigger, httpRequest, noOp. Event-driven trigger; 10 nodes.

Event trigger★★★★☆ complexity10 nodesHTTP Request
General Trigger: Event Nodes: 10 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        120,
        250
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1280,
        380
      ],
      "parameters": {
        "url": "=http://{HERE-YOUR-WALLABAG-HOST}/api/entries.json",
        "options": {},
        "requestMethod": "POST",
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "url",
              "value": "={{$json[\"url\"]}}"
            }
          ]
        },
        "queryParametersUi": {
          "parameter": []
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Authorization",
              "value": "=Bearer {{$json[\"access_token\"]}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        120,
        400
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes",
              "value": 10
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Function",
      "type": "n8n-nodes-base.function",
      "position": [
        900,
        470
      ],
      "parameters": {
        "functionCode": "// Get the global workflow static data\nconst staticData = getWorkflowStaticData('global')\n\n// Access its data\nconst lastStarRssId = staticData.lastStarRssId\n\nlet list = []\n\nfor (const item of items[0].json.content){\n  let currentId = item.id\n  if(currentId == lastStarRssId) break;\n  list.push({'json':{\n    'id': currentId,\n    'lastId': lastStarRssId,\n    'url': item.link,\n    'tags': item.tags,\n    'access_token': items[1].json.access_token\n  }})\n}\n\n\n// Get the last ID from Rss Feed\nlet currentStarRssId = items[0].json.content[0].id\n\n// TODO: make a loop to get all the items beyond the last saved id\nif(!lastStarRssId || currentStarRssId != lastStarRssId)\n{  \n  // Update its data\n  staticData.lastStarRssId = currentStarRssId;\n  \n}\nelse { list = [{'json':{ 'id': 'Nan', 'lastId': staticData.lastStarRssId }}] }\nreturn list;\n\n/*return [{'json':{'url': items[0].json.content.pop(), 'wallabag':items[1].json}}]*/"
      },
      "typeVersion": 1
    },
    {
      "name": "IF",
      "type": "n8n-nodes-base.if",
      "position": [
        1100,
        470
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$node[\"Function\"].json[\"id\"]}}",
              "value2": "NaN",
              "operation": "notEqual"
            }
          ],
          "boolean": []
        }
      },
      "typeVersion": 1
    },
    {
      "name": "NoOp",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1290,
        570
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Auth Wallabag",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        490,
        590
      ],
      "parameters": {
        "url": "http://{HERE-YOUR-WALLABAG-HOST}/oauth/v2/token",
        "options": {},
        "requestMethod": "POST",
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "grant_type",
              "value": "password"
            },
            {
              "name": "client_id",
              "value": "{HERE-YOUR-CLIENT_ID}"
            },
            {
              "name": "client_secret",
              "value": "{HERE-YOUR-CLIENT_SECRET}"
            },
            {
              "name": "username",
              "value": "{HERE-YOUR-USERNAME}"
            },
            {
              "name": "password",
              "value": "{HERE-YOUR-PASSWORD}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        710,
        470
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Get stared articles",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        490,
        400
      ],
      "parameters": {
        "url": "http://{HERE-YOUR-TTRSS-HOST}/tt-rss/api/",
        "options": {},
        "requestMethod": "POST",
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "sid",
              "value": "={{$json[\"content\"][\"session_id\"]}}"
            },
            {
              "name": "op",
              "value": "getHeadLines"
            },
            {
              "name": "feed_id",
              "value": "-1"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Auth TTRss",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        320,
        400
      ],
      "parameters": {
        "url": "http://{HERE-YOUR-TTRSS-HOST}/tt-rss/api/",
        "options": {},
        "requestMethod": "POST",
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "op",
              "value": "login"
            },
            {
              "name": "user",
              "value": "{HERE-YOUR-API-USER}"
            },
            {
              "name": "password",
              "value": "{HERE-YOUR-API-SECRET}"
            }
          ]
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "IF": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "NoOp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cron": {
      "main": [
        [
          {
            "node": "Auth TTRss",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Function",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Function": {
      "main": [
        [
          {
            "node": "IF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Auth TTRss": {
      "main": [
        [
          {
            "node": "Get stared articles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Auth Wallabag": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Get stared articles": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "Auth TTRss",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

Effortlessly preserve articles you star in Tiny Tiny RSS by automatically saving them to Wallabag for offline reading and organised storage, ensuring you never lose access to important content amid busy schedules. This workflow suits avid readers and researchers who rely on RSS feeds for news and insights but need a reliable archive beyond browser tabs. The key step involves detecting new starred articles via HTTP requests to Tiny Tiny RSS, then securely pushing them to Wallabag's API for seamless integration.

Use this workflow when managing high-volume RSS subscriptions and wanting instant backups without manual intervention, particularly for time-sensitive articles. Avoid it if your Tiny Tiny RSS setup lacks API access or if you prefer lighter tools without scheduling needs. Common variations include adding email notifications for saved articles or filtering by specific RSS feeds before archiving.

About this workflow

Tiny Tiny Rss New Stared Article Saved To Wallabag. Uses manualTrigger, httpRequest, noOp. Event-driven trigger; 10 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

Create Screenshots With Uproc Save To Dropbox And Send By Email. Uses manualTrigger, functionItem, awsSes, uproc. Event-driven trigger; 10 nodes.

Function Item, AWS SES, Uproc +2
General

Backup N8N Workflows To Google Drive. Uses manualTrigger, moveBinaryData, httpRequest, functionItem. Event-driven trigger; 9 nodes.

Move Binary Data, HTTP Request, Function Item +1
General

Merge Binary Objects On Multiple Items Into A Single Item. Uses manualTrigger, httpRequest, stickyNote. Event-driven trigger; 6 nodes.

HTTP Request
General

Compress Binary Files To Zip Format. Uses dropbox, compression, httpRequest, manualTrigger. Event-driven trigger; 5 nodes.

Dropbox, Compression, HTTP Request
General

Convert Docx From Url To Pdf Using Convertapi. Uses manualTrigger, httpRequest, readWriteFile, stickyNote. Event-driven trigger; 6 nodes.

HTTP Request, Read Write File