chirp
OpenClaw browser 도구로 X/Twitter 조작하기. bird CLI의 browser 기반 대안.
Prerequisites
환경 요구사항
- OpenClaw with browser tool enabled
openclawbrowser profile- X/Twitter 계정 로그인 완료
Headless 서버인 경우
Xvfb 가상 디스플레이 필요 (spool 스킬의 Prerequisites 참고)
로그인 (처음 한 번만)
browser action=start profile=openclaw
browser action=open profile=openclaw targetUrl="https://x.com/login"
# 사용자에게 수동 로그인 요청
사용법
1. 타임라인 읽기
browser action=open profile=openclaw targetUrl="https://x.com/home"
browser action=snapshot profile=openclaw compact=true
각 article에서 작성자, 내용, 좋아요/리트윗/답글 수 확인 가능.
2. 트윗 작성
Step 1: 홈에서 텍스트박스 찾기
browser action=open profile=openclaw targetUrl="https://x.com/home"
browser action=snapshot profile=openclaw compact=true
→ textbox "Post text" ref 찾기
Step 2: 내용 입력
browser action=act profile=openclaw request={"kind":"click","ref":"<textbox-ref>"}
browser action=act profile=openclaw request={"kind":"type","ref":"<textbox-ref>","text":"트윗 내용"}
Step 3: Post 버튼 클릭
browser action=snapshot profile=openclaw compact=true
→ button "Post" ref 찾기 (disabled 아닌 것)
browser action=act profile=openclaw request={"kind":"click","ref":"<post-ref>"}
3. 좋아요 누르기
타임라인에서 article 내 button "Like" 또는 button "X Likes. Like" ref 찾아서:
browser action=act profile=openclaw request={"kind":"click","ref":"<like-ref>"}
4. 리트윗
button "Repost" 또는 button "X reposts. Repost" ref 찾아서:
browser action=act profile=openclaw request={"kind":"click","ref":"<repost-ref>"}
browser action=snapshot profile=openclaw compact=true
# "Repost" 옵션 선택
browser action=act profile=openclaw request={"kind":"click","ref":"<repost-option-ref>"}
5. 답글 달기
방법 1: 타임라인에서
browser action=act profile=openclaw request={"kind":"click","ref":"<reply-button-ref>"}
browser action=snapshot profile=openclaw compact=true
# 답글 입력창에 텍스트 입력 후 Reply 버튼 클릭
방법 2: 트윗 페이지에서
browser action=open profile=openclaw targetUrl="https://x.com/username/status/1234567890"
browser action=snapshot profile=openclaw compact=true
# 답글 입력창 찾아서 입력
6. 프로필 보기
browser action=open profile=openclaw targetUrl="https://x.com/username"
browser action=snapshot profile=openclaw compact=true
7. 검색
browser action=open profile=openclaw targetUrl="https://x.com/search?q=검색어&src=typed_query"
browser action=snapshot profile=openclaw compact=true
8. 팔로우
프로필 페이지에서 button "Follow" ref 찾아서:
browser action=act profile=openclaw request={"kind":"click","ref":"<follow-ref>"}
핵심 포인트
- snapshot 먼저 - 모든 작업 전에 현재 상태 확인
- ref는 매번 달라짐 - snapshot에서 항상 새로 찾기
- compact=true - 토큰 절약
- article 구조 - 각 트윗은 article 요소, 내부에 작성자/내용/버튼들
- 트윗 전 확인 - 사용자에게 내용 확인받기
트러블슈팅
| 문제 | 해결 |
|---|---|
| browser 안 됨 | Xvfb 확인, DISPLAY=:99, Gateway 재시작 |
| 로그인 안 됨 | /login으로 이동 후 수동 로그인 |
| Post 버튼 disabled | 텍스트 입력 확인 |
| Rate limit | 잠시 대기 후 재시도 |
vs bird CLI
| 기능 | bird CLI | chirp (browser) |
|---|---|---|
| 설치 | brew 필요 | Xvfb만 있으면 됨 |
| 인증 | 쿠키 추출 | 브라우저 세션 |
| 안정성 | API 기반 | UI 의존 (변경 가능) |
| 속도 | 빠름 | 약간 느림 |