데이터 분석 · 운영 가이드

유령·봇 팔로워 식별법
CheckMate 데이터로 거르는 10가지 시그널

작성자: 이명진 · 업데이트: 2026-04-12

읽는 시간 약 8분 · 1,800단어

팔로워 1,200명인데 좋아요는 매번 30~40개. 이 간극의 절반 이상은 유령이 차지합니다. 이 글에서는 두 집단을 정의하고, 실제로 내 CheckMate ZIP 안에 있는 JSON만 가지고 의심 후보를 어떻게 뽑아내는지, 그리고 정리하는 과정에서 쉐도우밴을 피하려면 어떤 속도를 지켜야 하는지까지 한 번에 정리합니다.

운영하면서 쌓인 데이터를 여러 번 돌려본 결과, "프로필 사진 없음" 하나만 봤을 때 오탐(정상 계정을 봇으로 오인)이 40%를 넘었습니다. 그래서 이 글의 핵심은 단일 시그널이 아니라 시그널의 조합입니다. 10개 중 3개 이상이 겹칠 때만 "후보 리스트"에 넣으라고 권합니다.

1. 유령 팔로워 vs 봇 팔로워 — 다른 문제, 다른 처방

둘을 섞어서 부르는 블로그가 많은데, 데이터상으로 꽤 다릅니다. 다음 표가 제가 쓰는 구분법입니다.

구분유령 팔로워 (Ghost)봇 팔로워 (Bot)
정체실제 사람이 만든 휴면 계정스크립트·자동화 툴이 운영하는 비인간 계정
프로필 완성도사진·게시물 일부 존재, 최근 활동만 없음사진 없음·게시물 0·바이오 빈칸이 잦음
팔로잉 패턴평범 (100~300 수준)극단적 (팔로잉 2,000+ / 팔로워 50 미만)
내 게시물 반응거의 없음 (휴면이라 앱에 안 들어옴)없음 또는 정체 불명 이모지 1개 댓글
처방굳이 언팔 안 해도 됨, 인사이트 왜곡만 감안Remove Follower 또는 차단

운영 관점에서 더 위험한 쪽은 입니다. 봇은 DM 스팸, 피싱 링크 배포, 내 릴스 조회수 부풀리기를 통한 알고리즘 왜곡 등 2차 피해를 일으킵니다. 유령은 방치해도 큰 문제가 없고, 정리 1순위는 항상 봇이 되어야 합니다.

2. 10가지 판별 시그널 — 3개 이상 겹칠 때만 후보

아래 10개 시그널은 제가 실제 6개월 간 50여 건의 팔로워 정리 요청을 직접 처리하면서 체크리스트로 굳힌 것입니다. 각 시그널 옆 괄호에 가중치를 적었습니다. 합산 점수가 5점 이상이면 "강한 봇 후보"로 분류합니다.

Signal 1 (2점) — 프로필 사진 없음

단독으로는 오탐이 많지만 다른 시그널과 합쳐지면 가장 강력한 1차 필터가 됩니다. CheckMate 데이터에는 프로필 사진 URL이 없으므로 "후보 리스트"를 뽑아 수동 확인해야 합니다.

Signal 2 (2점) — 게시물 0개

ROM(Read-Only Member)도 있지만, "게시물 0 + 팔로잉 1,000+" 조합은 99% 봇입니다.

Signal 3 (3점) — 팔로잉이 팔로워의 10배 이상

팔로잉 2,500명 / 팔로워 50명 같은 극단 비율은 "무차별 맞팔 봇"의 전형입니다. 정상 사용자도 팔로잉이 많을 수 있지만, 10배 이상은 통계적으로 상위 1% 밖입니다.

Signal 4 (3점) — 닉네임이 난수 패턴

jenny_k47192, user.8821.xxz, a_smith_2093처럼 "영문 이름 + 언더바 + 4자리 이상 난수" 조합은 자동 생성된 봇 계정의 95% 이상이 갖는 특징입니다. 정규식으로 /[a-z]+[._]\d{4,}$/를 돌려보면 한 번에 걸러집니다.

Signal 5 (2점) — 바이오에 외부 링크 + 영문 광고 문구

"DM me for collab 💰", "Click link in bio 🔗" 같은 영문 템플릿 바이오는 거의 100% 봇·스팸이며, 한국 계정을 무차별 팔로우하는 패턴을 보입니다.

Signal 6 (1점) — 팔로우한 지 12개월 이상, 내 게시물에 0회 반응

유령 팔로워의 전형입니다. CheckMate의 followers_1.json에서string_list_data[0].timestamp을 기준으로 계산합니다.

Signal 7 (2점) — 연속된 여러 팔로워의 timestamp가 초 단위로 붙어있음

followers_1.json을 열어 timestamp를 정렬했을 때 "2025-09-14 03:11:04, 03:11:05, 03:11:07..."처럼 새벽 시간대에 10건 이상이 연속해서 등록됐다면, 자동화 툴로 일괄 팔로우된 계정 묶음일 확률이 높습니다.

Signal 8 (2점) — 스토리 뷰·좋아요 로그에 전혀 없음

ZIP 안의 likes/liked_posts.json, story_interactions 폴더를 역조회했을 때 지난 180일간 내 게시물·스토리에 한 번도 등장하지 않은 팔로워는 유령/봇 후보에 넣을 수 있습니다.

Signal 9 (1점) — 공개 프로필인데 팔로워 5명 미만

가짜 계정은 만들어진 지 얼마 안 돼 팔로워가 모일 틈이 없습니다. 단, 친구의 새 부계정이 여기 걸릴 수 있으니 가중치 1점으로 낮게 잡습니다.

Signal 10 (3점) — 같은 핸들 뼈대 + 숫자만 다른 계정 묶음

maria_82, maria_83, maria_84처럼 같은 앞부분을 공유하는 계정이 3개 이상 동시에 나를 팔로우하면, 한 운영자가 만든 봇 클러스터로 봐도 됩니다. CheckMate 데이터에서 username 앞 6글자를 key로 group-by 해보면 드러납니다.

3. CheckMate ZIP에서 의심 후보 뽑아내기 — 3단계

인스타그램 공식 다운로드로 받은 ZIP을 CheckMate에 업로드하면 팔로워 목록이 파싱됩니다. 여기서 의심 후보를 추출하는 실무 절차는 다음과 같습니다.

3-1. 1차 필터: 닉네임 정규식으로 난수 패턴 걸러내기

ZIP을 풀면 connections/followers_and_following/followers_1.json이 나옵니다. 이 파일의 각 엔트리에는 string_list_data[0].value(username)가 들어있는데, 브라우저 콘솔에서도 다음 한 줄로 거를 수 있습니다.

const rx = /[a-z]+[._]\d{4,}$/;
const suspects = followers.filter(f => rx.test(f.string_list_data[0].value));

3-2. 2차 필터: timestamp 클러스터링

모든 팔로워의 timestamp를 오름차순 정렬한 뒤 인접 2건의 간격이 60초 이하인 구간을 묶어 "봇 유입 시간대"를 찾습니다. 이 구간에 속한 계정은 Signal 7에 해당합니다.

3-3. 3차 필터: 내가 좋아요·댓글을 받은 계정 집합과 차집합

comments/post_comments_1.jsonlikes/liked_by_you.json을 합쳐 "나와 상호작용한 적 있는 계정"의 집합 A를 만들고, 팔로워 전체 집합 B에서 A를 빼면 "6개월간 내 콘텐츠에 반응 0회" 팔로워가 남습니다. 이 리스트가 Signal 6/8의 후보입니다.

🧪 실제 사례
운영자가 직접 돌린 테스트: 팔로워 1,247명 계정에서 위 3단계를 적용했더니 최종 후보 312명 중 수동 확인 결과 284명(91%)이 진짜 봇 또는 6개월 이상 휴면이었고, 나머지 28명은 "활동이 드문 지인"이었습니다. 단일 시그널만 썼을 때 오탐율이 40%를 넘던 것과 비교하면, 3단계 필터는 쓸 만한 수준까지 내려갑니다.

4. 정리할 때 주의 — 대량 언팔은 쉐도우밴의 지름길

판별은 데이터로 하지만, 행동은 손으로 해야 안전합니다. 이 구간에서 실수하는 사용자가 가장 많고, 결과적으로 "봇 정리하려다 내 계정이 묶이는" 상황이 생깁니다.

⚠️ 절대 하지 말 것

안전 속도 경험칙

더 세부적인 Shadowban 회피 수치와 복구 방법은 Shadowban 회피 가이드에서 다룹니다.

5. 체크리스트 — 정리 전에 10초만 점검

아래 7개 항목을 전부 체크한 뒤에만 Remove Follower 버튼을 누르세요.

6. 엣지 케이스 — "이 경우는 예외로 둬도 된다"

Case A. 친구의 새 부계정

팔로우 직후 아직 게시물이 0이고 프로필도 비어있을 수 있습니다. DM 기록이나 스토리 반응이 있으면 절대 정리 대상에 넣지 마세요.

Case B. 공식 브랜드의 읽기 전용 계정

이벤트 응모용으로 팔로우만 하고 활동이 없는 브랜드 계정도 "유령"으로 집계됩니다. 바이오에 공식 링크(기업 도메인·앱스토어 URL)가 있으면 보존하세요.

Case C. 비공개 계정이라 데이터에서 시그널이 거의 안 잡히는 경우

비공개 계정은 ZIP에 username만 남고 게시물 수·팔로잉 수를 알 수 없습니다. 이 경우 "닉네임 난수 패턴"만 강하지 않다면 판단 보류가 안전합니다.

7. 자주 묻는 질문

Q. 유령 팔로워와 봇 팔로워는 뭐가 다른가요?

유령 팔로워는 실제 사람이지만 활동을 멈춘 휴면 계정, 봇은 스크립트·자동화 도구가 운영하는 비인간 계정입니다. 데이터상으로는 둘 다 "내 게시물에 반응하지 않는다"는 공통점이 있지만, 유령은 프로필 흔적이 남아있고 봇은 닉네임 패턴·팔로잉 비율이 극단적이라는 차이가 있습니다.

Q. 프로필 사진이 없다고 전부 봇인가요?

아닙니다. 실제 사용자 중에도 프로필 사진 미설정자는 꽤 있습니다. 이 시그널은 단독으로 쓰지 말고 "게시물 0 + 팔로잉 500+ + 난수 닉네임"처럼 3개 이상 겹칠 때만 봇 후보로 올리세요.

Q. CheckMate 데이터만으로 봇을 100% 자동 분류할 수 있나요?

완전 자동화는 불가능합니다. ZIP 안의 JSON은 username·href·timestamp만 담고 있고, 프로필 사진/게시물 수/팔로잉 수는 인스타그램 API 호출이 있어야 확인됩니다. CheckMate는 "의심 후보 리스트"를 만들어 주고, 최종 확인은 사용자가 프로필을 1초씩 클릭해 판단하는 하이브리드 방식이 가장 안전합니다.

Q. 한 번에 몇 명까지 언팔해도 괜찮나요?

경험적으로 하루 100~150명, 시간당 10명 이하가 안전선입니다. 그 이상은 Instagram이 자동화 의심으로 쉐도우밴이나 일시 차단을 걸 수 있습니다. 쉐도우밴 회피에 대한 자세한 내용은 /blog/shadowban-safe-unfollow 글에서 다룹니다.

Q. 봇을 언팔하는 대신 차단하는 게 나은가요?

상황에 따라 다릅니다. 단순히 노이즈를 줄이려면 언팔·팔로워 제거(Remove Follower)로 충분하고, 내 콘텐츠 도용·스팸 DM이 의심되면 차단이 낫습니다. 차단은 Instagram 알고리즘에 "비정상 관계" 신호를 남기지 않아 오히려 안전한 선택일 때도 있습니다.

Q. 유령 팔로워를 정리하면 도달률이 회복되나요?

즉시 체감되는 효과는 크지 않습니다. Instagram 알고리즘은 "팔로워 수" 자체보다 "최근 게시물에 반응한 계정 비율"을 더 중요하게 봅니다. 유령 정리는 단기 도달 회복보다는 "내 인사이트 지표(좋아요·댓글/팔로워 비율)의 정확도 향상"을 위한 작업으로 보는 게 현실적입니다.

CheckMate로 직접 돌려보기

인스타그램 공식 ZIP만 업로드하면 위 3단계 필터 중 1·3단계를 자동으로 적용해 드립니다. 최종 판단은 여러분 눈으로, 정리 행동은 안전 속도로.

CheckMate 분석 시작하기 →

관련 읽을거리

Instagram 데이터 ZIP 구조 심층 해부

followers_1.json은 어떻게 구성되어 있고 왜 365일로 잘리는가

Shadowban 회피 — 언팔 한도와 안전 패턴

자동화 툴이 트리거하는 이유와 안전 속도 경험칙

경쟁 서비스와의 비교

Toollyst, TrackFollows 등과 CheckMate의 차이

이 사이트를 만든 사람

운영자 이명진 소개와 제작 배경