In the last post I built an unattended daily-posting pipeline. But posting is only the start. The next question was: can the bot decide what to post on its own, react to comments, and track its own growth? I tried it with Threads and four Instagram accounts — and here I also record the wall the API honestly put up.
The self-learning loop
On top of posting I added a feedback loop that runs every night:
- insights — snapshot account and post metrics (followers, views).
- feedback — recompute per-content-type weights from performance and write them to
weights.json. Smoothing of 0.5, clamped to a 0.2–3.0 floor/ceiling, and it won't move if the sample is underMIN_N=4. It also derives the best posting hours from time-of-day performance. - content — the next post picks its type from those weights. Not random but a date-seeded deterministic pick, so it's reproducible yet biased toward what performs.
- digest — a weekly review: it summarizes follower deltas and the "learned weights" to a channel.
The point is that the loop eats itself. Today's post performance becomes tomorrow's weights, and with no hand-holding it drifts slightly better over time.
The comment bot: moderate first, reply second
I attached a comment engine to the four Instagram accounts and to Threads. The order matters — filter first, answer second:
- Moderation: spam and abuse get hidden conservatively (not deleted, everything logged). If it's ambiguous, leave it alone — a false positive is worse than a miss here.
- Auto-reply: only genuine comments get a short reply.
I layered in a lot of guards: exclude my own comments, skip a whole account if I can't read its username (fail-closed), record to the ledger only on success (failures stay for retry), a per-run cap, DRY by default, and a silent no-op if the scope is missing.
One gotcha was fun. The profanity filter catches the Korean slur "병신" — but my fortune apps legitimately and frequently use 병신년 / 병신생 / 병신해 (a sexagenary-cycle year). A naive filter would censor customer comments. So a negative-lookahead regex (병신(?!년|생|해)) lets the calendar term through. Auto-moderation loses trust the moment it wrongly flags something normal.
The walls the API put up (the honest part)
This is where I learned the most. I wanted to automate growth, but the API refused:
- Threads has no follow endpoint. The common growth trick — have the bot follow people to draw attention — is simply impossible. You can post and respond, but there's no outbound follow.
- Mention and keyword search is code10. Even with the scope granted, dev mode returns
code10— it only opens after app review. So "find people who mentioned my niche and reach out at scale" is blocked.
Accepting these walls was part of the design. Since mass outreach growth is off the table, the bot is reactive — it only responds to reactions on my own posts. Better to honestly live inside what works than to force what doesn't.
The honest part
Self-learning is not magic. When the sample is small (MIN_N=4), the weights don't budge, and a fresh account's reach is still near zero. The value of this system isn't explosive growth but a compounding grind — it holds without me, gets slightly better as data accumulates, and its ban-safety still comes from finite, conservative rules.
Don't buy growth by pretending. Compound only as much as actually works — every day, quietly.