Konek ke X / Twitter
Ada dua jalur yang beda fungsinya: x_search buat baca/riset (read-only, lewat xAI), dan skill xurl buat aksi di akun lo (post, reply, DM, timeline). Jangan ketuker.
| x_search | xurl (skill) | |
|---|---|---|
| Buat apa | Riset publik: diskusi, reaksi, profil, thread. Hasilnya udah disintesis + sitasi. | Aksi akun: post, reply, quote, like, repost, DM, upload media, timeline, mentions, raw API v2. |
| Butuh | Credential xAI (XAI_API_KEY atau OAuth) | App di developer.x.com + CLI xurl + OAuth 2.0 PKCE |
| Bisa posting? | Nggak | Iya |
Jalur 1: x_search (baca doang)
Tool-nya auto-nyala kalau credential xAI ada. Grok yang nyari di server mereka.
XAI_API_KEY=xai-...
> cari di X: orang pada ngomongin apa soal Hermes Agent minggu ini, kasih link post-nyaGak mau? Matiin di hermes tools → Search → x_search.
Jalur 2: xurl (posting & aksi)
xurl itu CLI resmi dari tim X developer platform. Skill-nya bundled di Hermes (skills/social-media/xurl) tapi gak aktif default. Semua output JSON ke stdout.
Install xurl di mesin lo
# salah satu: $ brew install xurl $ npm install -g xurl $ go install github.com/xdevplatform/xurl@latest
Bikin app di developer.x.com
Set redirect URI ke
http://localhost:8080/callback, ambil Client ID & Client Secret. Catatan: akses X API buat posting biasanya butuh plan berbayar (kredit minimum sekitar $5).Daftarin credential & login (DI LUAR sesi agent)
$ xurl auth app --name myapp --client-id <ID> --client-secret <SECRET> $ xurl auth oauth2 # buka browser, login, token kesimpen ke ~/.xurl (auto-refresh)
Langkah ini lo yang jalanin sendiri, bukan agent.
~/.xurlitu file credential. Agent gak boleh baca/print/kirim isinya, dan lo jangan paste credential ke chat. Kalau Hermes jalan di Docker, HOME-nya/opt/data/home, jadi file-nya di/opt/data/home/.xurl.Aktifin skill-nya di Hermes
$ hermes skills install official/social-media/xurl $ hermes skills list | grep xurl
Pake
> /xurl post "tes dari agent gw. kalau lo baca ini berarti jalan." > /xurl cari 10 post terbaru soal "hermes agent", terus reply yang paling relevan pake tone SOUL lo > /xurl liat mentions gw hari ini
Di belakang, agent manggil command kayak
xurl post "...",xurl reply <POST_ID> "...",xurl search "...",xurl timeline. POST_ID bisa URL penuh (https://x.com/user/status/123), dia ekstrak sendiri.
Boundaries khusus X (ini yang bikin gak semena-mena)
Agent yang bisa posting atas nama lo = risiko reputasi. Pasang pagar berlapis:
1. Di SOUL.md / AGENTS.md
# Aturan X
- Sebelum post/reply/DM apapun: tampilin draft, tunggu gw bilang "post".
- Jangan pernah like/repost/follow massal.
- Jangan reply ke akun yang lagi berantem.
- Jangan nyebut harga, janji, atau klaim soal orang/brand tanpa sumber.
- Satu aksi per permintaan. Gak ada loop "post 20 tweet".2. Deny rule buat jalur berbahaya
approvals: deny: - "*xurl* --verbose*" # log verbose bisa bocorin token - "*cat*~/.xurl*" - "*xurl dm*" # kalau lo gak mau agent bisa DM orang - "*xurl* delete*"
3. Approval mode manual buat aksi tulis
Set approvals.mode: manual di profile yang pegang X, biar tiap xurl post lewat lo dulu. Atau pisahin: profile "riset" cuma punya x_search, profile "publish" punya xurl dan cuma lo jalanin pas lo di depan layar.
$ hermes profile create publish $ hermes -p publish # xurl cuma kepasang di sini
4. Verifikasi
Satu-satunya bukti aksi beneran kejadian adalah output JSON dari xurl / respons X API. Kalau agent bilang "udah gw post" tanpa output itu, belum tentu kepost.
Alternatif: plugin pihak ketiga
Ada plugin komunitas kayak hermes-tweet (Xquik) yang ngasih tool tweet_read / tweet_action lewat API mereka, dengan tweet_action dimatiin by default. Patut dicek kalau gak mau ngurus app X sendiri, tapi itu bukan resmi dari X atau Nous: audit dulu.