home / skills / aaaaqwq / agi-super-skills / spool

spool skill

/skills/social-media/spool

This skill lets you read timelines post replies and search Threads using OpenClaw to manage content efficiently.

This is most likely a fork of the spool skill from openclaw
npx playbooks add skill aaaaqwq/agi-super-skills --skill spool

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
4.2 KB
---
name: spool
description: "Threads CLI - Read, post, reply, and search on Meta's Threads using OpenClaw browser tool. Use when the user wants to interact with Threads: posting, reading timeline, viewing profiles, replying to threads, or searching."
homepage: https://github.com/zizi-cat/spool
metadata: {"clawdhub":{"emoji":"๐Ÿงต"}}
---

# spool

OpenClaw browser ๋„๊ตฌ๋กœ Threads (threads.net) ์กฐ์ž‘ํ•˜๊ธฐ.

## Prerequisites

### ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ
- OpenClaw with browser tool enabled
- `openclaw` browser profile
- Threads ๊ณ„์ • ๋กœ๊ทธ์ธ ์™„๋ฃŒ

### Headless ์„œ๋ฒ„์ธ ๊ฒฝ์šฐ (GUI ์—†์Œ)

Xvfb ๊ฐ€์ƒ ๋””์Šคํ”Œ๋ ˆ์ด ํ•„์š”:

```bash
# 1. Xvfb ์„ค์น˜ ๋ฐ ์„œ๋น„์Šค ๋“ฑ๋ก
sudo apt install -y xvfb
sudo tee /etc/systemd/system/xvfb.service << 'EOF'
[Unit]
Description=X Virtual Frame Buffer
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/Xvfb :99 -screen 0 1920x1080x24
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now xvfb

# 2. OpenClaw Gateway์— DISPLAY ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€
mkdir -p ~/.config/systemd/user/openclaw-gateway.service.d
echo -e '[Service]\nEnvironment=DISPLAY=:99' > ~/.config/systemd/user/openclaw-gateway.service.d/display.conf
systemctl --user daemon-reload
systemctl --user restart openclaw-gateway
```

### ๋กœ๊ทธ์ธ (์ฒ˜์Œ ํ•œ ๋ฒˆ๋งŒ)

```
browser action=start profile=openclaw
browser action=open profile=openclaw targetUrl="https://www.threads.net/login"
# ์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆ˜๋™ ๋กœ๊ทธ์ธ ์š”์ฒญ
```

---

## ์‚ฌ์šฉ๋ฒ•

### 1. ํƒ€์ž„๋ผ์ธ ์ฝ๊ธฐ

```
browser action=open profile=openclaw targetUrl="https://www.threads.net"
browser action=snapshot profile=openclaw compact=true
```

๊ฒฐ๊ณผ์—์„œ ๊ฐ ๊ฒŒ์‹œ๋ฌผ์˜ ์ž‘์„ฑ์ž, ๋‚ด์šฉ, ์ข‹์•„์š”/๋Œ“๊ธ€ ์ˆ˜ ํ™•์ธ ๊ฐ€๋Šฅ.

### 2. ํฌ์ŠคํŒ… (์ „์ฒด ํ”Œ๋กœ์šฐ)

**Step 1: ํ™ˆ์œผ๋กœ ์ด๋™**
```
browser action=open profile=openclaw targetUrl="https://www.threads.net"
browser action=snapshot profile=openclaw compact=true
```

**Step 2: "What's new?" ๋ฒ„ํŠผ ์ฐพ์•„์„œ ํด๋ฆญ**
snapshot์—์„œ `"What's new?"` ๋˜๋Š” `"Empty text field"` ํฌํ•จ๋œ button์˜ ref ์ฐพ๊ธฐ
```
browser action=act profile=openclaw request={"kind":"click","ref":"e14"}
```
(ref๋Š” snapshot๋งˆ๋‹ค ๋‹ค๋ฆ„! ๋ฐ˜๋“œ์‹œ snapshot์—์„œ ํ™•์ธ)

**Step 3: ๋‹ค์ด์–ผ๋กœ๊ทธ์—์„œ ํ…์ŠคํŠธ ์ž…๋ ฅ**
```
browser action=snapshot profile=openclaw compact=true
```
`textbox` ref ์ฐพ์•„์„œ:
```
browser action=act profile=openclaw request={"kind":"type","ref":"e14","text":"ํฌ์ŠคํŒ… ๋‚ด์šฉ"}
```

**Step 4: Post ๋ฒ„ํŠผ ํด๋ฆญ**
```
browser action=act profile=openclaw request={"kind":"click","ref":"e22"}
```
(Post ๋ฒ„ํŠผ ref๋„ snapshot์—์„œ ํ™•์ธ)

**Step 5: ํ™•์ธ**
```
browser action=snapshot profile=openclaw compact=true
```
โ†’ "Posted" ํ…์ŠคํŠธ์™€ "View" ๋งํฌ๊ฐ€ ๋ณด์ด๋ฉด ์„ฑ๊ณต!

### 3. ํ”„๋กœํ•„ ๋ณด๊ธฐ

```
browser action=open profile=openclaw targetUrl="https://www.threads.net/@username"
browser action=snapshot profile=openclaw compact=true
```

### 4. ๊ฒ€์ƒ‰

```
browser action=open profile=openclaw targetUrl="https://www.threads.net/search?q=๊ฒ€์ƒ‰์–ด"
browser action=snapshot profile=openclaw compact=true
```

### 5. ๋‹ต๊ธ€ ๋‹ฌ๊ธฐ

```
# ๊ฒŒ์‹œ๋ฌผ ์—ด๊ธฐ
browser action=open profile=openclaw targetUrl="https://www.threads.net/@user/post/POSTID"
browser action=snapshot profile=openclaw compact=true

# Reply ๋ฒ„ํŠผ ํด๋ฆญ (ref ํ™•์ธ ํ›„)
browser action=act profile=openclaw request={"kind":"click","ref":"<reply-ref>"}

# ํ…์ŠคํŠธ ์ž…๋ ฅ ๋ฐ ๊ฒŒ์‹œ (ํฌ์ŠคํŒ…๊ณผ ๋™์ผ)
```

---

## ํ•ต์‹ฌ ํฌ์ธํŠธ

1. **snapshot ๋จผ์ €!** - ๋ชจ๋“  ์ž‘์—… ์ „์— snapshot์œผ๋กœ ํ˜„์žฌ ํŽ˜์ด์ง€ ์ƒํƒœ์™€ ref ํ™•์ธ
2. **ref๋Š” ๋งค๋ฒˆ ๋‹ฌ๋ผ์ง** - snapshot ๊ฒฐ๊ณผ์—์„œ ํ•ญ์ƒ ์ƒˆ๋กœ ์ฐพ๊ธฐ
3. **compact=true** - ํ† ํฐ ์ ˆ์•ฝ์„ ์œ„ํ•ด ํ•ญ์ƒ ์‚ฌ์šฉ
4. **targetId ์œ ์ง€** - ๊ฐ™์€ ํƒญ์—์„œ ์ž‘์—…ํ•˜๋ ค๋ฉด targetId ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉ
5. **ํฌ์ŠคํŒ… ์ „ ํ™•์ธ** - ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚ด์šฉ ํ™•์ธ๋ฐ›๊ณ  ํฌ์ŠคํŒ…

---

## ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

| ๋ฌธ์ œ | ํ•ด๊ฒฐ |
|------|------|
| browser ๋„๊ตฌ ์•ˆ ๋จ | Xvfb ์‹คํ–‰ ํ™•์ธ, DISPLAY=:99 ์„ค์ • ํ™•์ธ, Gateway ์žฌ์‹œ์ž‘ |
| ๋กœ๊ทธ์ธ ์•ˆ ๋จ | `/login` ํŽ˜์ด์ง€๋กœ ์ด๋™ ํ›„ ์ˆ˜๋™ ๋กœ๊ทธ์ธ ์š”์ฒญ |
| ref ๋ชป ์ฐพ์Œ | snapshot ๋‹ค์‹œ ์ฐ๊ณ  ๋น„์Šทํ•œ ํ…์ŠคํŠธ/๋ฒ„ํŠผ ์ฐพ๊ธฐ |
| ํฌ์ŠคํŒ… ์•ˆ ๋จ | Post ๋ฒ„ํŠผ์ด disabled์ธ์ง€ ํ™•์ธ (ํ…์ŠคํŠธ ์ž…๋ ฅ ํ•„์š”) |

Overview

This skill provides a CLI workflow to read, post, reply, view profiles, and search on Meta's Threads using the OpenClaw browser tool. It automates browser navigation and interaction while guiding you to confirm actions like posting. It is intended for users who already have an OpenClaw profile and a logged-in Threads account.

How this skill works

The skill uses OpenClaw browser actions to open Threads pages, take compact snapshots to discover dynamic element refs, and perform click/type actions to interact with the UI. Key commands include open, snapshot (compact=true to save tokens), and act with click/type requests using refs discovered in snapshots. It supports timeline reading, posting, replying, profile viewing, and search by composing appropriate target URLs and following the snapshotโ†’actโ†’snapshot loop.

When to use it

  • Reading your Threads timeline from the CLI or a headless server.
  • Creating a new post after confirming content with the user.
  • Replying to an existing thread or opening a specific post.
  • Viewing a user profile or inspecting a post's details.
  • Searching Threads for keywords or hashtags programmatically.

Best practices

  • Always run a snapshot before any click or typeโ€”refs change every snapshot.
  • Use compact=true for snapshots to minimize token usage.
  • Keep the same targetId when you need to operate in the same tab.
  • On headless servers, ensure Xvfb is running and DISPLAY is set (e.g., :99).
  • Ask the user to confirm post content before triggering the Post action.

Example use cases

  • Open the home timeline and list recent posts with author and counts.
  • Compose a new post: open home, click the 'Whatโ€™s new?' box, type text, and click Post.
  • Open a specific post URL and reply using snapshot to locate the reply control.
  • Visit a profile URL to scrape bio and recent posts for monitoring.
  • Run a search URL and snapshot results to extract matching threads programmatically.

FAQ

What do I do if a click or type action fails?

Take another snapshot and re-find the correct element ref. Refs are ephemeral and usually the cause of failures.

How do I operate on a headless server without a GUI?

Install and run Xvfb, set DISPLAY (for example :99), and restart the OpenClaw gateway so the browser tool can render pages.