Controleer de backlinks van je website in n8n of in plain Python?
Een canvas met 25 nodes voor een taak van drie stappen is een veelvoorkomend spijtje. Een script dat niemand anders kan aanpassen is het andere. Gebruik de boom.
Redactieteam van Linkzoid ·
Beslissingsboom, van boven naar beneden
Moet iemand niet-technisch de flow bewerken of de runs lezen? Kies voor n8n of Make.
Past de job in minder dan 60 regels en staat toch in een repo? Kies voor Python.
Heb je een Slack-post en een sheet-rij nodig, maar geen diffing? Kies voor n8n met één HTTP Request node.
Diff je tientallen domeinen, bewaar geschiedenis of unit-test je parsing? Kies voor Python met SQLite.
Betaalt het team al voor n8n cloud-executies? Tel ze: een loop over 40 domeinen kan een plan opeten.
Past niets van het bovenstaande? Begin met curl in een shell-script en kijk wat pijn doet.
Wanneer een visuele flow zijn plaats verdient
Een canvas is zijn rommel waard in sommige taken. Als iemand niet-technisch elke stap en de laatste run moet zien, wint een visuele flow het van een repo die ze nooit zullen openen. Houd het kort.
De meeste backlink-taken bestaan uit ophalen, controleren en schrijven. Vier nodes doen dat goed. Als je taak is om elke maand de backlinks van je website te controleren voor een klant, past dit in een canvas. Het probleem begint wanneer iemand paging, retries en een diff toevoegt, omdat elk van die dingen zijn eigen vertakking brengt.
Kies het canvas voor de lezer, niet voor de schrijver.
Wie de flow leest
Marketing- en salesmensen lezen een flow aan de hand van de outputs, en ze willen de laatste run duidelijk in beeld. Een canvas geeft ze dat zonder ticket. Ze lezen de output, niet de code. Een script geeft ze een logbestand dat ze niet zullen openen.
Geef de flow een duidelijke naam en een beschrijving van één regel, zodat de volgende lezer weet wat hij belooft voordat hij hem opent. Een node met een vaag label kost meer tijd dan elke missende feature.
Vertakkingen die je in één oogopslag ziet
Een IF node op ok is makkelijk te volgen. Drie ervan op één pagina zijn nog steeds leesbaar, als elke vertakking een duidelijke naam heeft. Daarboven kruisen de lijnen elkaar, en heeft een reviewer tien minuten nodig om zeker te weten welke vertakking afvinkt bij een leeg resultaat.
Waar een canvas tot een last wordt
Loops over veel domeinen, gedeelde state tussen runs en unit tests zijn de gebruikelijke drukpunten. Een canvas lost elk van die problemen op met een workaround, en elke workaround is een plek waar de flow kan afwijken van wat je bedoelde.
Als je merkt dat je JSON exporteert om een flow te repareren, is de job het canvas ontgroeid. Verplaats de logica naar code en houd het canvas voor de notificatie.
De n8n setup in vier regels
Één HTTP Request node, methode GET, URL https://linkzoid.pro/api.php. Voeg query parameters toe action, q, key. Iedereen die op deze manier de backlinks van zijn website wil controleren, kan het in vijf minuten kopiëren.
Sla de key op in credentials, niet in de node. Voeg een IF node toe op ok, en stuur de false branch naar een error workflow die je pingt.
Split de rows array met een Item Lists of Split Out node, en schrijf daarna naar Google Sheets of Postgres. Houd uitvoeringsaantallen in de gaten, want elk item kan als een stap worden gefactureerd op sommige plannen.
Dat is de hele job. Het kapot gaat als pagination erbij komt: loops in n8n werken wel, maar lezen slecht na ongeveer tien nodes.
Bouw de n8n flow in vijf nodes
Elke node doet één taak, en elke node kan op zichzelf worden getest voordat de volgende wordt toegevoegd.
01
Maak de HTTP Request node
Methode GET en de URL https://linkzoid.pro/api.php. Voeg action, q en per toe als query parameters, en laat de key voor de volgende stap.
02
Koppel de key als credential
Sla het op in n8n credentials en verwijs ernaar vanuit de query. Een key die rechtstreeks in het URL-veld wordt getypt, kan in logs en exports terechtkomen.
03
Gate op de ok flag
Voeg een IF node toe die ok leest. Stuur de false branch naar een error workflow die de response body ergens plaatst waar je het kunt zien.
04
Split de rows
Gebruik Split Out op de rows array zodat elk domein zijn eigen item wordt. Schrijf die items naar een sheet of een tabel, niet de hele response in één cel.
05
Test eerst op de gratis actie
Wijs de node naar overview, wat geen key nodig heeft, en bevestig de vorm van de response voordat je overschakelt naar een betaalde actie.
Probleemoplossingstabel
Symptoom
n8n oorzaak
Python oorzaak
Alleen 10 rijen komen binnen
Geen per parameter ingesteld op de node
Zelfde, controleer de query string
Run slaagt, sheet leeg
Rijen niet gesplitst naar items
De dict geschreven in plaats van rows
402 na een week
Workflow loopt vast op een trigger
Cron vuurt twee keer af
Key lekt naar logs
Plakken in URL-veld
Volledige URL afgedrukt
Maand-tot-maand gaten
Execution retention heeft oude runs verwijderd
Nooit geschiedenis opgeslagen
Kosten per run
Aan onze kant zijn de kosten op beide manieren hetzelfde: 2 credits voor een refdomains pagina. De bouwer is waar de kosten verschillen.
Een self-hosted n8n is gratis om te draaien. Cloud plannen tellen executies. Een plain script op cron kost niets.
Wat je ook kiest, bewaar een gedateerde kopie van elke run buiten de tool. Wekelijkse snapshots in Actions zijn één nette plek hiervoor, en de suite vergelijking legt uit waarom je eigen geschiedenis het waard is.
Tel executies per domein
Een loop over veertig domeinen is veertig runs op een plan dat executies telt. Controleer hoe je plan een loop telt voordat je het op een schema zet, want de rekening volgt het aantal, niet de credits.
Schrijf het verwachte aantal naast het schema. Een verrassing op de rekening is makkelijker uit te leggen als de schatting al in het bestand stond.
Self-hosting heeft zijn eigen rekening
Een self-hosted n8n kost de server, de upgrades en de backups. De database is van jou om levend te houden. Een plain script op een kleine machine heeft minder bewegende delen, wat een reden is om het te kiezen voor een vaste maandelijkse taak.
Wat meestal als eerste kapot gaat
In n8n zijn het pagination en item counts. In Python is het het ding dat niemand heeft getest: een lege rows, een timeout, een veld dat anders heet dan je aannam.
Geen van beide tools is fout. Kies op basis van wie het ding over zes maanden onderhoudt. Als dat jij bent, alleen, is code makkelijker te grep-en. Als het een marketingteam is dat al in het canvas leeft, wint een kleine flow die ze kunnen zien het van een repo die ze vrezen.
Gemengde setups werken ook. Laat Python de CSV op een schema schrijven en laat n8n het bestand lezen en naar Slack posten. Elke tool doet het deel dat het het beste aankan, en geen van beide flows groeit voorbij tien stappen.
De Python-versie leesbaar houden
Het gebruikelijke geval voor code is dat iemand anders het over zes maanden moet aanpassen. Maak dat makkelijk. Een kort script met duidelijke namen en een opgeslagen response wint het van een slimme one-liner die niemand durft aan te raken.
Test de parser op een opgeslagen response
Sla één echte response op in een bestand en wijs een unit test daarop. De parser draait dan zonder credits te verbruiken, en een hernoemd veld faalt in de testrun in plaats van op maandagochtend.
Houd de opgeslagen response klein, want een dozijn rijen is genoeg. Noteer de datum waarop je hem hebt genomen, zodat je weet wanneer de veldnamen voor het laatst zijn gewijzigd.
Houd de instellingen op één plek
Domeinen, acties en de paginagrootte behoren tot een klein config block, niet verspreid over het script. Een collega kan dan de target lijst aanpassen zonder de logica die de rijen parseert aan te raken.
Houd secrets ook buiten dat block. Laad ze vanuit de environment, op dezelfde manier als de key wordt geladen.
Voer een proefperiode van twee weken uit voordat je je verbindt
Los dit niet op papier op. Bouw de kleinste versie van de taak in elke tool, draai hem elke dag twee weken lang, en kijk welke je opent zonder dat iemand het vraagt.
Kijk naar wat kapot gaat. Tel de keren dat je iets handmatig moest bewerken, en de keren dat de output fout was zonder error. De tool die minder handmatige fixes vraagt, is die je moet houden.
Log elke handmatige fix
Houd een simpele notitie bij van elke keer dat je de flow of het script handmatig hebt aangeraakt. Een korte lijst na twee weken vertelt je meer dan elke feature tabel ooit zal doen.
Noteer wie om wijzigingen vroeg
Als de verzoeken kwamen van mensen die geen code kunnen lezen, wint het canvas misschien. Als ze van jou kwamen, is de repo makkelijker uit te houden.
Elk antwoord is prima zolang je er naar kunt wijzen. Schrijf de reden naast de flow of de repo, en herzie het wanneer de taak groeit.
Korte antwoorden voor bouwers
Werkt Make of Zapier met deze API?
Ja. Alles wat een HTTPS GET kan sturen met query parameters werkt, inclusief Make, Zapier, Pipedream en Apps Script. Gebruik de generieke HTTP module, zet de key in een opgeslagen verbinding, en lees de JSON rows array in de volgende stap.
Kan een AI agent het in plaats daarvan aanroepen?
Technisch gezien ja, omdat het een plain HTTP API is. Voor een vaste maandelijkse taak is een script goedkoper en voorspelbaarder, en een agent voegt een modelrekening en een kans op een verkeerde parameter toe. Gebruik een agent alleen voor ad hoc vragen.
Wat is de goedkoopste manier om te beginnen?
Een shell script met curl en de gratis overview actie, draaien vanaf cron. Geen key, geen kosten, en je leert de vorm van de response. Ga naar Python wanneer de eerste awkward JSON parsing verschijnt.