How I Automated My 100 Influences With n8n
My brain is not a filing cabinet. It’s more of a something that resemble a cross between a compost heap and God’s Own Junkyard — things go in, get tangled up with other stuff, and eventually something useful grows out of it. Pinterest is where most of that composting happens. I see something, I pin it, I move on. Months later, it resurfaces inside a piece of work for a client and I couldn’t always tell you where it came from.
One of those piles (there are many, some in notebooks, others stuck to the fridge) has always lived quietly on Pinterest, which is fine, so long as you’re careful to navigate to deluge of AI slop. I wanted the good bits on my own site — a running feed of what’s currently grabbing my attention, updating itself without me having to think about it.
So I built the laziest possible version. I pin something to the board. Half an hour later, it shows up on j-kindred.com/influences. I don’t touch anything in between.
Here’s the plumbing:
flowchart TD
A[Pinterest board] -->|RSS feed| B[Schedule Trigger<br/>every 30 min]
B --> C[Filter: only .jpg items]
C --> D{Already seen?}
D -->|Yes| Z[Ignore]
D -->|No| E[Save to Pin Collector]
E --> L{Loop Over Items}
L -->|Each pin| F[Download image]
F --> G[Resize to 900x900]
G --> H[Commit image to GitHub<br/>assets/img/influence/]
H --> Q[Queue Instagram Story<br/>via Buffer]
Q --> R[Ping Discord]
R -->|Next pin| L
L -->|All done| M[Fetch current<br/>_data/influence.yml]
M --> N[Prepend new pins]
N --> P[Commit updated<br/>_data/influence.yml]
H --> K[Jekyll rebuilds the site]
P --> K
The source is a Pinterest board
All of this starts with one board: Influences — Kindred Studio. Pinterest gives you an RSS feed for every public board — yours, mine, anyone’s. The URL pattern is /username/board-slug.rss. n8n reads mine every thirty minutes and hands the new items down the pipe. No API keys, no OAuth dance, no custom scraper. A URL and a schedule. That’s the whole trigger.
A small filter after the read throws away anything that isn’t a .jpg. Pinterest occasionally surfaces video or link pins, and I don’t want those in the grid.
Deduping is boring but essential
Early versions of this workflow re-committed the same images every thirty minutes. GitHub got cross. The site got confused. My commit history started looking confused and pretty unmanageable.
The fix is a small n8n data table called Pin Collector. Every pin has a unique Pinterest URL, and the workflow checks that URL against the table before doing anything else. Already there? Nothing happens. New? It gets inserted and moves on.
Deduping feels like overhead until you’ve watched your Git history eat itself.
Two trips through the loop
Once new pins are saved to the table, n8n loops through them one at a time. Each pin makes one trip on its own. When the loop finishes, the workflow makes one more trip to update the manifest.
Trip one: the image (per pin). n8n downloads the full-size file from Pinterest, resizes it to a max of 900×900 (only if it’s larger — anything smaller is left alone), and commits the file to assets/img/influence/ in my Jekyll repo on GitHub. The filename comes straight from Pinterest’s URL, which happens to be a stable hash. Free uniqueness.
Trip two: the manifest (once, at the end). Once the loop finishes, n8n fetches the current _data/influence.yml from GitHub, prepends the new pins to the top, and commits the file back as a single edit. The commit message writes itself — something like Add 3 new influences, or however many landed that run. If nothing new came through, nothing gets committed.
Earlier versions rebuilt the whole file from the data table every time — delete the old one, write a fresh one. It worked, but the commit history doubled up: a remove old influences commit next to a Create new influence manifest commit, every single run, even when nothing had changed. Appending is tidier. One commit. A message that actually tells you what changed. Silence when there’s nothing to say.
Jekyll does the rest
Each run sends a handful of commits to main — one per new image, then one for the manifest. GitHub Actions picks up the last one and kicks off a build. The influence page loops over _data/influence.yml, drops the files into a five-column grid, and the front-end does a bit of colour sampling so each tile bleeds its dominant hue into the background behind it. Five minutes from pin to published.
Then it goes a bit further
The workflow has two tails I added later because I was there anyway.
One posts the new image straight into my Buffer queue as an Instagram Story. One pings a Discord channel so I can see the whole thing worked. Neither is clever. Both are the kind of small, finicky task that would never happen if I had to do them by hand.
Why bother
Because the alternative is a CMS — a login, a cropping tool, half an hour of friction every time I want to share something I noticed. My AuDHD brain doesn’t do well with that kind of ritual. By the time I’ve opened the tab, I’ve lost interest in the thing.
This workflow meets me where I already am. I’m on Pinterest anyway. The pin takes one click. Everything downstream is somebody else’s problem — even if that somebody else is a machine I built.
There’s a bigger point in here about using n8n for clients, which I’ll come back to in later posts. For now, the principle: if a task is friction for you, it’s not going to happen. Build the plumbing that removes the friction, not a nicer-looking version of the friction itself.
More on This Kind of Topic
- 14.04.26
Speak Softly and Carry a Big Stick
Most freelancers don't carry a big stick. They speak softly—politely, professionally, patiently—and when someone deci...
- 28.09.25
Volunteering: why I do it, and why it matters
Volunteering gives me an anchor. It's a way of putting that energy into something outside myself, where it can make a...
- 06.04.26
Use AI to Build Ideas That Don't Need It
I'm watching smart, talented people build their entire creative process on top of a thing they don't own, can't contr...

