Setiap pagi, ritual yang sama: buka Antam, cek Yahoo Finance, scroll berita ekonomi, terus coba rangkum sendiri apakah emas lagi naik atau turun. Kalau lo trader retail atau investor yang track emas harian, rutinitas itu makan waktu dan sering bikin lo ketinggalan momentum. Setup yang gua bahas di sini menyelesaikan itu semua lewat satu cron job Hermes Agent.
Masalahnya Bukan Datanya — Tapi Prosesnya
Data harga emas sebenarnya tersedia di banyak tempat. GoldAPI.io punya endpoint gratis, Yahoo Finance ada data futures, Antam punya halaman harga resmi. Masalahnya adalah lo harus buka semua itu satu-satu, terus proses sendiri: berapa perubahannya hari ini? Tren 7 hari ke mana? Support dan resistance di level berapa? Sentiment berita lagi positif atau negatif?
Manual effort itu yang jadi bottleneck. Dan kalau lo skip sehari, lo kehilangan konteks. Solusinya: delegasikan seluruh workflow ke Hermes Agent yang jalan otomatis tiap pagi.
Gambaran Workflow
Sebelum masuk ke implementasi, ini alur besarnya:
- Cron job Hermes jalan jam 07:00 setiap hari
- Script Python scrape harga emas terkini (GoldAPI atau sumber lain)
- Ambil data historis 7–30 hari dari file JSON lokal
- Hitung daily change, 7-day moving average, level support/resistance
- Scrape headline berita ekonomi untuk sentiment
- Generate brief terformat dalam Bahasa Indonesia
- Kirim ke Telegram via Bot API
- Simpan data terbaru ke history file
Semua ini jalan tanpa lo perlu buka laptop. Brief sudah ada di Telegram waktu lo bangun.
Step 1: Siapkan Direktori dan API Key
Buat struktur direktori dulu:
mkdir -p /work/gold-data
touch /work/gold-data/history.json
echo "[]" > /work/gold-data/history.json
Daftarkan API key yang dibutuhkan sebagai environment variable. Lo butuh dua: satu dari GoldAPI.io (ada tier gratis dengan limit request), satu dari Telegram BotFather untuk bot token. Simpan di ~/.hermes/env atau export di shell profile lo — jangan hardcode di script.
export GOLDAPI_KEY="your_key_here"
export TELEGRAM_BOT_TOKEN="your_token_here"
export TELEGRAM_CHAT_ID="your_chat_id_here"
Step 2: Script Scraping dan Analisa
Ini core script yang Hermes akan jalankan. Simpan di /work/gold-data/gold_brief.py:
import requests
import json
import os
from datetime import datetime, timedelta
from statistics import mean
GOLDAPI_KEY = os.environ["GOLDAPI_KEY"]
TELEGRAM_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"]
TELEGRAM_CHAT_ID = os.environ["TELEGRAM_CHAT_ID"]
HISTORY_FILE = "/work/gold-data/history.json"
def get_gold_price():
url = "https://www.goldapi.io/api/XAU/USD"
headers = {"x-access-token": GOLDAPI_KEY}
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
data = response.json()
return {
"price": data["price"],
"timestamp": datetime.now().isoformat(),
"change_24h": data.get("ch", 0),
"change_pct": data.get("chp", 0)
}
def load_history():
with open(HISTORY_FILE, "r") as f:
return json.load(f)
def save_to_history(entry, history):
history.append(entry)
# Simpan maksimal 90 hari
history = history[-90:]
with open(HISTORY_FILE, "w") as f:
json.dump(history, f, indent=2)
return history
def calculate_ma(history, days=7):
recent = history[-days:] if len(history) >= days else history
prices = [h["price"] for h in recent]
return round(mean(prices), 2) if prices else 0
def find_support_resistance(history, days=30):
recent = history[-days:] if len(history) >= days else history
prices = [h["price"] for h in recent]
if not prices:
return 0, 0
return round(min(prices), 2), round(max(prices), 2)
def determine_trend(history, days=7):
recent = history[-days:] if len(history) >= days else history
if len(recent) < 2:
return "Tidak cukup data"
first = recent[0]["price"]
last = recent[-1]["price"]
if last > first * 1.005:
return "Bullish 📈"
elif last < first * 0.995:
return "Bearish 📉"
else:
return "Sideways ➡️"
def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
payload = {
"chat_id": TELEGRAM_CHAT_ID,
"text": message,
"parse_mode": "Markdown"
}
requests.post(url, json=payload, timeout=10)
def format_brief(current, ma7, support, resistance, trend):
date_str = datetime.now().strftime("%d %b %Y")
change_symbol = "+" if current["change_24h"] >= 0 else ""
message = f"""🏆 *Brief Harga Emas — {date_str}*
💰 *Harga Terkini*: ${current["price"]:,.2f}/oz
📊 *Perubahan 24h*: {change_symbol}{current["change_24h"]:.2f} ({change_symbol}{current["change_pct"]:.2f}%)
📈 *Trend 7 Hari*: {trend}
📐 *MA-7*: ${ma7:,.2f}
🎯 *Level Kunci (30 Hari)*:
- Support: ${support:,.2f}
- Resistance: ${resistance:,.2f}
_Data: GoldAPI.io_"""
return message
def main():
current = get_gold_price()
history = load_history()
history = save_to_history(current, history)
ma7 = calculate_ma(history, 7)
support, resistance = find_support_resistance(history, 30)
trend = determine_trend(history, 7)
brief = format_brief(current, ma7, support, resistance, trend)
send_telegram(brief)
print("Brief terkirim:", datetime.now().isoformat())
if __name__ == "__main__":
main()
Step 3: Buat Skill Hermes
Supaya Hermes tahu cara menjalankan workflow ini, buat skill file di ~/.hermes/skills/gold-brief.md:
---
name: gold-brief
description: Jalankan analisa harga emas harian dan kirim brief ke Telegram
---
Jalankan script analisa harga emas:
1. Pastikan environment variable GOLDAPI_KEY, TELEGRAM_BOT_TOKEN, dan TELEGRAM_CHAT_ID sudah di-set
2. Jalankan: python3 /work/gold-data/gold_brief.py
3. Jika ada error koneksi, coba ulang sekali setelah 60 detik
4. Log output ke /work/gold-data/logs/brief.log dengan timestamp
Step 4: Setup Cron Job
Register cron job di Hermes supaya jalan otomatis jam 07:00 setiap hari:
hermes cron add gold-brief "0 7 * * *" --skill gold-brief
Verifikasi sudah terdaftar:
hermes cron list
Untuk test manual sebelum nunggu besok pagi:
hermes cron run gold-brief
Step 5: Monitoring dan Error Handling
Cron job yang jalan unattended butuh monitoring. Beberapa hal yang perlu lo setup:
Cek log secara berkala:
hermes cron logs gold-brief --tail 20
Tambah error notification — kalau script gagal (API down, rate limit, koneksi timeout), Hermes bisa kirim notif ke channel terpisah. Tambahkan di skill file:
Jika script gagal dengan exit code non-zero, kirim pesan error ke Telegram:
"⚠️ Gold Brief gagal: {error_message}. Cek log di /work/gold-data/logs/"
Backup data historis — file history.json adalah sumber kebenaran untuk analisa trend. Backup rutin penting:
hermes cron add gold-backup "0 23 * * 0" --skill backup-gold-data
Kenapa Struktur Ini Bekerja
Yang bikin setup ini solid bukan cuma automasi-nya, tapi separasi concern-nya. Script Python handle data fetching dan kalkulasi — deterministik, bisa di-test independen. Hermes handle scheduling, retry logic, dan error notification. Telegram handle delivery. Masing-masing bisa di-debug sendiri kalau ada masalah.
Kalau GoldAPI rate limit habis di hari tertentu, lo tinggal ganti satu fungsi get_gold_price() — bisa point ke Yahoo Finance scraper atau sumber lain — tanpa ubah logika analisa atau delivery.
Opsi Sumber Data Alternatif
GoldAPI.io bukan satu-satunya pilihan. Beberapa alternatif:
- Yahoo Finance via library
yfinance— data futures XAU=F, gratis tanpa API key tapi ada rate limit - Halaman harga Antam — relevan untuk harga emas lokal dalam rupiah, butuh scraping HTML dengan BeautifulSoup
- Metals-API — alternatif GoldAPI dengan tier gratis berbeda
Untuk harga dalam rupiah, tambahkan konversi dengan exchange rate dari API Bank Indonesia atau sumber forex lain.
Advanced: Alert Threshold
Selain brief harian, lo bisa tambah alert kalau harga melewati level tertentu. Tambahkan di script:
ALERT_THRESHOLD_UP = 2.0 # persen naik dalam 24h
ALERT_THRESHOLD_DOWN = -2.0 # persen turun dalam 24h
def check_alert(current):
pct = current["change_pct"]
if pct >= ALERT_THRESHOLD_UP:
send_telegram(f"🚨 *ALERT*: Emas naik {pct:.2f}% dalam 24 jam!\nHarga: ${current['price']:,.2f}")
elif pct <= ALERT_THRESHOLD_DOWN:
send_telegram(f"🚨 *ALERT*: Emas turun {pct:.2f}% dalam 24 jam!\nHarga: ${current['price']:,.2f}")
Panggil check_alert(current) di fungsi main() sebelum kirim brief rutin.
Disclaimer
Setup ini adalah automation tool untuk agregasi dan presentasi data publik. Brief yang dihasilkan bukan rekomendasi investasi. Keputusan beli/jual tetap sepenuhnya tanggung jawab lo sebagai investor. Data harga bisa delay tergantung tier API yang lo pakai.
Dengan setup ini, lo punya brief harga emas yang sudah siap tiap pagi di Telegram — tanpa buka satu website pun. Waktu yang biasanya habis untuk manual data gathering bisa lo alihkan ke analisa yang lebih dalam atau keputusan aktual.
Pertanyaan Umum
Tidak harus. Cron job Hermes bisa jalan di laptop lo selama nyala jam 07:00, atau di VPS/cloud instance kecil kalau mau fully unattended. Untuk penggunaan pribadi, laptop yang standby sudah cukup.
Tier gratis GoldAPI.io memberikan 100 request per bulan. Untuk 1 request per hari (sekitar 30/bulan) masih cukup. Kalau lo tambahkan alert threshold yang check lebih sering, pertimbangkan upgrade atau pakai sumber alternatif seperti yfinance.
Tambahkan konversi di script menggunakan exchange rate dari API Bank Indonesia atau sumber forex gratis seperti exchangerate-api.com. Kalikan harga per troy ounce dengan kurs USD/IDR terkini, lalu tampilkan di brief.
Untuk penggunaan pribadi menggunakan API resmi seperti GoldAPI.io, tidak ada masalah legal. Kalau lo scrape HTML website, cek Terms of Service mereka. Prioritaskan API resmi daripada scraping langsung untuk menghindari masalah.
Bisa. Ganti TELEGRAM_CHAT_ID dengan ID grup Telegram lo. Pastikan bot sudah ditambahkan sebagai anggota grup dan punya permission untuk kirim pesan.
Butuh Bantuan Implementasi?
Saya membantu founder dan tim membangun sistem operasi yang bisa jalan tanpa pengawasan konstan.
Hubungi Saya