#!/usr/bin/env python3
"""studiosoft_hc40_carousel_gen.py — StudioSoft Healthcare Carousel hc40.

Topik : "Mengapa Klinik Kecil Juga Butuh Digital Marketing — Mitos dan Fakta"
Artikel: https://studiosoft.id/klinik-kecil-butuh-digital-marketing/

Konteks run 19 Sep 2026 (02:00 WIB / 18 Sep 19:00 UTC):
- Stok artikel healthcare BARU masih HABIS (WP REST 18 Sep: artikel terbaru 18 Sep
  `digital-marketing-surabaya-strategi-jitu-bisnis-naik-kelas`, non-healthcare).
- Semua topik carousel healthcare lama sudah pernah tayang di Threads SS (hc01-hc39).
- Kandidat "belum pernah tayang di Threads" tersisa: `klinik-kecil-butuh-digital-marketing`
  (hanya pernah jadi text-post pipeline artikel-share 9 Sep yang GAGAL `>500 char`)
  dan `iklan-facebook-rumah-sakit` (sudah dipakai hc39 carousel 18 Sep).
  Topik "klinik kecil butuh digital marketing" BELUM PERNAH tayang -> dipakai di hc40.
- Nama file slide BARU (ss_hc40_klinikkecil_*) mengikuti pola mitigasi hc37/hc38/hc39
  yang terbukti menyembuhkan error intermiten Repliz "The media could not be fetched".

Standar desain Bos 16 Sep 2026: engine ss_carousel_lib.py -> rata kiri, satu blok di tengah
vertikal, TANPA garis separator, bullet dot, bg BIRU TUA #122B63, judul Poppins-Bold 85 /
body 36 / sub 30, auto-fit. Resolusi 1080x1350 (4:5).
"""
import os
import sys

from PIL import Image

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import ss_carousel_lib as L

OUT_DIR = os.path.expanduser("~/.hermes/profiles/atun/workspace/studiosoft_hc40_carousel")
TAG = "#klinikkecil"
BG = (18, 43, 99)      # #122B63 — warna baku Bos (16 Sep 2026)
SKY = L.SKY


def mk(num, total=5):
    return L.Slide(num, total, TAG, bg=BG)


def s1():
    s = mk(1)
    s.title([("KLINIK KECIL", SKY), "JUGA BUTUH", "DIGITAL MARKETING?"], after=56)
    s.lead("\u201cAh, klinik saya kecil, cukup pasien datang saja.\u201d Anggapan ini "
           "masih sering terdengar dari pemilik klinik.", after=44)
    s.para("Padahal faktanya justru terbalik: klinik kecil paling diuntungkan \u2014 "
           "biayanya lebih rendah, jangkauannya lebih tepat, dan hasilnya lebih cepat "
           "terasa.", size=30)
    return s.render("ss_hc40_klinikkecil_01_cover.png", OUT_DIR)


def s2():
    s = mk(2)
    s.title([("MITOS #1", SKY), "& MITOS #2"], after=50)
    s.bullets([
        ("\u201cPasien cukup dari mulut ke mulut\u201d",
         "Faktanya rekomendasi sekarang terjadi di Google Review dan grup Facebook. "
         "Satu ulasan positif bisa dibaca ribuan orang."),
        ("\u201cDigital marketing itu mahal\u201d",
         "Bisa dimulai dari Rp0: optimasi Google Business Profile, konten Instagram, "
         "dan SEO gratis. Iklan Facebook mulai Rp20.000 per hari."),
    ], gap=34, name_size=38, desc_size=30)
    return s.render("ss_hc40_klinikkecil_02_mitos12.png", OUT_DIR)


def s3():
    s = mk(3)
    s.title([("MITOS #3", SKY), "& MITOS #4"], after=50)
    s.bullets([
        ("\u201cPasien tidak cari klinik kecil di internet\u201d",
         "Pasien mencari solusi, bukan ukuran klinik. Untuk kata kunci seperti "
         "\u201cklinik gigi terdekat\u201d, klinik kecil yang rajin SEO lokal bisa "
         "mengalahkan rumah sakit besar di radius tertentu."),
        ("\u201cSaya tidak punya waktu untuk media sosial\u201d",
         "Kanal digital bisa dikelola tim profesional \u2014 biasanya lebih murah "
         "daripada menggaji satu staf marketing tetap."),
    ], gap=34, name_size=38, desc_size=30)
    return s.render("ss_hc40_klinikkecil_03_mitos34.png", OUT_DIR)


def s4():
    s = mk(4)
    s.title([("LANGKAH AWAL", SKY), "YANG REALISTIS"], after=48)
    s.bullets([
        ("Optimasi Google Business Profile", "Gratis, dampaknya paling cepat terasa."),
        ("Instagram profesional", "Isi dengan konten edukasi yang rutin."),
        ("WhatsApp Business", "Mempermudah pasien bertanya dan booking."),
        ("Blog sederhana di website", "Artikel edukasi yang menjawab pertanyaan pasien."),
        ("Minta review Google", "Dari pasien yang puas dengan pelayanan Anda."),
    ], gap=26, name_size=36, desc_size=28)
    return s.render("ss_hc40_klinikkecil_04_langkah.png", OUT_DIR)


def s5():
    s = mk(5)
    s.title([("MULAI DARI", SKY), "YANG GRATIS DULU"], after=52)
    s.lead("Tidak perlu budget besar untuk memulai. Anda tinggal fokus melayani pasien, "
           "sisanya dikerjakan bertahap.", after=42)
    s.para("Butuh partner digital marketing untuk klinik Anda?", size=30, after=10)
    s.h2("www.studiosoft.id", size=40)
    return s.render("ss_hc40_klinikkecil_05_cta.png", OUT_DIR)


if __name__ == "__main__":
    print("StudioSoft Healthcare Carousel hc40 — Klinik Kecil Butuh Digital Marketing")
    print("=" * 70)
    for fn in (s1, s2, s3, s4, s5):
        p = fn()
        print("OK %s %s %d bytes" % (p, Image.open(p).size, os.path.getsize(p)))
    print("OK 5 slide -> %s" % OUT_DIR)
