Tutorial: Scraping Instagram, TikTok, Threads dengan OpenClaw, Hermes + Browser + Tailscale

📎 Source:openclaw-sumopod — view on GitHub & star ⭐
Tutorial: Scraping Instagram, TikTok, Threads dengan OpenClaw, Hermes + Browser + Tailscale
24 menit baca - Beginner sampai Intermediate
Pernah kepikiran scraping data dari Instagram, TikTok, atau Threads tapi bingung mulai dari mana? API resmi terbatas, unofficial API sering ban, dan headless browser gampang ke-detect.
Ada pendekatan yang lebih waras: pakai browser yang sudah login, jalan dari jaringan rumah sendiri, dan akses remote-nya lewat Tailscale. Sebagai operator browser-nya, kamu bisa pakai OpenClaw atau Hermes Agent — setup browser-nya sama.
Tutorial ini cover setup end-to-end: instalasi kedua tool, browser profile khusus, Tailscale tunnel, scraping policy yang etis, plus troubleshooting.
Ringkasan operasional
Kita akan membuat arsitektur seperti ini:
Show diagram source
flowchart TB
U[Operator atau Hermes Chat] --> H[Hermes Agent]
H --> BT[Browser Tool Layer]
BT --> C[Local Chrome atau Camofox]
C --> S1[Instagram]
C --> S2[TikTok]
C --> S3[Threads]
subgraph Home[Mesin Rumah]
H
BT
C
P[Persistent Browser Profile]
E[Export JSON atau CSV]
C --> P
H --> E
end
subgraph Tailnet[Tailscale Tailnet]
R[Remote Laptop atau VPS]
TS[Tailscale IP Rumah 100.x.y.z]
R --> TS
TS --> H
end
E --> D[Downstream: Sheets, Database, atau Markdown Report]
style Home fill:#e3f2fd,stroke:#1565c0
style Tailnet fill:#fff3e0,stroke:#e65100
style E fill:#e8f5e9,stroke:#2e7d32Yang penting bukan sekadar bisa membuka halaman. Yang penting adalah session login tidak hilang, akses Hermes tidak dipublikasikan ke internet, dan scraping dilakukan dengan batas yang jelas.
Kapan pendekatan ini masuk akal
Saya pakai framing ini untuk pekerjaan yang butuh observasi UI, bukan untuk mengambil data massal secara agresif. Contoh yang relatif masuk akal:
- monitoring postingan dari akun milik sendiri atau akun brand yang dikelola;
- membuat report engagement untuk campaign internal;
- membaca komentar publik untuk kebutuhan customer support;
- mengambil screenshot bukti perubahan UI atau konten;
- membuat daftar URL postingan untuk dianalisis manual;
- research kompetitor dalam volume kecil dan wajar.
Yang tidak saya rekomendasikan:
- mengambil data personal skala besar;
- menghindari login challenge, CAPTCHA, atau paywall;
- membuat bot engagement palsu;
- memanen profil, nomor, email, atau identitas orang;
- menjalankan scraping paralel agresif yang mengganggu layanan;
- melanggar Terms of Service platform.
Bagian etika ini bukan formalitas. Untuk sosial media, batas teknis dan batas legal sering terlihat mirip, tapi konsekuensinya berbeda.
Kenapa browser login lebih stabil daripada API unofficial
Instagram, TikTok, dan Threads punya permukaan web yang sering berubah. Unofficial API bisa cepat rusak karena endpoint internal berubah, token berubah, atau request pattern dianggap tidak normal. Browser automation punya tradeoff yang berbeda:
- lebih lambat daripada API;
- lebih mahal secara resource;
- lebih mudah diaudit karena alurnya terlihat;
- lebih dekat dengan perilaku user normal;
- lebih cocok untuk data yang memang terlihat di UI setelah login.
OpenClaw punya browser tool bawaan yang bisa connect ke CDP browser — snapshot halaman, klik, type, navigate, screenshot. Jadi kamu bisa kasih instruction ke OpenClaw via Telegram, dan dia langsung operasikan browser yang sudah login.
Hermes Agent juga mendukung browser automation dengan beberapa backend: Browserbase, Browser Use, Firecrawl, Camofox local mode, local Chromium-family via CDP, dan local browser mode. Untuk browser login + IP rumah, dua opsi paling relevan:
- Local Chromium-family CDP: Hermes menempel ke Chrome, Brave, Chromium, atau Edge yang kita jalankan sendiri.
- Camofox local mode dengan persistence: Hermes memakai browser lokal berbasis Firefox/Camoufox dengan profil persisten.
Cloud browser masih berguna untuk crawling publik, tetapi untuk sosial media yang sudah login, saya lebih suka profil lokal di mesin rumah.
Desain final yang saya rekomendasikan
Baseline yang paling praktis:
- satu mesin rumah selalu online, misalnya mini PC, laptop lama, atau desktop;
- Tailscale aktif di mesin rumah dan device operator;
- Hermes berjalan di mesin rumah;
- browser berjalan di mesin rumah dengan profile khusus scraping;
- akun sosial login manual di browser tersebut;
- hasil scraping disimpan lokal sebagai JSON/CSV/Markdown;
- akses remote hanya lewat Tailscale IP, bukan port publik.
Jangan pakai browser utama pribadi. Buat profil khusus. Tujuannya supaya cookie kerja, tab, extension, dan data pribadi tidak tercampur.
Prasyarat
Di mesin rumah:
- Linux, macOS, atau WSL2 yang stabil untuk menjalankan Hermes;
- Python dan
uvatau installer Hermes sesuai dokumentasi resmi; - Chrome/Chromium/Brave/Edge untuk mode CDP, atau Docker untuk Camofox;
- Tailscale sudah login ke tailnet yang sama dengan device operator;
- akun Instagram, TikTok, dan Threads yang boleh dipakai untuk pekerjaan ini;
- storage lokal untuk output scraping.
Di device remote:
- Tailscale login ke tailnet yang sama;
- browser atau terminal untuk mengakses Hermes;
- permission tailnet yang hanya memberi akses ke port yang diperlukan.
Struktur repo lokal yang disarankan
Saya sarankan memisahkan konfigurasi, prompt, output, dan log. Contoh struktur:
social-browser-scraper/
|-- README.md
|-- .env.example
|-- config/
| |-- targets.instagram.json
| |-- targets.tiktok.json
| |-- targets.threads.json
| |-- scraping-policy.yaml
|-- prompts/
| |-- instagram-post-extract.md
| |-- tiktok-profile-check.md
| |-- threads-replies-summary.md
|-- scripts/
| |-- run-hermes-task.sh
| |-- validate-output.py
| |-- export-to-csv.py
|-- output/
| |-- raw/
| |-- normalized/
| |-- screenshots/
|-- logs/
Untuk repo GitHub, tutorial ini bisa masuk ke:
openclaw-sumopod/tutorials/hermes-browser-social-scraping.md
Untuk blog.fanani.co, format Nuxt Content yang konsisten dengan blueprint bisa masuk ke:
content/tech/setup-scraping-instagram-tiktok-threads-hermes-browser-tailscale.md
Langkah 1: install AI Agent di mesin rumah
Opsi A: OpenClaw
npm i -g openclaw
openclaw gateway init
openclaw gateway start
OpenClaw punya browser tool bawaan — nggak perlu setup tambahan. Tinggal connect ke CDP endpoint Chrome.
Opsi B: Hermes Agent
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
hermes setup
hermes setup tools
# Pilih browser automation → Local Chromium (CDP)
Verifikasi keduanya bisa jalan dan connect ke browser:
# OpenClaw: browser tool langsung bisa dipakai di session
# Hermes:
hermes --version
hermes
Langkah 2: setup Tailscale di mesin rumah
Install Tailscale dari dokumentasi resmi untuk OS yang dipakai, lalu login:
sudo tailscale up
Cek IP tailnet mesin rumah:
tailscale ip -4
Output akan terlihat seperti:
100.88.12.34
IP inilah yang nanti dipakai dari device remote. Selama device remote ada di tailnet yang sama dan ACL mengizinkan, kita bisa mengakses service di mesin rumah tanpa membuka port ke internet.
Jika yang dibutuhkan hanya akses ke Hermes di mesin rumah, tidak perlu subnet router. Subnet router dipakai kalau kita ingin device lain di tailnet bisa mengakses subnet LAN di belakang mesin rumah, misalnya 192.168.1.0/24. Untuk kasus ini, opsi yang lebih sempit dan aman adalah akses langsung ke Tailscale IP mesin Hermes.
Kalau memang butuh subnet router, alurnya:
# Aktifkan IP forwarding di Linux. Simpan sesuai distro masing-masing.
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
# Advertise subnet LAN rumah. Ganti CIDR sesuai jaringan rumah.
sudo tailscale set --advertise-routes=192.168.1.0/24
Lalu approve route dari Tailscale admin console dan batasi ACL. Jangan advertise 0.0.0.0/0 untuk use case ini; itu pola exit node, bukan kebutuhan scraping browser login.
Langkah 3: jalankan browser dengan profil khusus
Opsi A: Chrome/Chromium dengan CDP
Buat direktori profil baru:
mkdir -p "$HOME/.browser-profiles/social-scraper"
Jalankan Chrome atau Chromium dengan remote debugging di localhost saja:
google-chrome \
--user-data-dir="$HOME/.browser-profiles/social-scraper" \
--remote-debugging-address=127.0.0.1 \
--remote-debugging-port=9222 \
--no-first-run \
--no-default-browser-check
Jika memakai Chromium:
chromium \
--user-data-dir="$HOME/.browser-profiles/social-scraper" \
--remote-debugging-address=127.0.0.1 \
--remote-debugging-port=9222 \
--no-first-run \
--no-default-browser-check
Kenapa bind ke 127.0.0.1? Karena CDP adalah kontrol penuh browser. Jangan expose 9222 ke LAN atau internet. Hermes yang berjalan di mesin yang sama bisa menempel ke endpoint itu tanpa membuat port publik.
Buka manual:
https://www.instagram.com/https://www.tiktok.com/https://www.threads.net/
Login seperti biasa. Selesaikan 2FA atau challenge secara manual. Setelah login selesai, tutup tab yang tidak perlu, tapi jangan hapus profile directory.
Connect OpenClaw ke Browser
OpenClaw bisa connect ke CDP browser di mesin yang sama atau via Tailscale:
# Jika OpenClaw berjalan di mesin yang sama dengan Chrome
# Browser tool otomatis detect CDP di localhost:9222
# Jika OpenClaw berjalan di VPS, arahkan ke Tailscale IP rumah
# Configure di gateway config:
cdpEndpoint: "http://100.88.x.x:9222" # ganti dengan Tailscale IP mesin rumah
Dari Telegram, tinggal kirim message ke OpenClaw: "Buka Instagram dan ambil 10 post terakhir dari @brand" — dia akan operasikan browser dan balas hasilnya.
Connect Hermes ke Browser
/browser connect http://127.0.0.1:9222
Hermes menempel ke browser yang sudah login dan bisa langsung menerima task scraping.
Opsi B: Camofox dengan profil persisten
Camofox berguna kalau ingin local anti-detection browsing dan session yang lebih terisolasi. Dari dokumentasi Hermes, konfigurasi persistence harus berada di path nested browser.camofox.managed_persistence, bukan top-level.
Contoh menjalankan Camofox server dengan Docker:
git clone https://github.com/jo-inc/camofox-browser
cd camofox-browser
make build
mkdir -p "$HOME/.camofox-docker"
docker run -d \
--name camofox-browser \
--restart unless-stopped \
-p 127.0.0.1:9377:9377 \
-p 127.0.0.1:6080:6080 \
-e CAMOFOX_PORT=9377 \
-e ENABLE_VNC=1 \
-e VNC_BIND=0.0.0.0 \
-e VNC_RESOLUTION=1920x1080 \
-v "$HOME/.camofox-docker:/root/.camofox" \
camofox-browser:latest
Catatan: nama image bisa berbeda tergantung build Camofox yang dipakai. Cek docker images setelah make build.
Konfigurasi Hermes:
cat >> "$HOME/.hermes/.env" <<'ENV'
CAMOFOX_URL=http://127.0.0.1:9377
ENV
Tambahkan ke ~/.hermes/config.yaml:
browser:
camofox:
managed_persistence: true
Restart Hermes setelah mengubah config. Lalu buka situs sosial melalui browser task, login manual, dan cek apakah login bertahan setelah task baru. Kalau setelah restart masih logout, berarti server Camofox belum menghormati profile persisten atau path config salah.
Langkah 4: akses remote lewat Tailscale
OpenClaw: langsung dari Telegram
Kalau OpenClaw berjalan di mesin rumah, kamu bisa kirim scraping request dari Telegram. Nggak perlu SSH. OpenClaw nanti operasikan browser dan balas hasil scraping ke Telegram.
Hermes: gateway mode atau SSH
hermes gateway # mulai Telegram/Discord bridge
Atau SSH ke mesin rumah via Tailscale IP:
ssh user@100.88.x.x
Security
Contoh pola aman dengan service lokal di port 8765:
# Cek IP Tailscale
TAILSCALE_IP=$(tailscale ip -4 | head -n 1)
echo "$TAILSCALE_IP"
# Contoh menjalankan service hanya di Tailscale IP, jika aplikasinya mendukung bind host.
hermes api --host "$TAILSCALE_IP" --port 8765
Jika Hermes API command di versi Anda berbeda, ambil prinsipnya: bind ke Tailscale IP atau localhost, lalu akses via tailnet. Jangan membuka 8765 di router rumah.
Tambahkan firewall lokal:
sudo ufw allow in on tailscale0 to any port 8765 proto tcp
sudo ufw deny 8765/tcp
sudo ufw status verbose
Untuk ACL Tailscale, buat rule minimum. Contoh konseptual:
{
"acls": [
{
"action": "accept",
"src": ["user:operator@example.com"],
"dst": ["home-hermes:8765"]
}
]
}
Sesuaikan tag dan identity di admin console. Jangan beri akses tailnet global kalau yang dibutuhkan hanya satu port Hermes.
Langkah 5: definisikan policy scraping
Sebelum membuat task, buat policy yang eksplisit. Contoh config/scraping-policy.yaml:
scope:
allowed_accounts:
- "brand-sendiri"
- "akun-klien-yang-memberi-izin"
allowed_content:
- "post public"
- "komentar di post milik sendiri"
- "metric yang terlihat setelah login akun sendiri"
forbidden_content:
- "data pribadi non-publik"
- "DM atau inbox tanpa alasan operasional sah"
- "bypass paywall atau privacy setting"
- "mass profile harvesting"
rate_limits:
max_profiles_per_run: 20
max_posts_per_profile: 30
min_delay_seconds: 5
max_parallel_browsers: 1
retention:
raw_html: "disabled"
screenshots: "30 days"
normalized_json: "90 days"
review:
require_manual_review_before_external_publish: true
Policy seperti ini membantu Hermes tetap bekerja di pagar yang sama. Jangan hanya memberi prompt "scrape sebanyak mungkin" karena itu hampir pasti menghasilkan workflow yang buruk.
Langkah 6: buat prompt kerja Hermes
Contoh prompt untuk Instagram post milik sendiri:
Task: Ambil ringkasan 10 post terakhir dari akun Instagram @nama_brand yang sudah login di browser saat ini.
Batasan:
- Jangan buka DM.
- Jangan ambil data personal selain username publik yang tampil di post/comment.
- Jangan scroll tanpa batas. Maksimal 10 post.
- Tunggu 5 sampai 8 detik antar navigasi besar.
- Kalau muncul login challenge, berhenti dan laporkan.
- Simpan output ke output/normalized/instagram-latest-posts.json.
Field output:
- platform
- account
- post_url
- caption_excerpt maksimal 280 karakter
- visible_like_count jika tampil
- visible_comment_count jika tampil
- posted_at jika tampil
- screenshot_path jika screenshot diambil
- notes
Contoh prompt untuk TikTok profile check:
Task: Buka profil TikTok @nama_brand dan buat snapshot ringkas 12 video terbaru.
Batasan:
- Hanya baca data yang terlihat di UI.
- Jangan mencoba endpoint internal.
- Jangan download video.
- Jangan follow, like, comment, atau mengubah state akun.
- Jika layout berubah atau data tidak terlihat, tulis unknown, jangan menebak.
Output: output/normalized/tiktok-profile-snapshot.json
Contoh prompt untuk Threads:
Task: Ringkas 15 thread terbaru dari akun Threads @nama_brand untuk kebutuhan editorial monitoring.
Batasan:
- Read-only.
- Jangan buka reply yang tidak relevan lebih dari 2 level.
- Jangan ambil email, nomor telepon, atau data sensitif yang muncul di bio atau komentar.
- Beri jeda minimal 5 detik antar halaman.
Output: output/normalized/threads-editorial-monitoring.json
Langkah 7: jalankan task dari terminal
Kalau Hermes CLI menerima prompt langsung dari stdin di environment Anda, gunakan wrapper seperti ini:
mkdir -p output/raw output/normalized output/screenshots logs
cat prompts/instagram-post-extract.md | hermes
Kalau Hermes dipakai lewat chat/gateway, kirim prompt yang sama dari channel Hermes dan pastikan working directory diarahkan ke repo scraping.
Wrapper sederhana scripts/run-hermes-task.sh:
#!/usr/bin/env bash
set -euo pipefail
TASK_FILE="${1:?Usage: scripts/run-hermes-task.sh prompts/task.md}"
RUN_ID="$(date +%Y%m%d-%H%M%S)"
LOG_FILE="logs/${RUN_ID}.log"
mkdir -p output/raw output/normalized output/screenshots logs
echo "Running $TASK_FILE" | tee "$LOG_FILE"
cat "$TASK_FILE" | hermes 2>&1 | tee -a "$LOG_FILE"
Jalankan:
chmod +x scripts/run-hermes-task.sh
scripts/run-hermes-task.sh prompts/instagram-post-extract.md
Langkah 8: validasi output sebelum dipakai
Jangan langsung memasukkan hasil scraping ke report final. Minimal validasi JSON:
#!/usr/bin/env python3
import json
import sys
from pathlib import Path
required = {"platform", "account", "post_url", "notes"}
path = Path(sys.argv[1])
data = json.loads(path.read_text())
items = data if isinstance(data, list) else data.get("items", [])
errors = []
for idx, item in enumerate(items):
missing = required - set(item.keys())
if missing:
errors.append(f"item {idx} missing {sorted(missing)}")
if item.get("post_url") and not item["post_url"].startswith("https://"):
errors.append(f"item {idx} has invalid url")
if errors:
print("Validation failed:")
for err in errors:
print("-", err)
sys.exit(1)
print(f"OK: {len(items)} items validated from {path}")
Simpan sebagai scripts/validate-output.py, lalu:
python3 scripts/validate-output.py output/normalized/instagram-latest-posts.json
Validasi ini sengaja sederhana. Untuk produksi, tambahkan schema JSON, dedup URL, timestamp run, dan redaction untuk data sensitif.
Langkah 9: jadwalkan dengan aman
Untuk sosial media, saya tidak suka interval terlalu rapat. Mulai dari manual run. Kalau sudah stabil, gunakan systemd timer atau cron dengan frekuensi rendah.
Contoh cron harian:
15 8 * * * cd /home/USER/social-browser-scraper && scripts/run-hermes-task.sh prompts/instagram-post-extract.md >> logs/cron.log 2>&1
Untuk beberapa platform, pisahkan jadwal:
15 8 * * * cd /home/USER/social-browser-scraper && scripts/run-hermes-task.sh prompts/instagram-post-extract.md >> logs/cron.log 2>&1
45 8 * * * cd /home/USER/social-browser-scraper && scripts/run-hermes-task.sh prompts/tiktok-profile-check.md >> logs/cron.log 2>&1
15 9 * * * cd /home/USER/social-browser-scraper && scripts/run-hermes-task.sh prompts/threads-replies-summary.md >> logs/cron.log 2>&1
Tetap gunakan satu browser aktif, jeda cukup, dan volume kecil. Kalau butuh data volume besar, cari API resmi, export resmi platform, atau vendor data yang punya izin.
Troubleshooting
Hermes membuka browser baru yang belum login
Penyebab umum:
- Hermes memakai provider cloud, bukan local CDP/Camofox;
- browser profile berbeda dari profile yang dipakai login;
- Camofox persistence belum aktif;
- config
managed_persistencesalah path; - Hermes belum direstart setelah perubahan config.
Solusi:
curl http://127.0.0.1:9222/json/version
Pastikan endpoint mengarah ke browser yang benar. Untuk Camofox, cek ~/.hermes/config.yaml:
browser:
camofox:
managed_persistence: true
Login Instagram, TikTok, atau Threads sering challenge
Kemungkinan:
- login terlalu sering dari IP berbeda;
- browser profile sering dihapus;
- terlalu banyak navigasi otomatis;
- user-agent atau fingerprint berubah drastis;
- akun baru atau reputasi akun rendah.
Solusi operasional:
- gunakan satu mesin rumah dan satu profile tetap;
- login manual dan tunggu beberapa jam sebelum automation pertama;
- kurangi frekuensi scraping;
- jangan parallel browser;
- berhenti saat challenge muncul, jangan coba bypass.
Remote dari luar rumah tidak bisa akses Hermes
Cek dari device remote:
tailscale status
tailscale ping 100.88.12.34
curl http://100.88.12.34:8765/health
Cek di mesin rumah:
ss -lntp | grep 8765
sudo ufw status verbose
Pastikan service listen di Tailscale IP atau interface yang benar, ACL mengizinkan, dan firewall tidak memblokir tailscale0.
CDP port 9222 tidak bisa diakses Hermes
Cek apakah Chrome berjalan dengan flag remote debugging:
ps aux | grep -E 'chrome|chromium' | grep remote-debugging
curl http://127.0.0.1:9222/json/version
Jika port kosong, tutup semua Chrome instance lalu jalankan ulang dengan --user-data-dir khusus. Chrome kadang menolak flag kalau instance utama sudah berjalan dengan profile lain.
Output JSON sering berisi hallucination
Penyebabnya biasanya prompt terlalu bebas. Perbaiki dengan aturan:
- tulis
unknownkalau data tidak terlihat; - minta Hermes menyertakan URL sumber dan screenshot path;
- batasi field output;
- jalankan validator;
- jangan minta analisis dan extraction dalam langkah yang sama untuk data penting.
Layout sosial media berubah
Ini normal. UI sosial media memang sering berubah. Buat prompt yang berbasis tujuan, bukan selector rapuh. Kalau butuh stabilitas lebih tinggi, simpan screenshot tiap run dan tambahkan review manual saat extraction turun kualitasnya.
Security hardening checklist
- CDP bind ke
127.0.0.1, bukan0.0.0.0. - Hermes API tidak terbuka ke internet publik.
- Akses remote lewat Tailscale IP atau Tailscale Serve dengan ACL ketat.
- Browser profile khusus scraping, bukan profile pribadi utama.
- 2FA aktif di akun sosial.
- Password tidak disimpan di repo.
-
.env, output raw, dan screenshots sensitif masuk.gitignore. - Log tidak menyimpan cookie, token, atau HTML mentah berisi data personal.
- Volume scraping kecil dan punya rate limit eksplisit.
- Ada stop rule saat login challenge, CAPTCHA, atau warning platform muncul.
Contoh .gitignore:
.env
output/raw/
output/screenshots/
logs/*.log
.browser-profiles/
*.sqlite
*.har
Fakta resmi vs inference operasional
Fakta resmi yang dipakai
- Hermes Agent menyediakan browser automation dengan beberapa backend, termasuk cloud providers, Camofox local mode, local Chromium-family CDP, dan local browser mode via agent-browser CLI.
- Dokumentasi Hermes menyebut browser tools bisa menavigasi website, berinteraksi dengan elemen, mengisi form, dan mengekstrak informasi.
- Dokumentasi Hermes untuk Camofox menekankan
browser.camofox.managed_persistencesebagai path konfigurasi untuk session persisten. - Tailscale subnet router dipakai untuk memperluas akses tailnet ke subnet yang tidak menjalankan Tailscale client.
- Tailscale merekomendasikan instalasi client langsung pada device jika memungkinkan; subnet router dipakai saat direct install tidak feasible.
Inference dan keputusan operasional saya
- Untuk scraping sosial media yang sudah login, local browser profile di mesin rumah lebih stabil daripada cloud browser yang berganti environment.
- Untuk akses remote Hermes, Tailscale IP langsung lebih sempit dan aman daripada subnet router jika hanya satu host yang perlu diakses.
- Untuk Instagram, TikTok, dan Threads, workflow read-only volume kecil lebih realistis dan lebih rendah risiko daripada scraping massal.
- Untuk report bisnis, output browser automation harus divalidasi sebelum dipakai karena UI extraction bisa salah membaca angka atau konteks.
Link checklist untuk publish
Link wajib untuk GitHub tutorial
- Link ke repository Hermes Agent:
https://github.com/NousResearch/hermes-agent - Link ke dokumentasi browser Hermes:
https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/browser.md - Link ke integrasi Hermes:
https://github.com/NousResearch/hermes-agent/blob/main/website/docs/integrations/index.md - Link ke Tailscale subnet routers:
https://tailscale.com/docs/features/subnet-routers - Link internal ke tutorial Tailscale di repo jika tersedia:
tutorials/tailscale-vpn-exit-node.md - Link internal ke tutorial browser automation terkait jika tersedia.
Link wajib untuk blog.fanani.co
- Canonical ke slug final.
- Link ke GitHub tutorial companion setelah file GitHub dipublish.
- Link ke artikel OpenClaw vs Hermes jika relevan.
- Link ke Sumopod atau halaman layanan hanya di closing, bukan mid-article.
- Semua external link pakai konteks naratif, bukan daftar mentah saja.
SEO package
Rekomendasi SEO:
- Slug:
setup-scraping-instagram-tiktok-threads-hermes-browser-tailscale - SEO title:
Scraping Instagram TikTok Threads dengan Hermes Browser Login dan Tailscale - Meta description:
Setup Hermes untuk scraping sosial berbasis browser login, akses aman via Tailscale IP rumah, plus etika dan troubleshooting. - H1:
Setup Scraping Instagram, TikTok, dan Threads dengan Browser Login, Hermes, dan Tailscale - Primary keyword:
scraping Instagram TikTok Threads Hermes - Secondary keywords:
Hermes browser automation,browser login scraping,Tailscale IP rumah,social media scraping ethical,Camofox Hermes persistence - OG image spec: 1200x630, dark navy gradient, title 2 lines, small Fanani logo, simple diagram motif: Hermes, Browser, Tailscale, Social Platforms.
Publishing notes untuk dua target
GitHub tutorial
Target file:
openclaw-sumopod/tutorials/hermes-browser-social-scraping.md
Adaptasi yang disarankan:
- pertahankan semua command;
- tambahkan badge difficulty dan estimated time di awal;
- jangan terlalu editorial;
- taruh companion blog link di bagian
Before We Startsetelah blog publish; - tambahkan entry README di section Integrations atau Networking & Security.
blog.fanani.co
Target file:
content/tech/setup-scraping-instagram-tiktok-threads-hermes-browser-tailscale.md
Adaptasi yang disarankan:
- pertahankan first-person singular
saya; - gunakan frontmatter Nuxt Content yang sesuai schema blog;
- tambahkan OG image lokal;
- jangan pakai hero stock photo;
- sisipkan CTA halus ke Sumopod hanya di closing.
Kesimpulan operasional
Jadi keputusan paling waras saat ini: jangan mulai dari scraper agresif. Mulai dari browser login yang persisten, akses remote lewat Tailscale, prompt read-only yang sempit, dan validator output yang sederhana. Kalau workflow kecil ini stabil selama beberapa minggu, baru naikkan struktur data, dashboard, atau integrasi database.
Untuk Instagram, TikTok, dan Threads, stabilitas bukan cuma soal tool. Stabilitas datang dari kombinasi IP yang konsisten, session yang tidak sering berubah, volume yang wajar, dan batas etika yang jelas. Hermes membantu mengoperasikan browser; tanggung jawab desain tetap di kita.
References
- NousResearch Hermes Agent:
https://github.com/NousResearch/hermes-agent - Hermes Browser Automation docs:
https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/browser.md - Hermes Integrations overview:
https://github.com/NousResearch/hermes-agent/blob/main/website/docs/integrations/index.md - Browser Use Hermes integration:
https://docs.browser-use.com/cloud/tutorials/integrations/hermes-agent - Tailscale subnet routers:
https://tailscale.com/docs/features/subnet-routers
← Artikel Sebelumnya
AI Automation Mulai Dilirik Bisnis Balikpapan
Artikel Selanjutnya →
Bookmark Bukan Reading List — Tapi Operating System untuk Keputusan
Baca Juga
Ada Pertanyaan? Yuk Ngobrol!
Butuh bantuan setup OpenClaw, konsultasi IT, atau mau diskusi project engineering? Book a call langsung — gratis.
Book a Call — Gratisvia Cal.com • WITA (UTC+8)
Newsletter
Subscribe to Newsletter
Artikel baru, automation notes, dan engineering insight. Clean inbox, no spam.
Dengan subscribe, kamu setuju menerima update seperlunya.
Zainul Fanani
Founder, Radian Group. Engineering & tech enthusiast.




💬 Komentar