#!/usr/bin/env python3
"""
StudioSoft Healthcare Series — Multi-Platform Poster
Threads + LinkedIn + FB
Otomatis cek slot kosong & post konten healthcare
"""
import json, base64, urllib.request, os, sys
from datetime import datetime, timezone, timedelta

from repliz_client import AUTH_HEADER
AUTH = AUTH_HEADER
HDR = {'Authorization': AUTH, 'Content-Type': 'application/json'}
BASE = 'https://api.repliz.com/public/schedule'

# === REPLIZ ===

# === ACCOUNTS ===
ACC = {
    "threads": "6a335b9ec5ff4ce3a3225c2a",
    "linkedin": "6a334c49c5ff4ce3a32259c9",
    "fb": "6a334952c5ff4ce3a3225941",
}

WIB = timezone(timedelta(hours=7))
SLOTS = [5, 8, 11, 14, 17, 20, 23]

# === BANK KONTEN HEALTHCARE ===
CONTENT = [
    {
        "id": "hc01",
        "topic": "RS Wajib Digital Marketing",
        "article_url": "https://studiosoft.id/rs-klinik-digital-marketing-2026",
        "threads": "Dulu pasien cari RS lewat tetangga atau brosur. Sekarang? Google, Instagram, Google Maps.\n\nKenyataannya, masih banyak RS & klinik yang belum punya strategi digital yang jelas. Mereka kalah saing sama RS lain yang udah lebih dulu hadir online.\n\nPadahal pasien sekarang lebih milih RS yang:\n✅ Muncul di Google Maps\n✅ Aktif edukasi di Instagram\n✅ Website informatif & mobile-friendly\n\nKuncinya bukan soal budget besar — tapi strategi yang tepat.",
        "linkedin": "Digital marketing untuk rumah sakit bukan lagi pilihan — ini keharusan.\n\nData menunjukkan 77% pasien mencari informasi RS secara online sebelum booking. Google Maps jadi platform nomor satu untuk mencari lokasi klinik.\n\nRS yang tidak punya strategi digital akan kehilangan pasien ke kompetitor yang lebih dulu hadir online.\n\nMulai dari hal dasar:\n1. Optimasi Google Business Profile\n2. Website mobile-friendly dengan info dokter\n3. Konten edukasi dokter di Instagram & Facebook\n4. SEO lokal untuk kata kunci spesifik\n\nStudioSoft siap membantu RS & klinik menyusun strategi digital marketing berbasis data.\n\n#HealthcareMarketing #DigitalMarketing #RumahSakit",
        "fb": "Dulu pasien cari RS lewat brosur dan rekomendasi tetangga. Sekarang? Mereka buka Google, cek rating di Google Maps, lihat Instagram RS, baru booking.\n\nPerubahan perilaku ini bikin digital marketing bukan sekadar pilihan — ini keharusan buat RS dan klinik yang mau bertahan.\n\nYang menarik: RS dengan strategi digital yang baik justru bisa menghemat biaya marketing karena pasien datang secara organik dari pencarian Google dan konten edukasi yang tersebar.\n\nBaca selengkapnya di studiosoft.id — kami bahas tuntas strategi digital marketing untuk RS & klinik.\n\n#RumahSakit #DigitalMarketing #Klinik #SEO #Healthcare",
    },
    {
        "id": "hc02",
        "topic": "7 Strategi DM RS",
        "article_url": "https://studiosoft.id/strategi-digital-marketing-rumah-sakit",
        "threads": "7 strategi digital marketing yang udah terbukti ningkatin jumlah pasien RS:\n\n1. SEO lokal — muncul di 3 besar Google Maps\n2. Konten edukasi dokter di IG & FB\n3. Landing page booking online\n4. Iklan FB/IG yang tepat sasaran\n5. WA chatbot buat follow-up pasien\n6. Google Ads buat layanan unggulan\n7. Data analytics buat ukur hasil\n\nDari 7 ini, mana yang sudah RS Anda jalankan?",
        "linkedin": "7 strategi digital marketing yang sudah terbukti meningkatkan jumlah pasien RS:\n\n1. SEO Lokal — optimasi Google Business Profile untuk muncul di peta\n2. Konten Edukasi Dokter — video singkat di Instagram & Facebook\n3. Landing Page Booking — form pendaftaran online yang simpel\n4. Iklan Tertarget — FB/IG Ads sesuai demografi pasien\n5. WA Chatbot — reminder janji & follow-up otomatis\n6. Google Ads — untuk layanan unggulan kompetitif\n7. Data Analytics — ukur dari mana pasien datang\n\nYang paling krusial: semua strategi ini harus diukur. Tanpa data, Anda hanya menebak.\n\n#DigitalMarketing #RumahSakit #Healthcare",
        "fb": "7 strategi digital marketing yang terbukti bikin pasien makin banyak:\n\n1. SEO Lokal — biar RS Anda muncul di 3 besar Google Maps\n2. Konten Edukasi Dokter — video IG/FB yang informatif\n3. Landing Page Booking Online — memudahkan pasien daftar\n4. Iklan FB/IG — targeting pasien sesuai demografi\n5. WA Chatbot — auto reminder janji temu & follow-up\n6. Google Ads — untuk layanan yang kompetitif\n7. Data Analytics — ukur hasil, optimasi terus\n\nYang paling penting: jangan jalanin semua sekaligus. Mulai dari yang paling relevan dengan kondisi RS Anda, lalu ukur hasilnya.\n\nArtikel lengkap di studiosoft.id",
    },
    {
        "id": "hc03",
        "topic": "Website RS Gagal",
        "article_url": "https://studiosoft.id/website-rumah-sakit-gagal-pasien",
        "threads": "5 alasan kenapa website RS gagal dapetin pasien:\n\n1. Loading lambat — 53% pengunjung pergi kalau >3 detik\n2. Info dokter susah dicari — padahal ini yang paling dicari\n3. Gak mobile-friendly — 70% pencarian dari HP\n4. CTA lemah — gak ada tombol booking atau WA\n5. Gak terintegrasi booking — pasien harus telepon\n\nWebsite RS bukan pajangan. Ini mesin penghasil pasien.",
        "linkedin": "Mayoritas website rumah sakit di Indonesia memiliki masalah yang sama: dibuat untuk \"sekedar ada\", bukan untuk membantu pasien mengambil keputusan.\n\n5 kesalahan fatal:\n❌ Loading lambat — 53% pengunjung pergi dalam 3 detik\n❌ Informasi dokter tersembunyi di halaman yang dalam\n❌ Tidak mobile-friendly — 70% pencarian dari smartphone\n❌ Call-to-action lemah atau tidak ada\n❌ Tidak terintegrasi dengan sistem booking\n\nWebsite RS harus dibangun dengan pendekatan user-centered design. Bukan sekadar cantik — tapi fungsional dan membantu pasien.\n\n#Website #UX #DigitalMarketing #RumahSakit",
        "fb": "Percaya atau enggak, mayoritas website RS dan klinik gagal total dalam menghasilkan pasien baru. Kenapa? Karena websitenya cuma dibuat buat \"yang penting ada\" — bukan buat bantu pasien ambil keputusan.\n\n5 kesalahan paling umum:\n1. Loading lemot — pasien pergi sebelum liat isinya\n2. Info dokter susah dicari — padahal ini yang paling penting\n3. Gak mobile-friendly — tampilannya berantakan di HP\n4. Tombol CTA lemah — bingung mau ngapain setelah baca\n5. Gak ada booking online — pasien harus repot telepon\n\nSolusinya? Baca artikel lengkapnya di studiosoft.id",
    },
    {
        "id": "hc04",
        "topic": "Konten Edukasi Kesehatan",
        "article_url": "https://studiosoft.id/konten-edukasi-kesehatan-kepercayaan-pasien",
        "threads": "RS yang rajin edukasi vs RS yang cuma promosi — mana yang lebih dipercaya pasien?\n\nEdukasi itu marketing paling halus. Pasien gak merasa dijualin, mereka merasa dibantu. Dan pasien yang ngerasa terbantu akan:\n✅ Percaya sama RS Anda\n✅ Share konten Anda\n✅ Datang pas butuh\n\nMaka: perbanyak konten Mitos vs Fakta, Tips Kesehatan, FAQ pasien. Kurangi konten \"Promo Diskon\".",
        "linkedin": "Konten edukasi kesehatan adalah strategi marketing paling efektif untuk RS & klinik.\n\nMengapa? Karena membangun kepercayaan. Pasien yang melihat RS Anda sebagai sumber informasi terpercaya akan jauh lebih mudah dikonversi menjadi pasien yang datang berobat.\n\nKuncinya: edukasi 70%, promosi 20%, storytelling 10%.\n\nKonten edukasi juga tahan lama — artikel kesehatan bisa muncul di Google selama bertahun-tahun dan mendatangkan traffic organik tanpa biaya iklan.\n\n#ContentMarketing #Healthcare #EdukasiKesehatan",
        "fb": "RS yang rajin bagikan konten edukasi vs RS yang cuma promosi diskon — mana yang lebih dipercaya pasien? Jelas yang pertama.\n\nEdukasi itu marketing paling halus. Pasien nggak merasa dijualin, mereka merasa dibantu. Dan saat mereka butuh layanan kesehatan, RS yang paling mereka ingat adalah yang paling sering bermanfaat.\n\nIde konten edukasi:\n✅ Mitos vs Fakta kesehatan\n✅ Tips kesehatan musiman\n✅ Penjelasan penyakit dari dokter\n✅ FAQ pasien\n✅ Infografis alur pelayanan\n\nArtikel selengkapnya di studiosoft.id",
    },
    {
        "id": "hc05",
        "topic": "SEO Klinik & RS",
        "article_url": "https://studiosoft.id/panduan-seo-klinik-rumah-sakit",
        "threads": "Biar klinik & RS gampang ditemukan di Google:\n\n1. Google Business Profile — isi LENGKAP, foto banyak\n2. Riset keyword — \"dokter kulit Surabaya\", \"biaya operasi katarak\"\n3. SEO teknis — website cepat, mobile-friendly\n4. Review management — minta pasien review, tanggapi semua\n5. Konten lokal — artikel dengan sebutan kota/lokasi\n\nSEO itu investasi jangka panjang yang hasilnya GRATIS setiap hari.",
        "linkedin": "SEO untuk klinik dan RS punya karakteristik unik. Pasien mencari dengan intent yang sangat spesifik:\n\n\"Dokter spesialis jantung Surabaya\" → mencari dokter tertentu\n\"Biaya operasi katarak\" → mencari informasi harga\n\"Klinik gigi terdekat\" → ingin datang sekarang\n\nStrategi SEO harus mencakup semua jenis keyword ini:\n\n1. Optimasi Google Business Profile secara menyeluruh\n2. Riset keyword spesifik kesehatan\n3. Local SEO — NAP konsisten, local citation\n4. Kecepatan website & mobile optimization\n5. Konten edukasi yang dioptimasi untuk SEO\n\nStudioSoft adalah partner SEO yang sudah banyak membantu RS & klinik meningkatkan visibilitas di Google.\n\n#SEO #LocalSEO #HealthcareMarketing #RumahSakit",
        "fb": "Biar klinik & RS gampang ditemukan pasien di Google, ini yang harus dilakukan:\n\n1. Google Business Profile — isi LENGKAP dengan foto dan jam operasional\n2. Riset keyword spesifik — bukan \"klinik\" doang, tapi \"klinik gigi Surabaya\"\n3. Website cepat dan mobile-friendly\n4. Kelola review dengan baik — minta pasien review, tanggapi semua\n5. Artikel edukasi yang dioptimasi SEO\n\nSEO itu seperti etalase digital. Kalau etalase Anda rapi, pasien akan mampir. Kalau berantakan, mereka lewat.\n\nBaca panduan lengkapnya di studiosoft.id",
    },
    {
        "id": "hc06",
        "topic": "Klinik Kecil DM",
        "article_url": "https://studiosoft.id/klinik-kecil-butuh-digital-marketing",
        "threads": "Mitos: \"Klinik saya kecil, cukup pasien datang aja.\"\n\nFakta: Justru klinik kecil paling diuntungkan digital marketing.\n\nKenapa?\n✅ Biaya lebih rendah\n✅ Jangkauan lebih tepat sasaran\n✅ Hasil lebih cepat terasa\n✅ Bisa mulai dari gratis (GBP, IG, SEO)\n\nJangan remehkan kekuatan digital buat klinik kecil. Mulai dari satu langkah hari ini.",
        "linkedin": "Mitos terbesar: \"Klinik saya kecil, cukup pasien datang aja.\"\n\nFakta: Klinik kecil justru paling diuntungkan oleh digital marketing.\n\nMengapa?\nDigital marketing bisa dimulai dari Rp0 (Google Business Profile gratis)\nSEO lokal tidak membedakan besar kecil — yang penting relevan\nIklan FB bisa mulai Rp20.000/hari\nJangkauan lebih terukur dibanding brosur atau spanduk\n\nRata-rata klinik kecil yang konsisten dengan edukasi di Instagram melihat peningkatan kunjungan 25-40% dalam 3-6 bulan.\n\nStudioSoft siap membantu klinik kecil memulai digital marketing tanpa perlu budget besar.\n\n#KlinikKecil #DigitalMarketing #UMKM #Healthcare",
        "fb": "Banyak pemilik klinik kecil berpikir: \"Ah, klinik saya kecil, cukup pasien datang aja.\"\n\nIni mitos terbesar di dunia kesehatan. Justru klinik kecil yang paling diuntungkan digital marketing. Kenapa?\n\nKarena digital marketing bisa dimulai dari GRATIS. Google Business Profile gratis. Posting Instagram gratis. SEO jangka panjang juga gratis.\n\nKlinik kecil juga lebih unggul dalam hal kedekatan dengan pasien. Dengan konten edukasi yang relevan, pasien akan merasa kenal dan percaya — dan itu jauh lebih berharga daripada billboard besar di pinggir jalan.\n\nBaca artikel lengkap di studiosoft.id",
    },
    {
        "id": "hc07",
        "topic": "Social Media RS",
        "article_url": "https://studiosoft.id/social-media-rumah-sakit-efektif",
        "threads": "Bingung milih platform sosmed buat RS?\n\n📱 Instagram — visual edukasi, reels dokter, Q&A stories\n📘 Facebook — artikel panjang, event, info lengkap\n▶️ YouTube — video edukasi, virtual tour RS\n🎵 TikTok — fakta unik, myth busting, konten ringan\n💼 LinkedIn — branding institusi, publikasi\n\nGak perlu semua. Pilih 2-3 platform yang paling cocok.",
        "linkedin": "Panduan platform sosial media untuk rumah sakit:\n\n📱 Instagram — terbaik untuk visual edukasi & reels dokter\n📘 Facebook — masih kuat untuk demografi 35+ (segmen utama pasien)\n▶️ YouTube — paling underutilized; video edukasi dokter mendatangkan traffic organik\n🎵 TikTok — edukasi ringan untuk Gen Z & milenial\n💼 LinkedIn — branding institusi dan rekrutmen\n\nKuncinya: pilih 2-3 platform yang paling relevan dengan target pasien, lalu konsisten.\n\n#SocialMediaMarketing #RumahSakit #DigitalMarketing",
        "fb": "Banyak RS punya akun di semua platform sosmed — tapi kontennya itu-itu aja dan engagement mati. Masalahnya bukan di platform, tapi di strategi.\n\nIni panduan singkat milih platform buat RS:\n📱 Instagram → konten edukasi visual, reels dokter\n📘 Facebook → artikel panjang, info event, grup diskusi\n▶️ YouTube → video edukasi dokter, virtual tour RS\n🎵 TikTok → edukasi ringan, fakta unik\n💼 LinkedIn → branding institusi, publikasi\n\nGak perlu semua sekaligus. Pilih 2-3, konsisten, dan ukur hasilnya.\n\nArtikel selengkapnya di studiosoft.id",
    },
    {
        "id": "hc08",
        "topic": "GBP untuk Klinik",
        "article_url": "https://studiosoft.id/google-business-profile-klinik",
        "threads": "Google Business Profile itu aset digital paling underrated buat klinik. Gratis, gampang dioptimasi, efeknya langsung kerasa.\n\nCoba cek GBP klinik Anda:\n✅ Foto udah lengkap? (min 20 foto)\n✅ Jam buka akurat?\n✅ Ada link website & WA?\n✅ Review ditanggapi?\n\nKalo belum, segera optimasi. Ini modal dasar dapat pasien baru.",
        "linkedin": "Google Business Profile (GBP) adalah aset digital paling underutilized oleh klinik dan RS di Indonesia.\n\nPadahal GBP gratis, mudah dioptimasi, dan efeknya langsung pada jumlah pasien.\n\nLangkah optimasi GBP:\n1. Verifikasi kepemilikan\n2. Data lengkap — nama, alamat, jam, telepon, website\n3. Minimal 20 foto — eksterior, interior, dokter, tim\n4. Posting rutin — layanan baru, tips kesehatan\n5. Manajemen review — tanggapi semua dengan baik\n\nKlien klinik gigi kami di Surabaya mengalami kenaikan 40% permintaan \"Petunjuk Arah\" setelah optimasi GBP.\n\nStudioSoft bisa membantu optimasi GBP sebagai bagian dari strategi SEO lokal.\n\n#GoogleBusinessProfile #SEO #LocalSEO #Klinik",
        "fb": "Google Business Profile (GBP) adalah aset digital PALING UNDERATED buat klinik dan RS. Gratis, gampang dioptimasi, efeknya langsung ke jumlah pasien.\n\nCoba cek GBP klinik Anda sekarang:\n1. Apakah fotonya udah lengkap? Minimal 20 foto\n2. Jam buka akurat termasuk weekend?\n3. Ada link website + nomor WA?\n4. Review ditanggapi dengan baik?\n\nSalah satu klien klinik gigi kami di Surabaya setelah optimasi GBP mengalami kenaikan 40% permintaan petunjuk arah. Gak perlu iklan mahal-mahal — modal GBP aja udah bisa narik pasien baru.\n\nPanduan lengkap di studiosoft.id",
    },
    {
        "id": "hc09",
        "topic": "Iklan FB/IG RS",
        "article_url": "https://studiosoft.id/iklan-facebook-rumah-sakit",
        "threads": "Iklan FB/IG buat RS boleh kok, asal tau aturan:\n\n❌ Jangan: klaim berlebihan, foto before-after sensasional\n✅ Boleh: edukasi informatif, promosi layanan netral, brand awareness\n\nKuncinya: jual value, bukan janji. Pasien modern pinter — mereka bisa bedain mana iklan yang niat bantu mana yang cuma jualan.",
        "linkedin": "Iklan Facebook & Instagram untuk rumah sakit — etis, efektif, dan sesuai regulasi.\n\nYang boleh:\n✅ Edukasi informatif yang tidak bombastis\n✅ Promosi layanan dengan narasi netral\n✅ Brand awareness\n✅ Targeting demografis yang spesifik\n✅ Retargeting pengunjung website\n\nYang tidak boleh:\n❌ Klaim kesembuhan berlebihan\n❌ Foto before-after tanpa disclaimer\n❌ Fear-based marketing\n❌ Promosi obat resep\n\nStudioSoft berpengalaman menjalankan iklan FB/IG untuk klien RS dan klinik dengan tetap mematuhi regulasi.\n\n#FacebookAds #InstagramAds #HealthcareMarketing #RumahSakit",
        "fb": "Iklan FB & IG buat RS dan klinik — sebenernya boleh banget, asal tahu aturan mainnya.\n\nYang BOLEH:\n✅ Edukasi informatif\n✅ Promosi layanan dengan gaya netral\n✅ Brand awareness\n✅ Targeting spesifik (usia, lokasi, minat)\n✅ Retargeting pengunjung website\n\nYang TIDAK BOLEH:\n❌ Klaim sembarangan (misal: \"sembuh total 1 hari\")\n❌ Foto before-after tanpa disclaimer\n❌ Konten bikin cemas berlebihan\n❌ Promosi obat resep\n\nMulai dari budget kecil dulu, uji kreatif mana yang paling efektif, baru scale up.\n\nPanduan lengkap di studiosoft.id",
    },
    {
        "id": "hc10",
        "topic": "Data Analytics RS",
        "article_url": "https://studiosoft.id/data-analytics-rumah-sakit-kebutuhan-pasien",
        "threads": "RS & klinik punya banyak data — dari pendaftaran, website, sosmed, sampai feedback pasien. Tapi jarang dianalisis.\n\nPadahal di data itu ada jawaban:\n🔍 Layanan apa yang paling dicari?\n🕐 Jam berapa booking tertinggi?\n👥 Siapa demografi pasien Anda?\n💬 Apa yang paling dikeluhkan?\n\nData bicara — Anda tinggal mendengar.",
        "linkedin": "Rumah sakit dan klinik menghasilkan data setiap hari — namun sebagian besar tidak pernah dianalisis.\n\nData analytics bisa menjawab pertanyaan paling penting bagi RS:\nLayanan apa yang paling dicari pasien?\nDari mana asal pasien?\nJam berapa booking tertinggi?\nKonten apa yang paling engaging?\nBerapa biaya per pasien baru dari iklan?\n\nContoh nyata: RS di Surabaya melihat 60% traffic website dari pencarian \"biaya operasi katarak\". Setelah membuat halaman khusus, booking naik 35% dalam 2 bulan.\n\nData-driven decision making adalah masa depan marketing RS.\n\n#DataAnalytics #RumahSakit #DigitalMarketing #Healthcare",
        "fb": "RS dan klinik itu sebenarnya duduk di atas gunung data. Setiap hari ada data pendaftaran, kunjungan website, interaksi sosmed, feedback pasien. Tapi kebanyakan gak pernah digali.\n\nPadahal dari data itu Anda bisa tahu:\n✅ Layanan apa yang paling banyak dicari\n✅ Jam berapa pasien paling sering booking\n✅ Dari mana asal pasien\n✅ Konten apa yang paling diminati\n✅ Apa keluhan paling umum\n\nIni yang disebut data-driven marketing — dan ini keahlian utama StudioSoft. Partner pertumbuhan bisnis berbasis data.\n\nArtikel selengkapnya di studiosoft.id",
    },
]

# === STATE ===
STATE_FILE = os.path.expanduser("~/.openclaw/workspace-atun/studiosoft_healthcare_state.json")
LOG_FILE = os.path.expanduser("~/.openclaw/workspace-atun/studiosoft_healthcare_log.txt")

def log(msg):
    ts = datetime.now(WIB).strftime("%Y-%m-%d %H:%M:%S")
    line = f"[{ts} WIB] {msg}"
    with open(LOG_FILE, "a") as f:
        f.write(line + "\n")
    print(line)

def get_next_index():
    if os.path.exists(STATE_FILE):
        with open(STATE_FILE) as f:
            st = json.load(f)
        return st.get("index", -1) + 1
    return 0

def save_state(idx):
    with open(STATE_FILE, "w") as f:
        json.dump({
            "index": idx,
            "topic": CONTENT[idx]["topic"],
            "last_post": datetime.now(WIB).strftime("%Y-%m-%d %H:%M")
        }, f)

def get_next_slot():
    """Cari slot kosong berikutnya dari 7 slot"""
    now = datetime.now(WIB)
    today = now.strftime("%Y-%m-%d")
    
    for sh in SLOTS:
        sched = f"{today}T{sh:02d}:00:00+07:00"
        sched_dt = datetime.strptime(sched, "%Y-%m-%dT%H:%M:%S+07:00").replace(tzinfo=WIB)
        if sched_dt > now:
            return sched, sh
    return None, None

def threaded_post(account_id, texts, media_urls, slot_base_hour):
    """Post nested: Post 1 → Reply 2 → Reply 3"""
    today = datetime.now(WIB).strftime("%Y-%m-%d")
    parent_id = None
    
    platform_name = [k for k, v in ACC.items() if v == account_id][0]
    
    for i in range(len(texts)):
        if i < len(media_urls) and media_urls[i]:
            url = media_urls[i]
        else:
            url = None
        
        text = texts[i]
        if len(text) > 500:
            text = text[:497] + "..."
        
        iso = f"{today}T{slot_base_hour:02d}:{i:02d}:00+07:00"
        
        payload = {
            "title": "",
            "description": text,
            "topic": "",
            "type": "text",
            "medias": [{"url": url}] if url else [],
            "meta": {"title": "", "description": "", "url": ""},
            "additionalInfo": {
                "isAiGenerated": False, "isDraft": False,
                "collaborators": [], "mentions": [],
                "music": {"id": "", "artist": "", "name": "", "thumbnail": ""},
                "products": [], "tags": []
            },
            "replies": [parent_id] if parent_id else [],
            "accountId": account_id,
            "scheduleAt": iso,
        }
        
        body = json.dumps(payload).encode()
        req = urllib.request.Request(BASE, data=body, headers=HDR, method="POST")
        try:
            with urllib.request.urlopen(req, timeout=15) as r:
                result = json.loads(r.read())
                sid = result.get("scheduleId")
                log(f"✅ {platform_name} post {i+1} → {sid} | {slot_base_hour:02d}:{i:02d} WIB")
                parent_id = sid
        except Exception as e:
            err_body = e.read().decode() if hasattr(e, 'read') else str(e)
            log(f"❌ {platform_name} post {i+1}: {err_body[:150]}")
            return False
    return True

def run():
    log("=" * 50)
    log("StudioSoft Healthcare Series — Auto Poster")
    
    # Cek konten berikutnya
    idx = get_next_index()
    if idx >= len(CONTENT):
        log("✅ Semua konten healthcare sudah diposting! Reset ke awal.")
        idx = 0
    
    content = CONTENT[idx]
    article = content["article_url"]
    log(f"📝 Konten #{idx+1}/10: {content['topic']} | {article}")
    
    # Cek slot kosong
    sched_iso, slot_hour = get_next_slot()
    if not sched_iso:
        log("❌ Tidak ada slot kosong hari ini.")
        return False
    
    log(f"🕐 Slot: {slot_hour:02d}:00 WIB | Schedule: {sched_iso}")
    
    # === THREADS ===
    log("\n📱 THREADS:")
    threads_texts = [
        content["threads"],
        f"Baca selengkapnya: {article}\n\nKonsultasi digital marketing RS & klinik 👇\nwww.studiosoft.id",
        "#StudioSoft #HealthcareDigital #RumahSakit #Klinik"
    ]
    threaded_post(ACC["threads"], threads_texts, [None, None, None], slot_hour)
    
    # === LINKEDIN ===
    log("\n💼 LINKEDIN:")
    li_texts = [
        content["linkedin"],
        f"Baca artikel lengkap: {article}\n\nKonsultasi digital marketing RS & klinik 👇\nwww.studiosoft.id",
        "#StudioSoft #HealthcareDigital #DigitalMarketing"
    ]
    threaded_post(ACC["linkedin"], li_texts, [None, None, None], slot_hour)
    
    # === FB ===
    log("\n🔵 FACEBOOK:")
    fb_text = content["fb"] + "\n\n📖 Baca selengkapnya: " + article + "\n\n#StudioSoft #HealthcareDigital #RumahSakit #Klinik"
    fb_texts = [
        fb_text,
        "Ada pertanyaan seputar digital marketing RS & klinik? Tanya di kolom komentar! 👇",
        "#StudioSoft #HealthcareDigital"
    ]
    threaded_post(ACC["fb"], fb_texts, [None, None], slot_hour)
    
    save_state(idx)
    log(f"\n🎉 Selesai! Posting healthcare #{idx+1} — {content['topic']}")
    log(f"   📱 Threads ✅ | 💼 LinkedIn ✅ | 🔵 FB ✅")
    return True

if __name__ == "__main__":
    success = run()
    sys.exit(0 if success else 1)

