매니챗 없이, 월 요금 0원으로 돌리는 방법입니다.
매니챗이 유명하긴 한데, 2026년 3월부터 무료가 25명까지로 줄었습니다. 릴스 하나만 터져도 첫날에 막혀요. 그래서 다른 걸 쓰시는 게 낫습니다.
각 서비스가 공지한 숫자입니다. 이런 도구는 요금이 자주 바뀌니 가입 전에 한 번 확인해보세요.
무료디엠인스타가 공식으로 열어둔 통로에 직접 연결하는 방법입니다. 중간에 껴 있는 서비스가 없으니 개수 제한도 없고 월 요금도 없어요. 대신 처음 한 번은 손이 갑니다. 복사해서 붙여넣는 부분만 그대로 하시면 되고, 30분쯤 걸립니다.
전부 무료입니다.
페이스북 페이지를 따로 만들 필요는 없습니다. 예전 방식에는 필요했는데 지금은 인스타 계정만 연결하면 돼요.
developers.facebook.com/apps 에 들어가서 앱 만들기를 누릅니다.
instagram_business_manage_comments — 댓글을 읽는 권한instagram_business_manage_messages — DM을 보내는 권한토큰은 인스타가 나 대신 일해도 된다고 허락해주는 열쇠라고 보시면 됩니다.
https://graph.instagram.com/access_token
?grant_type=ig_exchange_token
&client_secret=여기에_앱시크릿
&access_token=여기에_방금받은토큰
줄바꿈 없이 한 줄로 이어 붙여야 합니다. 화면에 나온 access_token 값이 60일짜리 토큰이에요. 이 값을 따로 적어두세요.
https://graph.instagram.com/v22.0/me?fields=id,username&access_token=긴토큰
여기 나오는 id가 내 계정 번호입니다.
내 폰이 꺼져 있어도 돌아가야 하니까, 클라우드에 아주 작은 프로그램 하나를 올려둡니다.
dash.cloudflare.com 로그인 → Workers & Pages → Create → Workerauto-dm) 정하고 만듭니다.const V = "v22.0";
async function api(env, path, opts) {
const sep = path.includes("?") ? "&" : "?";
const url = `https://graph.instagram.com/${V}/${path}${sep}access_token=${env.IG_TOKEN}`;
const r = await fetch(url, opts);
return r.json();
}
export default {
async scheduled(event, env) {
const KEYWORD = env.KEYWORD;
const MESSAGE = env.MESSAGE;
const REPLY = env.REPLY;
const done = new Set(JSON.parse((await env.DM.get("done")) || "[]"));
for (const mid of env.MEDIA_IDS.split(",")) {
const res = await api(env, `${mid.trim()}/comments?fields=id,text,username&limit=100`);
for (const c of res.data || []) {
if (done.has(c.id)) continue;
if (!(c.text || "").replace(/\s+/g, "").includes(KEYWORD)) continue;
const dm = await api(env, "me/messages", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
recipient: { comment_id: c.id },
message: { text: MESSAGE },
}),
});
if (!dm.error && REPLY) {
await api(env, `${c.id}/replies?message=${encodeURIComponent(REPLY)}`, { method: "POST" });
}
done.add(c.id);
}
}
await env.DM.put("done", JSON.stringify([...done].slice(-3000)));
},
};
같은 사람한테 DM이 두 번 가면 안 되니까, 이미 보낸 댓글을 적어두는 공간이 필요합니다.
autodm 처럼 아무거나 지어주세요.워커의 Settings → Variables and Secrets에서 아래 다섯 개를 넣습니다.
IG_TOKEN — 3번에서 받은 60일짜리 토큰. 이건 Secret으로 넣으세요.MEDIA_IDS — 자동 DM을 걸 릴스 번호. 여러 개면 쉼표로 이어 씁니다.KEYWORD — 사람들이 댓글에 쓸 말. 예를 들어 무료디엠MESSAGE — 보낼 DM 내용REPLY — 댓글에 달아줄 답글. 예를 들어 DM 보내드렸어요! 요청함도 확인해주세요https://graph.instagram.com/v22.0/내계정번호/media?fields=id,caption,permalink&access_token=긴토큰
주소를 브라우저에 붙여넣으면 내 게시물 목록이 나옵니다. 자동 DM을 걸고 싶은 릴스의 id를 가져오시면 됩니다.
마지막입니다. 워커의 Settings → Trigger Events → Cron Triggers에서 아래를 넣습니다.
*/2 * * * *
2분에 한 번씩 새 댓글을 확인하고, 키워드가 보이면 바로 DM을 보냅니다. 이제 폰을 꺼놔도 알아서 돌아갑니다.
60일이 지나면 멈춥니다. 만료 전에 아래 주소로 새로 받아서 IG_TOKEN만 바꿔주시면 돼요.
https://graph.instagram.com/refresh_access_token
?grant_type=ig_refresh_token&access_token=지금쓰는토큰
인스타가 정해둔 호출 한도가 넉넉해서, 하루에 수백 명이 달아도 문제가 없었습니다. 저는 릴스 하나에 댓글 290개를 받았는데 전부 나갔어요.
서로 팔로우가 아니면 상대방 요청함으로 들어가는 경우가 있습니다. 그래서 댓글 답글에 요청함을 확인해달라는 말을 같이 넣어두는 게 좋습니다.
MEDIA_IDS에 번호만 추가하면 되고,
다시 만들 필요는 없어요. 한 번 세팅해두면 계속 씁니다.