Deprem botu
Son bir saatte 4 ve üstü deprem olursa Slack’e ya da başka bir webhook’a büyüklük, yer, derinlik ve saatle yazar. Tek istek, AFAD verisi.
- Anahtar al. Ücretsiz kayıt, ayda 1.000 kredi. Anahtarı panelde üretirsin;
ak_live_ile başlar. - Dosyayı al. Aşağıdan kopyala ya da indir:
deprem.mjs. Node 18 ya da üstü yeter, paket yok. - Çalıştır.
KILAVUZ_ANAHTAR=ak_live_… node deprem.mjs. Bot 5 dakikada bir bakar; yeni depremi WEBHOOK_URL’e yollar (Slack ya da {text} alan her webhook), WEBHOOK_URL yoksa terminale yazar.
Tek dosya, olduğu gibi çalışır:
// Deprem botu: son bir saatte 4 ve üstü deprem olursa Slack'e (ya da {text} alan her webhook'a) yazar.
// Node 18+, paket yok. KILAVUZ_ANAHTAR=ak_live_… WEBHOOK_URL=https://hooks.slack.com/… node deprem.mjs
// WEBHOOK_URL yoksa mesajı terminale yazar. 5 dakikada bir bakar (deprem varsa 1 kredi, yoksa 0);
// aynı depremi iki kez yollamaz. Veri AFAD'dan, resmî uyarı yerine geçmez.
const ANAHTAR = process.env.KILAVUZ_ANAHTAR;
if (!ANAHTAR) throw new Error('KILAVUZ_ANAHTAR tanımlı değil (anahtar: kilavuzapi.com/panel)');
const WEBHOOK = process.env.WEBHOOK_URL;
const url = 'https://api.kilavuzapi.com/v1/deprem/son?saat=1&minBuyukluk=4';
const yollanan = new Set();
async function bak() {
const r = await fetch(url, { headers: { Authorization: `Bearer ${ANAHTAR}` } });
const { depremler, hata } = await r.json();
if (!r.ok) return console.error(r.status, hata);
for (const d of depremler) {
if (yollanan.has(d.id)) continue;
const mesaj = `M${d.buyukluk} · ${d.yer} · ${d.derinlikKm} km · ${d.zamanTr.slice(11, 16)}`;
if (WEBHOOK) {
await fetch(WEBHOOK, {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ text: mesaj }),
});
} else console.log(mesaj);
// Yollanamazsa (ağ hatası) işaretlenmez, sonraki turda yeniden denenir.
yollanan.add(d.id);
}
}
const tur = () => bak().catch((e) => console.error(e.message));
tur();
setInterval(tur, 5 * 60_000);
Önce anahtarı ver (export KILAVUZ_ANAHTAR="ak_live_…"), sonra terminalde:
curl -O https://kilavuzapi.com/ornekler/deprem.mjs
node deprem.mjsBot 5 dakikada bir bakar; yeni depremi WEBHOOK_URL’e yollar (Slack ya da {text} alan her webhook), WEBHOOK_URL yoksa terminale yazar.
Kullandığı uçlar
GET /v1/deprem/son1 kredi
Anahtar yalnız bu sürecin ortam değişkeninde durur; koda yazma. Uçların ayrıntısı dokümanda.
Öteki örnekler
- Kendini düzelten adres formuMüşteri adresi tek satırda nasıl yazarsa yazsın; il, ilçe, mahalle, sokak, bina ve daire ayrı alanlara dolar, sicille eşleşmeyen alan işaretlenir./v1/address/resolve
- Şehir kartıBir il yaz: havası, benzin fiyatı, son 24 saatin depremleri ve namaz vakitleri tek kartta, her satırda kaynağı ve saatiyle./v1/hava/durum · /v1/akaryakit/fiyat · /v1/deprem/son · /v1/takvim/namaz
- En yakın hastaneKonumun 10 km çevresindeki hastaneler, uzaklık ve türüyle (kamu, özel, üniversite). Konum tarayıcıdan ya da elle koordinat./v1/saglik/hastane
- Sipariş kargo kartıTakip numarasından olası kargo firması ve takip bağlantısı, resmî tatilleri sayan teslim tahmini, kutu ölçülerinden desi./v1/kargo/takip-tani · /v1/kargo/teslim-tahmini · /v1/kargo/desi