rakit-agent/hermes
step 08

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_searchxurl (skill)
Buat apaRiset publik: diskusi, reaksi, profil, thread. Hasilnya udah disintesis + sitasi.Aksi akun: post, reply, quote, like, repost, DM, upload media, timeline, mentions, raw API v2.
ButuhCredential xAI (XAI_API_KEY atau OAuth)App di developer.x.com + CLI xurl + OAuth 2.0 PKCE
Bisa posting?NggakIya

Jalur 1: x_search (baca doang)

Tool-nya auto-nyala kalau credential xAI ada. Grok yang nyari di server mereka.

~/.hermes/.env
XAI_API_KEY=xai-...
chat
> cari di X: orang pada ngomongin apa soal Hermes Agent minggu ini, kasih link post-nya

Gak 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.

  1. Install xurl di mesin lo

    bash
    # salah satu:
    $ brew install xurl
    $ npm install -g xurl
    $ go install github.com/xdevplatform/xurl@latest
  2. 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).

  3. Daftarin credential & login (DI LUAR sesi agent)

    bash
    $ 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. ~/.xurl itu 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.

  4. Aktifin skill-nya di Hermes

    bash
    $ hermes skills install official/social-media/xurl
    $ hermes skills list | grep xurl
  5. Pake

    chat
    > /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

SOUL.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

~/.hermes/config.yaml
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.

bash
$ 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.