Claude Code로 X(Twitter) 요약 알림봇 1시간 만에 만들기

Claude Code로 X(Twitter) 요약 알림봇 1시간 만에 만들기

Claude Code로 X(Twitter) 요약 알림봇 1시간 만에 만들기

오늘 만들 것

오늘 만들 것
오늘 만들 것

최근에 트위터(X)에서 유용한 AI 정보를 올리는 해외 계정들을 계속 확인하고 있는데, 매번 직접 들어가서 보는 일이 은근히 번거롭더라구요. 그래서 이번에는 Claude Code를 사용해 특정 계정의 트윗을 실시간으로 감시하고, AI가 한 줄로 요약한 뒤 슬랙으로 바로 보내주는 봇을 만들어보겠습니다. 지난번 중고차 시세 평가 에이전트 웹앱에 이어, 이번에는 SNS 데이터를 실시간으로 가져와 처리하는 실전형 봇을 만들어보는 흐름입니다. 완성되면 아래처럼 슬랙 채널에 깔끔한 요약 카드 형태로 새 글 알림이 들어옵니다.

준비물

준비물

이번 작업에 필요한 도구는 Claude Code 하나입니다. Playwright 라이브러리를 사용해 트위터 페이지를 가져올 것이기 때문에, 별도의 유료 Twitter API 키는 필요하지 않구요. 슬랙 웹훅 URL만 미리 준비해두면 시작할 수 있습니다.

만들기

만들기

Claude Code를 켜고, 차근차근 뼈대부터 조립해 나가는 흐름입니다.

1
프로젝트 초기화와 환경 구성하기

첫 단계에서는 프로젝트 뼈대를 잡고 필요한 도구들을 설치합니다.

AI에게 보낸 프롬프트
Claude Code를 시작할게. 먼저 npm 프로젝트를 생성하고, 트위터 웹페이지를 긁어오기 위한 playwright와 요약에 사용할 anthropic sdk, 그리고 슬랙 전송을 위한 axios를 설치해줘. 그리고 /init 명령을 실행해 프로젝트 규칙을 정의할 CLAUDE.md 파일을 만들어서 npm start 명령어로 전체 실행이 가능하도록 구조를 잡아줘.
왜 이렇게 시켰나: 트위터는 동적 로딩이 많아서 일반 크롤러로는 막히기 쉽기 때문에, 처음부터 Playwright 환경을 설정해 두는 편이 유리하구요. Claude Code가 프로젝트의 실행 명령을 기억하도록 CLAUDE.md 규칙 파일을 미리 구성하는 것도 뼈대를 튼튼하게 만들기 위해서입니다.

터미널에서 의존성 설치가 끝나면 프로젝트 구조가 빠르게 잡힙니다. 만약 Playwright 설치 과정에서 브라우저 드라이버 빌드가 깨진다면, 바로 다음 명령어로 브라우저 바이너리를 추가해주는 편이 편하거든요.

2
트윗 수집 및 AI 요약 스크립트 작성하기

이제 실제로 데이터를 가져와 요약하는 핵심 스크립트를 작성할 차례입니다.

AI에게 보낸 프롬프트
특정 트위터 계정의 프로필 페이지(예: https://x.com/AnthropicAI)에서 최신 트윗 3개를 가져오는 스크립트를 playwright로 작성해줘. 가져온 트윗 텍스트를 Anthropic API를 사용해 핵심만 한국어 1줄로 요약하는 로직도 추가해줘. 완성된 파일은 index.js로 저장하고, 요약의 일관성을 위해 AGENTS.md 파일에 '어조: 담백하게, 이모지 금지, 한국어 1줄 요약' 규칙을 정의해서 반영해줘.
왜 이렇게 시켰나: 처음부터 슬랙 연동까지 한 번에 묶으면 프롬프트가 꼬이거나 에러가 나기 쉽거든요. 일단 트윗 수집과 AI 요약이 잘 돌아가는지 핵심 기능부터 확인하고, AGENTS.md로 출력 톤과 규칙을 고정해 두는 흐름입니다.

스크립트를 실행하면 터미널에 수집된 트윗 원문과 번역, 요약 결과가 바로 뜹니다. 다만 트위터 로그인 창이 갑자기 떠서 수집을 막을 수 있으니, 비로그인 상태로 프로필 페이지를 긁어오는 셀렉터 설정을 신경 써야 하구요.

3
슬랙 알림 연동 및 중복 전송 방지하기

수집된 요약본을 슬랙으로 보내고, 중복 알림이 반복되지 않도록 장치를 넣습니다.

AI에게 보낸 프롬프트
index.js에 슬랙 수신 웹훅(Incoming Webhook) 전송 기능을 추가해줘. 그리고 동일한 트윗이 중복으로 알림 가지 않도록, 이미 전송한 트윗의 ID를 로컬 text 파일(last_tweet.txt)에 저장해서 비교하는 중복 방지 로직을 추가해줘.
왜 이렇게 시켰나: 알림이 1분마다 중복으로 계속 오면 슬랙 채널이 지저분해지기 때문에, 로컬 파일로 마지막 수집 ID를 기억하게 만들어야 합니다.

슬랙 채널에 예쁘게 요약된 트윗 카드가 도착합니다. 이때 로컬 파일 쓰기 권한 에러가 날 수 있으니, 파일 생성 위치와 경로를 꼼꼼하게 확인해두는 편이 좋습니다.

4
스케줄러 등록하고 자동 검수하기

마지막으로 자동 실행을 붙이고 코드를 검수합니다.

AI에게 보낸 프롬프트
코드에 에러 핸들링이 누락된 부분이 없는지 확인하고, 10분 간격으로 이 작업을 계속 반복 실행하는 스케줄러 코드를 추가해줘. 전체적인 완성도가 괜찮은지 Claude Code의 /review 명령어로 검수해줘.
왜 이렇게 시켰나: 무인으로 계속 돌아가야 하는 봇이기 때문에, 트위터 서버 오류나 네트워크 단절 상황에서도 크래시 없이 재시도하도록 안정성을 높이고 최종 검수를 받기 위함입니다.

여기서 막히면

현상: 터미널 실행 시 브라우저가 안 켜지고 'Executable doesn't exist' 에러 메시지가 뜹니다.
원인: Playwright 설치 중에 브라우저 패키지가 정상적으로 복사되지 않았거나 환경 변수 설정이 빠져 있어서 그렇구요.
해결: 이럴 때는 당황하지 말고 터미널에 npx playwright install 명령어를 실행하면 필요한 바이너리가 다시 다운로드됩니다.

현상: 트윗을 수집할 때 텍스트를 찾지 못하고 빈 배열만 리턴하거나 타임아웃 에러가 납니다.
원인: X(트위터)의 마크업 구조나 클래스명이 주기적으로 바뀌기 때문에, 고정된 CSS 셀렉터가 무력화될 때가 있거든요.
해결: 스크립트의 selector 부분을 article[data-testid='tweet']div[data-testid='tweetText'] 같은 표준 속성 이름으로 바꾸고 대기 시간을 넉넉하게 주면 해결됩니다.

현상: 슬랙 채널에 알림은 오는데 한글 요약 결과가 깨지거나 완전히 엉뚱한 외계어로 출력됩니다.
원인: Anthropic API를 호출할 때 시스템 프롬프트가 명확하지 않아서 AI가 영어나 다른 언어로 답변을 생성했기 때문입니다.
해결: 요약을 요청하는 프롬프트나 AGENTS.md에 '반드시 한국어로 자연스럽게 1줄 요약해줘'라는 명확한 규칙을 적어두면 됩니다.

다음에 붙여볼 것

한 걸음 더

다음 단계로는 이 봇에 다계정 수집 모듈을 얹거나, 수집한 정보를 바탕으로 블로그 포스팅용 긴 원고를 자동으로 발행하는 파이프라인을 연결해봐도 재미있을 것 같구요. 다음 편에서는 이 파이프라인을 활용해 티스토리 자동 포스팅까지 한 번에 밀어붙이는 과정을 다뤄볼 생각입니다.

관련 검색어

  • 🔍 Claude Code 사용법
  • 🔍 Claude Code 비교
  • 🔍 Twitter 사용법
  • 🔍 Twitter 비교
  • 🔍 알림봇 사용법
  • 🔍 알림봇 비교

댓글 쓰기

다음 이전