Ditt Plex-bibliotek ser ”komplett” ut – tills någon trycker på Spela och möts av en återvändsgränd. Då fastnar du i att förklara, leta upp titeln, växla Radarr-inställningar och vakta nedladdningar. Igen.
Den här Plex Radarr-automationen riktar sig i första hand till ägare av hemmaservrar för media, men den sparar också tid för IT-personal som kör en delad Plex-server och byråliknande team som hanterar mediarum åt kunder. Du får färre ”saknas film”-meddelanden, och innehållet börjar laddas ner först när det faktiskt efterfrågas.
Du får se hur det här flödet håller biblioteket snyggt med Radarr/Sonarr-placeholders, och sedan automatiskt köar den riktiga nedladdningen i samma ögonblick som uppspelningen startar.
Så fungerar automatiseringen
Hela n8n-workflowet, från trigger till slutresultat:
n8n Workflow Template: Plex + Radarr: ladda ner först när någon trycker play
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format JustWatch results"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Call JustWatch API"]
n30@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if collection is not e..", pos: "b", h: 48 }
n31@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If objectType is movie", pos: "b", h: 48 }
n32["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook1"]
n33["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format JustWatch results add.."]
n34["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Sonarr serie lookup1"]
n35["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook Arrs custom list Jus.."]
n36["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook Arrs custom list Trakt"]
n37["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Call Trakt API"]
n38["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format JustWatch results1"]
n39["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook2"]
n40["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get all items in collection1"]
n41@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if collection contains..", pos: "b", h: 48 }
n42@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out Collection Items1", pos: "b", h: 48 }
n43@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n44["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Remove item from collection1"]
n45["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get collection1"]
n46@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items3", pos: "b", h: 48 }
n47["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get GUID from imdbId"]
n48["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Add item to collection2"]
n49["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Add item to collection3"]
n50["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get ratingKey from GUID1"]
n51["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Move collection item2"]
n52@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If found Plex GUID1", pos: "b", h: 48 }
n53["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n54["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n55["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n56["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge2"]
n79@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set fields for collection", pos: "b", h: 48 }
n80@{ icon: "mdi:cog", form: "rounded", label: "Wait 5 minutes before proces..", pos: "b", h: 48 }
n54 --> n46
n55 --> n48
n53 --> n79
n56 --> n51
n37 --> n38
n45 --> n40
n43 --> n54
n43 --> n44
n46 --> n47
n2 --> n1
n0 --> n30
n52 --> n50
n32 --> n30
n47 --> n52
n34 --> n33
n51 --> n46
n31 --> n0
n31 --> n34
n48 --> n56
n49 --> n55
n1 --> n31
n1 --> n53
n50 --> n49
n50 --> n55
n50 --> n56
n38 --> n39
n38 --> n53
n79 --> n80
n42 --> n43
n40 --> n41
n44 --> n43
n36 --> n37
n36 --> n53
n30 --> n53
n35 --> n2
n41 --> n42
n41 --> n54
n33 --> n32
n33 --> n53
n80 --> n45
end
subgraph sg1["Flow 2"]
direction LR
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Remove unmonitored tag"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If tag unmonitored exists", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Radarr", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If tag unmonitored exists So..", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Remove unmonitored tag Sonarr"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook Arrs Dummy file update"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch eventType", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Create dummy file for movie1", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Refresh movie1"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Refresh series1"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Refresh Plex"]
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Refresh Plex Series"]
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Sonarr runtime s01e01"]
n16@{ icon: "mdi:cog", form: "rounded", label: "Create dummy file for series..", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Radarr movie"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Sonarr series"]
n65["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Terminate Tautulli sessions .."]
n66["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Get all active sessions for .."]
n67["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Monitor all seasons1"]
n68@{ icon: "mdi:cog", form: "rounded", label: "Remove all dummy files", pos: "b", h: 48 }
n69@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If deletedFiles exist", pos: "b", h: 48 }
n70["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get active Tautulli sessions"]
n71["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Refresh series"]
n72["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Sonarr information for s.."]
n78["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search season pack1"]
n5 --> n4
n5 --> n6
n17 --> n10
n18 --> n15
n11 --> n13
n71 --> n67
n12 --> n14
n9 --> n5
n9 --> n17
n9 --> n18
n67 --> n78
n69 --> n70
n15 --> n16
n68 --> n72
n3 --> n69
n4 --> n3
n4 --> n69
n10 --> n11
n70 --> n66
n7 --> n68
n7 --> n69
n8 --> n9
n66 --> n65
n6 --> n7
n6 --> n69
n72 --> n71
n16 --> n12
end
subgraph sg2["Flow 3"]
direction LR
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search movie"]
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond 200"]
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Monitor movie"]
n23["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond "]
n24["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Monitor series"]
n25["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Monitor all seasons"]
n26@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If movie4", pos: "b", h: 48 }
n27["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Radarr information from .."]
n28["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Sonarr information from .."]
n29["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook Tautulli"]
n58["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Overseerr users"]
n59["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Filter Overseerr user"]
n60@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if Overseerr user is f..", pos: "b", h: 48 }
n61["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Make Overseerr request"]
n62["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get last 20 Overseerr reques.."]
n63["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Check if request already exi.."]
n64@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if no existing request..", pos: "b", h: 48 }
n75["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code1"]
n76["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge3"]
n77["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search season pack"]
n75 --> n76
n76 --> n77
n23 --> n58
n26 --> n27
n26 --> n28
n21 --> n58
n20 --> n21
n22 --> n20
n24 --> n25
n29 --> n26
n77 --> n23
n58 --> n59
n25 --> n76
n59 --> n60
n63 --> n64
n60 --> n62
n27 --> n22
n28 --> n24
n28 --> n75
n62 --> n63
n64 --> n61
end
subgraph sg3["Flow 4"]
direction LR
n73["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search series2"]
end
subgraph sg4["Flow 5"]
direction LR
n74["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search series season"]
end
subgraph sg5["Flow 6"]
direction LR
n19@{ icon: "mdi:cog", form: "rounded", label: "Create dummy file", pos: "b", h: 48 }
end
subgraph sg6["Flow 7"]
direction LR
n57@{ icon: "mdi:cog", form: "rounded", label: "Create dummy file for movie", pos: "b", h: 48 }
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n30,n31,n41,n52,n4,n5,n6,n9,n69,n26,n60,n64 decision
class n0,n2,n32,n34,n35,n36,n37,n39,n40,n44,n45,n47,n48,n49,n50,n51,n3,n7,n8,n11,n12,n13,n14,n15,n17,n18,n65,n67,n70,n71,n72,n78,n20,n21,n22,n23,n24,n25,n27,n28,n29,n58,n61,n62,n77,n73,n74 api
class n1,n33,n38,n54,n66,n59,n63,n75 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n32,n33,n34,n35,n36,n37,n38,n39,n40,n44,n45,n47,n48,n49,n50,n51,n53,n54,n55,n56,n3,n7,n8,n11,n12,n13,n14,n15,n17,n18,n65,n66,n67,n70,n71,n72,n78,n20,n21,n22,n23,n24,n25,n27,n28,n29,n58,n59,n61,n62,n63,n75,n76,n77,n73,n74 customIcon
Problemet: ”kompletta” Plex-bibliotek som inte går att spela
Ett stort Plex-bibliotek är bara imponerande när det fungerar. Den fula sanningen är att du ofta har en blandning av riktiga filer, saknade titlar och halvspårade ”jag tar det senare”-poster. När en vän eller familjemedlem trycker på Spela och det misslyckas blir du support. Och det är aldrig vid ett bra tillfälle. Du hoppar in i Radarr/Sonarr, letar upp objektet, ändrar övervakning, startar en sökning och väntar sedan på att se om det faktiskt landar hos din provider.
Friktionen växer snabbt. En saknad titel är irriterande. Tio stycken förvandlar din Plex till en helpdesk.
- Du slösar cirka 10 minuter per ”kan du fixa det här?”-meddelande bara på att lista ut vad som saknas och var.
- Plex ser inkonsekvent ut, så folk slutar lita på ditt bibliotek och börjar sms:a dig först.
- Radarr/Sonarr-poster kan ligga oövervakade, vilket gör att inget någonsin laddas ner om du inte kommer ihåg det.
- När du väl triggar nedladdningar manuellt slutar det med att du hämtar innehåll som ingen faktiskt tittar på.
Lösningen: placeholders i Plex, riktiga nedladdningar vid begäran
Det här n8n-workflowet fungerar som ett ”just-in-time”-leveranssystem för Plex. Först skapar det dummyfiler (placeholders) för objekt som lagts till i Radarr/Sonarr när de har en specifik tagg (till exempel unprocessed-dummy). Plex kan indexera dessa placeholders så att biblioteket fortfarande ser komplett ut, även om du inte har laddat ner allt ännu. Sedan, när någon försöker spela upp en placeholder, triggar uppspelningen automatiseringen. n8n identifierar titeln, sätter den som övervakad i ditt Arr-verktyg och lägger den i nedladdningskön så att den riktiga filen dyker upp strax efter.
Om den riktiga nedladdningen blir klar medan dummyfilen fortfarande spelas kan workflowet även reagera på en Tautulli-webhook för att stoppa strömmen och meddela tittaren. Det är lite styrt, ärligt talat, men det hindrar folk från att sitta med en död placeholder längre än nödvändigt.
Workflowet börjar med dina Arr-bibliotek och en taggningskonvention. Därefter genererar n8n placeholders via en fjärrhost (SSH + FFmpeg), håller en enkel logg över vad som har behandlats och lyssnar efter en uppspelningssignal via webhook. Till sist uppdaterar det Radarr/Sonarr-övervakning och köar nedladdningen så att innehållet blir tillgängligt på cirka 3 minuter i många miljöer.
Det här får du: automatisering vs. resultat
| Vad det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du lägger till 30 filmer i Radarr under en vecka, men du tittar egentligen bara på 5. Manuell hantering: varje ”Spela funkar inte”-tillfälle kostar ofta cirka 10 minuter för att hitta titeln, växla övervakning och starta hämtningen, så fem förfrågningar blir ungefär 50 minuter av irriterande kontextbyten. Med det här workflowet är ”admintiden” i princip noll efter uppsättning: tittaren trycker på Spela, nedladdningen köas automatiskt och den riktiga filen är ofta klar på cirka 3 minuter. Det är nästan en timme tillbaka – och biblioteket ser fortfarande fullt ut.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Plex som uppspelningskälla som dina användare klickar i.
- Radarr (och/eller Sonarr) för att övervaka objekt och köa nedladdningar.
- Tautulli för att skicka webhooks när uppspelning ändras.
- SSH-åtkomlig host med FFmpeg för att generera dummyfiler.
- Trakt.TV API-nyckel (hämta den i appinställningarna i Trakt) om du använder Trakt-samlingar.
Kunskapsnivå: Avancerad. Du kommer att redigera URL:er, auth-headers, webhooks och SSH/FFmpeg-sökvägar.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Skapandet av placeholders triggas av dina Arr-listor. När nya Radarr/Sonarr-objekt dyker upp med taggen unprocessed-dummy hämtar n8n relevant metadata och förbereder ett ”dummyfil”-jobb.
Metadata blir strukturerad och matchad. Workflowet använder logikkontroller (If/Merge) för att säkerställa att det agerar på rätt titel, och det håller en enkel logg så att samma objekt inte behandlas om och om igen.
En fjärrhost genererar de faktiska placeholders. Via SSH skapar workflowet dummy-mediafiler (FFmpeg krävs) och lagrar eller synkar dem så att Plex kan se dem. I många upplägg används Google Drive som staging- eller lagringslager för filer och små exporter.
Uppspelning triggar den riktiga nedladdningen. När Plex-aktivitet upptäcks via en webhook (oftast via Tautulli) hittar n8n motsvarande Arr-objekt, sätter det till övervakat och lägger det i nedladdningskön. Om den riktiga filen blir tillgänglig mitt under uppspelning kan Tautulli trigga en ny webhook så att workflowet stoppar placeholder-strömmen och varnar användaren.
Du kan enkelt ändra taggningsreglerna för att stödja separata bibliotek, olika kvalitetsprofiler eller ett mjukare notifieringsflöde utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Vanliga fallgropar
- Plex- och Tautulli-inloggningar kan gå ut eller kräva specifika behörigheter. Om händelser slutar komma, kontrollera först webhook-inställningarna i Tautulli och åtkomst till Plex-token.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- SSH-skapande av placeholders är petigt: fel FFmpeg-sökväg, saknade typsnitt eller begränsade rättigheter skapar trasiga dummyfiler. Testa FFmpeg-kommandot på hosten innan du skyller på n8n.
Vanliga frågor
Räkna med cirka 1–2 timmar om Plex, Tautulli och SSH redan fungerar.
Nej, men du behöver vara bekväm med att redigera URL:er, tokens och serversökvägar. Om SSH och webhooks känns läskigt, ta hjälp första gången.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in eventuella kostnader för debrid, indexer eller lagring kopplade till din Arr-setup.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja. Workflowet stödjer redan ”Arrs”-mönstret, så du duplicerar vanligtvis matchningslogiken för Sonarr och behåller samma placeholder-taggningsupplägg. Vanliga justeringar är att använda olika taggar per bibliotek, mappa till separata root-mappar och ändra vad som händer efter att nedladdningen är klar (bara notifiera, eller stoppa dummyströmmen via Tautulli).
Oftast beror det på en ogiltig eller utgången token, eller att webhooken pekar på fel n8n-URL. Kontrollera Plex-token du använder i dina HTTP-headers och bekräfta sedan att Tautulli kan nå din n8n-webhook från sitt nätverk. Håll också utkik efter reverse proxy-problem där den publika URL:en fungerar i en webbläsare men inte från Tautulli-containern.
En typisk hemmserver klarar utan problem dussintals körningar per dag som triggas av uppspelning.
Oftast, ja – eftersom det här workflowet bygger på webhooks, villkorslogik och filskapande på serversidan, vilket är krångligt (eller dyrt) i de verktygen. n8n ger dig också mycket mer kontroll över request headers och datashaping, vilket spelar roll när du pratar med Plex-, Tautulli- och Arr-API:er. Den stora anledningen är flexibilitet: du kan lägga in säkerhetskontroller så att du inte övervakar fel titel, eller routa ”redan på väg att laddas ner”-händelser på ett annat sätt. Zapier och Make är bra för enkla SaaS-till-SaaS-uppgifter, men det här ligger närmare systemautomation. Prata med en automationsexpert om du är osäker på vad som passar.
När detta väl rullar kan ditt Plex-bibliotek se enormt ut utan att du blir heltids-support. Sätt upp det, testa, och låt ”Spela” vara beställningsknappen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.