#!/usr/bin/env python3
"""Batch FB + LinkedIn — reply-driven + link artikel, sesuai aturan platform.
FB: 2-4 paragraf + link artikel + hashtag sesuai topik.
LinkedIn: teks profesional + link artikel.
Konten UNIK per brand (cek history sebelum pilih artikel).
"""
import sys, json
from datetime import datetime, timedelta
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import get_client, ACC

client = get_client()

POSTS = [
    # ── LINKEDIN (jam kerja, teks profesional + link) ──
    {
        "account": "ss_li",
        "slot_wib": "2026-08-03T09:00:00",
        "text": (
            "Google sekarang menampilkan AI Overview di hasil pencarian — dan banyak bisnis "
            "belum siap menghadapinya.\n"
            "\n"
            "Konsekuensinya: traffic organik yang dulu mengalir ke website, kini sebagian "
            "besar 'dijawab' langsung oleh AI di halaman pencarian. Bisnis yang tidak "
            "mengoptimasi kontennya berisiko kehilangan visibilitas.\n"
            "\n"
            "Kuncinya bukan melawan AI, tapi membuat konten yang layak dikutip AI: "
            "struktur jelas, jawaban langsung, data pendukung, dan E-E-A-T yang kuat.\n"
            "\n"
            "Bagi tim pemasaran: ini saatnya mengevaluasi ulang strategi SEO Anda. "
            "Kami membahas langkah praktisnya di artikel berikut 👇\n"
            "https://studiosoft.id/cara-memilih-jasa-optimasi-ai-overview-google-surabaya-tepat/"
        ),
    },
    {
        "account": "leit_li",
        "slot_wib": "2026-08-03T11:00:00",
        "text": (
            "Memilih tempat kursus bahasa Inggris itu bukan soal jarak semata — tapi "
            "soal konsistensi belajar.\n"
            "\n"
            "Fakta di lapangan: murid yang kursus di tempat dekat rumah cenderung lebih "
            "disiplin datang, dan kedisiplinan itu berkorelasi langsung dengan hasil. "
            "Makanya lokasi strategis itu penting.\n"
            "\n"
            "LEIT hadir di dua titik: Surabaya Timur (Pakuwon Town Square) dan Surabaya "
            "Barat (Waterplace Residence) — dekat untuk warga Mulyorejo, Sukolilo, "
            "Citraland, Wiyung, dan sekitarnya.\n"
            "\n"
            "Lengkapnya di artikel ini 👇\n"
            "https://www.leitsurabaya.com/kursus-bahasa-inggris-surabaya-timur/"
        ),
    },
    {
        "account": "dmark_li",
        "slot_wib": "2026-08-03T14:00:00",
        "text": (
            "Salah satu pertanyaan paling umum dari klien: 'Bagaimana cara memilih jasa "
            "digital marketing yang benar-benar bekerja?'\n"
            "\n"
            "Dari pengalaman kami mendampingi banyak brand, ada beberapa hal yang wajib "
            "diperiksa sebelum memutuskan: rekam jejak kasus nyata, transparansi laporan, "
            "pendekatan strategi (bukan sekadar eksekusi), dan kesesuaian dengan tujuan "
            "bisnis Anda.\n"
            "\n"
            "Harga murah tanpa strategi jelas = pemborosan. Harga wajar dengan strategi "
            "terukur = investasi.\n"
            "\n"
            "Panduan lengkapnya ada di artikel ini 👇\n"
            "https://www.dmark.id/rekomendasi-jasa-seo-digital-marketing-terbaik-surabaya-2026/"
        ),
    },
    {
        "account": "tslaw_li",
        "slot_wib": "2026-08-03T20:00:00",
        "text": (
            "Penipuan online makin marak — dan korban sering bingung harus mulai dari mana.\n"
            "\n"
            "Langkah pertama yang benar: kumpulkan bukti (tangkap layar percakapan, bukti "
            "transfer, identitas pelaku), lalu laporkan ke polisi dengan membawa dokumen "
            "tersebut. Banyak laporan tertunda hanya karena bukti tidak lengkap.\n"
            "\n"
            "Penting juga diketahui: laporan polisi itu bukan sekadar formalitas — ini "
            "langkah hukum pertama yang bisa membuka jalan pemulihan.\n"
            "\n"
            "Panduan langkah demi langkahnya di sini 👇\n"
            "https://www.tslaw.id/cara-lapor-polisi-penipuan-online/"
        ),
    },
    # ── FACEBOOK (2-4 paragraf + link + hashtag) ──
    {
        "account": "ss_fb",
        "slot_wib": "2026-08-03T10:00:00",
        "text": (
            "Rumah sakit dan klinik yang masih mengandalkan 'pasien datang sendiri' "
            "semakin tertinggal. Di 2026, pasien mencari informasi kesehatan lewat "
            "Google sebelum memutuskan ke mana mereka berobat.\n"
            "\n"
            "Artinya: rumah sakit tanpa strategi digital akan kalah dari kompetitor "
            "yang muncul di pencarian. Bukan soal besar-kecilnya rumah sakit, tapi "
            "siapa yang paling mudah ditemukan dan dipercaya.\n"
            "\n"
            "Mulai dari website yang informatif, Google Business Profile yang rapi, "
            "hingga konten edukasi yang menjawab keresahan pasien.\n"
            "\n"
            "Baca selengkapnya di artikel kami 👇\n"
            "https://studiosoft.id/rs-klinik-digital-marketing-2026/\n"
            "\n"
            "#DigitalMarketing #RumahSakit #Klinik #SEO #StudioSoft"
        ),
    },
    {
        "account": "das_fb",
        "slot_wib": "2026-08-03T17:00:00",
        "text": (
            "Mobil bekas bisa jadi pilihan paling cerdas — asalkan perawatannya benar.\n"
            "\n"
            "Masalahnya, banyak pemilik mobil bekas mengabaikan riwayat servis. Padahal "
            "tanpa catatan yang jelas, kita tidak tahu kapan oli terakhir diganti, kapan "
            "timing belt diperiksa, atau apakah mesin pernah dioprek.\n"
            "\n"
            "Solusinya: mulai dari nol. Ganti semua cairan, cek kondisi kampas rem, "
            "periksa timing belt, dan minta teknisi melakukan pemeriksaan menyeluruh "
            "sebelum dipakai harian. Investasi kecil di awal, selamat dari biaya besar "
            "di kemudian hari.\n"
            "\n"
            "Panduan servis berkala untuk mobil bekas ada di artikel ini 👇\n"
            "https://dasindonesia.com/servis-berkala-nissan-untuk-mobil-bekas-panduan-wajib-agar-awet/\n"
            "\n"
            "#DASBengkelIndonesia #ServisMobil #MobilBekas #PerawatanMobil"
        ),
    },
    {
        "account": "tslaw_fb",
        "slot_wib": "2026-08-03T16:00:00",
        "text": (
            "Masih banyak pelaku usaha yang mengurus legalitas usaha hanya ketika "
            "sudah terlanjur bermasalah. Padahal mendirikan CV atau PT itu proses "
            "yang sederhana jika tahu langkahnya.\n"
            "\n"
            "Yang sering bikin gagal: dokumen tidak lengkap, memilih bentuk badan "
            "usaha yang salah, atau mengurus lewat jalur yang tidak resmi.\n"
            "\n"
            "Padahal dengan persiapan yang benar, pengurusan bisa berjalan lancar "
            "dan usaha Anda langsung punya payung hukum yang kuat.\n"
            "\n"
            "Panduan lengkapnya di sini 👇\n"
            "https://www.tslaw.id/cara-daftar-cv-pt-online/\n"
            "\n"
            "#TSLaw #LegalitasUsaha #PendirianPT #PendirianCV #UMKM"
        ),
    },
    {
        "account": "dmark_fb",
        "slot_wib": "2026-08-03T19:00:00",
        "text": (
            "Guerilla marketing sering dianggap sekadar 'gimmick murahan'. Padahal "
            "banyak brand besar naik kelas justru berkat ide-ide kreatif yang tidak "
            "butuh budget raksasa.\n"
            "\n"
            "Kuncinya ada dua: pemahaman mendalam tentang audiens, dan eksekusi yang "
            "berani berbeda. Satu aksi yang tepat sasaran bisa menghasilkan percakapan "
            "yang nilainya melebihi iklan konvensional.\n"
            "\n"
            "Contoh nyatanya kami rangkum di artikel berikut 👇\n"
            "https://www.dmark.id/sukses-guerilla-marketing-studi-kasus-brand/\n"
            "\n"
            "#DMark #GuerillaMarketing #Branding #Kreatif"
        ),
    },
]

def slot_to_utc(wib_str):
    dt = datetime.fromisoformat(wib_str)
    return (dt - timedelta(hours=7)).strftime("%Y-%m-%dT%H:%M:%S.000Z")

ACCOUNT_IDS = {
    "ss_li": ACC.STUDIOSOFT_LINKEDIN,
    "leit_li": ACC.LEIT_LINKEDIN,
    "dmark_li": ACC.DMARK_LINKEDIN,
    "tslaw_li": ACC.TSLAW_LINKEDIN,
    "ss_fb": ACC.STUDIOSOFT_FB,
    "das_fb": ACC.DAS_FB,
    "tslaw_fb": ACC.TSLAW_FB,
    "dmark_fb": ACC.DMARK_FB,
}

def main():
    print("📘 Batch FB + LinkedIn — 8 post")
    print("=" * 55)
    ok = 0
    for p in POSTS:
        acc = p["account"]
        text = p["text"]
        sched = slot_to_utc(p["slot_wib"])
        print(f"📌 {acc} @ {p['slot_wib']} WIB [len={len(text)}]")
        try:
            r = client.schedule_text(ACCOUNT_IDS[acc], text, sched, title="")
            sid = r.get("scheduleId", "?")
            print(f"   ✅ {sid}")
            ok += 1
        except Exception as e:
            print(f"   ❌ {type(e).__name__}: {str(e)[:120]}")
    print("=" * 55)
    print(f"✅ {ok}/{len(POSTS)} terjadwal")

if __name__ == "__main__":
    main()
