In October I signed up for a ManyChat free trial. Comment LEAP or PROMPT under my reels and you got a DM with the link.
On 2 November it was about to renew at $184.80 a year. I cancelled and built my own with Claude Code the same day. I already had the Meta app from posting my reels. It runs twice a day on GitHub's free plan, so it costs me $0 on top of my Claude Code subscription.
ManyChat is good at what it does. This is what I did instead, and what I gave up.

Someone comments a word under your post. ManyChat DMs them your link the second they comment.
Nobody has to sit there replying. That's what businesses pay for.
I told Claude to set it up for The Leap:
"Since I signed for ManyChat for a free trial, make use of it."
All 31 answered by ManyChat.
On 2 November I asked Claude:
"Just thinking, u can reply to my comment now, right? So do we need to use ManyChat?"
It could. Claude already posted my reels through Meta's API, and the same connection can reply to comments. I cancelled before it renewed.
"Ok, I cancelled.. we can discuss how to run our own ManyChat later.. I don't need the reply to be immediate.. maybe twice a day to run thru the comment is ok, or once."
Replies that can wait a few hours only need a job that runs twice a day.
31 keyword comments in two weeks is about two a day. You can answer that by hand. For anyone at my numbers or below.
For you if you want instant DMs, the flow builder or a contact list, or never want to open a Meta developer app.
For you if twice a day is fine and you'll sit through a fiddly setup once.
Under any of my posts.
08:00 and 18:00 UTC. My Mac can be off.
On my last 50 posts.
LEAP or PROMPT. Skips anyone I already replied to, and comments older than 7 days.
One private reply with the link, through my Page token.
"Sent it to your DMs."
In their DMs, or in message requests if they don't follow me.
About 130 lines of Python. A comment counts as answered once I've replied under it. Every run ends with one line: sent, already answered, failed. A failed run gets flagged on GitHub.

Claude wrote the code. The setup is on you.
Meta has rules on automated messaging: the Meta Platform Terms and the private replies docs. I haven't audited my setup against them. Read them before you switch yours on.
I already had the Meta app and Page token from posting my reels through the API (Module 02). On top of that, the DM job took one session with Claude. From zero, the Meta side will take longer.
Start with one keyword and a test comment from a second account. Follow along for the ride, and for more tips as I share what I learn.
Feeling lost? Try The Leap. It's free, there's no catch. It takes about two hours, and I swear you'll walk out with more clarity on what to do next than when you started.
Start with The Leap (free) →Build me my own comment-to-DM for Instagram with Claude Code, one step at a time. I'm not a developer. Explain every click before I make it, and wait for me to say it's done. 0. Ask me first: the words people will comment (my keywords), the DM each one gets (the link plus a line or two), and a short public reply that tells them to check their DMs. Read my DM text back to me exactly and wait for my yes. 1. Check my account: my Instagram is a professional account (Business or Creator) and linked to a Facebook Page. If not, walk me through it. 2. Meta app: walk me through creating a Meta developer app, adding the permissions it needs to read my comments and send private replies, and getting a Page token through Facebook Login. Tell me which screen I should be on at each step. I do the clicking. Check whether my app needs Advanced Access or App Review to message people who have no role on it, and walk me through it if so. 3. Token: check it with Meta's debug_token and tell me the date its data access expires. Never print the token. Never put it in code, a file in the repo or a log. 4. Script: write one short Python script that reads comments on my recent posts and finds my keywords. Skip any comment I've already replied to, and any older than 7 days, because Meta allows one private reply per comment, within 7 days. Send one private reply with my DM text, then my public reply. End with one line: how many sent, already answered, failed. Exit with an error if anything failed. 5. Dry run by default: it only prints what it would send until I say go live. 6. Test: I'll comment a keyword from a second account. Run it live on that one comment, and I confirm the DM landed before anything else goes live. 7. Schedule: put it in a private GitHub repo and run it with GitHub Actions twice a day. Store the token as a GitHub secret and walk me through adding it. Scheduled runs send for real. A manual run defaults to dry run. 8. Renewal: put a reminder in my calendar a week before the token's data access expires, with the renewal steps written in the event. If you can't reach my calendar, give me a file I can add. Show me what a failed run looks like on GitHub, so I know it when I see it. Rules: never print, log or commit the token. One DM per comment, ever. Nothing goes live without my yes. Write a README so I can renew the token and change the DM text without you.