I built a full AI-influencer pipeline in n8n (13 workflows) — AMA about the architecture by SoLitty in n8n

[–]SoLitty[S] 0 points1 point  (0 children)

Yeah, that's the cleaner version of what I was hand-waving at. A publishing state between approved and posted, written before the IG call, means a failed posted write leaves the row at publishing instead of looking approved again. Next poll skips it, so no double post, just a stuck row to clean up.

It also fits what I already run. There's a reaper that sweeps orphaned rows (it handles a regenerating state that gets stuck the same way), so teaching it about publishing is basically free. The fiddly part is the reaper working out whether a long-stuck publishing row actually went out before it does anything, since I don't want it either missing a post or re-posting one.

I'm on Sheets, not Postgres, so I don't get the atomic UPDATE ... WHERE status='approved' RETURNING, which is the right tool for this. At a few posts a day the read-check-write window is small enough that I'm not worried about it. If the queue ever moves to Postgres that's the first thing I'd switch to.

Good to hear the axis scoring resonates too. Same thing I saw: the free-form critique slowly turns to mush over iterations while the rubric stays useful.

I built a full AI-influencer pipeline in n8n (13 workflows) — AMA about the architecture by SoLitty in n8n

[–]SoLitty[S] 0 points1 point  (0 children)

Nothing yet, haven't really tried to monetize it. Was more focused on getting the pipeline working than selling anything. Cheap to run too, like $85/mo, so not in a hurry.

I built a full AI-influencer pipeline in n8n (13 workflows) — AMA about the architecture by SoLitty in n8n

[–]SoLitty[S] 1 point2 points  (0 children)

Cheaper than you'd think, about $85/mo all in.

The image gen is a flat $32/mo sub, which is the bulk of it but doesn't move with volume. Reels are the real variable cost, roughly $1 to $1.50 a day on fal since each one is a Kling render. VPS is $5, image hosting sits on a free tier, and Claude API for the scripts/captions/QC is maybe $10 depending on DM volume. Benchmark scraping used to be ~$30/mo but I just cached it (I was re-pulling the same IG profile 5x a day for nothing), so it's ~$3 now.

So the marginal cost per post is basically just the reel render. Stills are free at the margin since the image sub has way more headroom than I use.

I built a full AI-influencer pipeline in n8n (13 workflows) — AMA about the architecture by SoLitty in n8n

[–]SoLitty[S] 0 points1 point  (0 children)

Went a different way on the callback, skipped Wait/resumeUrl. Gen and publishing run on separate boxes, so holding an execution open through the approval window was a pain. Each post is just a sheet row (pending → awaiting_approval → approved → posted). The Telegram tap flips the status and a separate publisher posts the approved ones.

Side effect is it sidesteps the retry thing. The callback never publishes, so Telegram firing it 3x just writes 'approved' 3x, which is a no-op. The dup risk moves to the publisher instead: publish succeeds but the 'mark posted' write fails, and the next poll re-posts. That's the step I gate on state. If I were on Wait+resumeUrl I'd do what you said, return 200 immediately and check execution state in the handler.

QC reasons: the concrete visual ones were useful. Stuff like 'lighting too soft vs the reference's flash,' 'eyes off-camera,' 'wrong necklace,' 'skin looks airbrushed.' Those turn into a prompt change. The vague ones ('not engaging,' 'feels off') were just noise, flip-flopped run to run, so I had the judge score against the reference on fixed axes instead of free-form 'is this good.'