자동화된 스레드 계정 정지 피하기

 

n8n과 Gemini API를 활용한 무자본 주식 시황 및 콘텐츠 자동화 시스템을 구축할 때 가장 중요한 고비는 '스레드(Threads) 계정 정지 피하기'입니다.

스레드는 비공식 세션 기반 자동 포스팅 시 단순 발행 수량(Rate Limit)보다 '매일 같은 시간에 같은 패턴으로 글이 올라오는 행위'를 스팸봇으로 감지합니다. 이 글에서는 n8n을 이용해 패턴 무작위화(Randomization)를 적용하고, 비공식 HTTP 연동 및 세션 만료 텔레그램 알림 구축까지 한 번에 끝내는 실전 가이드를 정리합니다.


🚀 1단계: 발행 시간 무작위화 (Random Delay)

매일 정확히 정각(예: 08:00)에 포스팅이 올라가면 스팸 필터에 쉽게 적발됩니다. Schedule Trigger 뒤에 Wait 노드를 배치하여 매일 불규칙한 시간에 발송되도록 설정합니다.

  • Schedule Trigger: 매일 오전 08:00 시작 지정
  • Wait 노드 설정: Resume(On Interval) / Unit(Seconds)
  • Amount 수식 (Expression 모드):
{{ Math.floor(Math.random() * (2700 - 300 + 1)) + 300 }}

* 300초(5분) ~ 2700초(45분) 사이의 무작위 대기 시간이 부여되어 매일 08:05 ~ 08:45 사이에 포스팅이 자동 실행됩니다.


🎨 2단계: 프롬프트 및 글 구조 무작위화

AI가 매번 동일한 템플릿과 말투로 글을 쓰면 이 역시 패턴으로 감지됩니다. Gemini 노드의 Prompt 필드에 JavaScript 배열 수식을 삽입하여 말투, 글 구조, 이모지 형태를 매일 다르게 생성합니다.

Gemini 노드 프롬프트 템플릿

다음 주식/경제 데이터를 바탕으로 스레드(Threads)용 포스팅 글을 작성해 주세요.

[데이터]
{{ $json.news_summary }}

[작성 규칙 - 아래 스타일에 맞게 무작위 적용]
1. 말투/톤: {{ ['친근하고 가벼운 인플루언서 톤', '전문적이고 차분한 증시 분석가 톤', '직관적이고 짧은 브리핑 톤'][Math.floor(Math.random() * 3)] }}
2. 시작 방식: {{ ['궁금증을 유발하는 질문으로 시작', '오늘의 가장 중요한 숫자/지수로 시작', '핵심 이슈 1가지를 바로 직언하며 시작'][Math.floor(Math.random() * 3)] }}
3. 이모지 사용: {{ ['핵심 포인트에 2~3개만 사용', '문단마다 적극 활용', '텍스트 위주로 이모지 최소화'][Math.floor(Math.random() * 3)] }}
4. 글자 수: 공백 포함 400자 이내
5. 마지막 문장: {{ ['이웃들의 의견을 묻는 질문으로 마무리', '내일 시장 관전 포인트를 언급하며 마무리', '단호한 요약 한 줄로 깔끔하게 종료'][Math.floor(Math.random() * 3)] }}

해시태그: {{ ['#주식시황 #증시', '#미국증시 #경제뉴스', '#재테크 #주식투자'][Math.floor(Math.random() * 3)] }}

📡 3단계: HTTP Request 노드로 스레드 비공식 포스팅

공식 API의 까다로운 앱 심사 없이 웹 세션 쿠키를 활용하여 스레드 내부 API로 Directly 전달하는 노드 세팅법입니다.

1) 노드 기본 설정

  • Method: POST
  • URL: https://www.threads.net/api/v1/media/configure_text_only_post/
  • Body Content Type: Form Urlencoded

2) Header 설정

Header Key Header Value
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...
Cookie sessionid=YOUR_SESSION; csrftoken=YOUR_CSRF; ds_user_id=...
X-IG-App-ID 238260118697367
X-CSRFToken YOUR_CSRF_TOKEN
X-FB-LSD YOUR_LSD_TOKEN

3) Body (Form Urlencoded) 설정

  • caption: {{ $json.output_text }} (Gemini 생성 텍스트)
  • text_post_app_info: {"reply_control": 0}
  • upload_id: {{ Date.now() }}

🔔 4단계: 세션 만료(401/403) 대응 텔레그램 알림 시스템

웹 세션 쿠키는 일정 시간이 지나거나 비밀번호 변경 시 만료됩니다. 실패 시 즉시 텔레그램으로 알림을 받아 쿠키를 갱신할 수 있도록 에러 전용 워크플로우를 연결합니다.

1) 텔레그램 봇 준비

  1. @BotFather 대화 → /newbot 입력 → HTTP API Token 발급
  2. @userinfobot 대화 → /start 입력 → 본인 Chat ID(숫자) 확인

2) Error Trigger 워크플로우 구성

별도 워크플로우를 생성하여 Error TriggerTelegram 노드를 연결하고, 메인 워크플로우의 Settings > Error Workflow에 지정합니다.

[텔레그램 알림 메시지 템플릿]
⚠️ [스레드 자동 발행 에러 발생]
• 워크플로우: {{ $json.workflow.name }}
• 실패 노드: {{ $json.execution.error.node.name }}
• 에러 내용: {{ $json.execution.error.message }}
• HTTP 상태: {{ $json.execution.error.context?.httpCode || '401/403 (세션 만료 추정)' }}

💡 Threads 세션 쿠키(sessionid, csrftoken)가 만료되었는지 확인 후 n8n 헤더를 갱신해 주세요.

💡 요약 및 운영 수칙

  1. 수량보다 안정성: 하루 1~2개의 고품질 리포트를 일정 무작위화로 발행하는 것이 계정 장수 비결입니다.
  2. 패턴 흔들기: 시간(Random Delay)과 문체(Random Prompt) 조합으로 '사람처럼' 보이게 만들어야 합니다.
  3. 모니터링 자동화: 세션 만료 오류 발생 시 텔레그램 알림으로 즉각 대응하여 공백을 최소화합니다.

댓글

이 블로그의 인기 게시물

정부 무료 공공데이터 종류 총정리 & Python API 실전 호출 연동 가이드

말 대신 화면을 녹화하면 AI가 그대로 따라합니다: 클로드(Claude) 화면 녹화 스킬 & Chrome 연동 가이드

Claude Code 하나로 논문 작성부터 심사까지: academic-research-skills 완벽 가이드