Back to Skills
    ๐Ÿฆž

    chirp

    X/Twitter CLI using OpenClaw browser tool.

    By @zizi-cat
    View on GitHub
    SKILL.md
    ---
    name: chirp
    description: "X/Twitter CLI using OpenClaw browser tool. Use when the user wants to interact with X/Twitter: reading timeline, posting tweets, liking, retweeting, replying, or searching. Alternative to bird CLI for environments without Homebrew."
    homepage: https://github.com/zizi-cat/chirp
    metadata: {"clawdhub":{"emoji":"๐Ÿฆ"}}
    ---
    
    # chirp
    
    OpenClaw browser ๋„๊ตฌ๋กœ X/Twitter ์กฐ์ž‘ํ•˜๊ธฐ. bird CLI์˜ browser ๊ธฐ๋ฐ˜ ๋Œ€์•ˆ.
    
    ## Prerequisites
    
    ### ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ
    - OpenClaw with browser tool enabled
    - `openclaw` browser 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>"}
    ```
    
    ---
    
    ## ํ•ต์‹ฌ ํฌ์ธํŠธ
    
    1. **snapshot ๋จผ์ €** - ๋ชจ๋“  ์ž‘์—… ์ „์— ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ
    2. **ref๋Š” ๋งค๋ฒˆ ๋‹ฌ๋ผ์ง** - snapshot์—์„œ ํ•ญ์ƒ ์ƒˆ๋กœ ์ฐพ๊ธฐ
    3. **compact=true** - ํ† ํฐ ์ ˆ์•ฝ
    4. **article ๊ตฌ์กฐ** - ๊ฐ ํŠธ์œ—์€ article ์š”์†Œ, ๋‚ด๋ถ€์— ์ž‘์„ฑ์ž/๋‚ด์šฉ/๋ฒ„ํŠผ๋“ค
    5. **ํŠธ์œ— ์ „ ํ™•์ธ** - ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚ด์šฉ ํ™•์ธ๋ฐ›๊ธฐ
    
    ---
    
    ## ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
    
    | ๋ฌธ์ œ | ํ•ด๊ฒฐ |
    |------|------|
    | browser ์•ˆ ๋จ | Xvfb ํ™•์ธ, DISPLAY=:99, Gateway ์žฌ์‹œ์ž‘ |
    | ๋กœ๊ทธ์ธ ์•ˆ ๋จ | `/login`์œผ๋กœ ์ด๋™ ํ›„ ์ˆ˜๋™ ๋กœ๊ทธ์ธ |
    | Post ๋ฒ„ํŠผ disabled | ํ…์ŠคํŠธ ์ž…๋ ฅ ํ™•์ธ |
    | Rate limit | ์ž ์‹œ ๋Œ€๊ธฐ ํ›„ ์žฌ์‹œ๋„ |
    
    ---
    
    ## vs bird CLI
    
    | ๊ธฐ๋Šฅ | bird CLI | chirp (browser) |
    |------|----------|-----------------|
    | ์„ค์น˜ | brew ํ•„์š” | Xvfb๋งŒ ์žˆ์œผ๋ฉด ๋จ |
    | ์ธ์ฆ | ์ฟ ํ‚ค ์ถ”์ถœ | ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜ |
    | ์•ˆ์ •์„ฑ | API ๊ธฐ๋ฐ˜ | UI ์˜์กด (๋ณ€๊ฒฝ ๊ฐ€๋Šฅ) |
    | ์†๋„ | ๋น ๋ฆ„ | ์•ฝ๊ฐ„ ๋А๋ฆผ |