#!/usr/bin/env python3
"""studiosoft_hc54_carousel_gen.py — StudioSoft Healthcare Carousel hc54.

Topik : "Jasa Digital Marketing Klinik: Cara Menarik Pasien Baru dari Google"
Artikel: https://studiosoft.id/jasa-digital-marketing-klinik/
         (artikel HC hidup, HTTP 200 terverifikasi 3 Okt 2026 02:00 WIB;
          jejak Threads terakhir 14 Sep 2026 02:01Z / hc36 -> RE-AIR, slide BARU ss_hc54_jasmarkklinik_*)

Konteks run 3 Okt 2026 (02:00 WIB / 2 Okt 19:00 UTC):
- Tidak ada artikel healthcare BARU (post terbaru studiosoft.id 2 Okt = `konsultan-pemasaran-digital`,
  non-healthcare) -> RE-AIR artikel HC hidup dgn jejak Threads paling tua & belum pernah jadi
  carousel belakangan.
- AUDIT (hc53_audit.py): 7 artikel HC lama masih DEAD/404; 13 artikel HC hidup.

Isi slide diambil dari artikel asli: tantangan marketing klinik, perjalanan calon pasien, 5 strategi,
kesalahan yang sering terjadi.

Standar desain Bos 16 Sep 2026: engine ss_carousel_lib.py -> rata kiri, satu blok di tengah
vertikal, TANPA 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

WS = "/home/mantapman/.hermes/profiles/atun/workspace"   # JANGAN pakai expanduser("~")
OUT_DIR = os.path.join(WS, "studiosoft_hc54_carousel")
TAG = "#jasamarketingklinik"
BG = (18, 43, 99)      # #122B63
SKY = L.SKY


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


def s1():
    s = mk(1)
    s.title([("MARKETING KLINIK", SKY), "BUKAN SEKADAR", "PROMOSI"], after=44)
    s.lead("Klinik tidak menjual produk yang bisa dilihat di foto, tetapi menjual kepercayaan.",
           after=34)
    s.para("Calon pasien mencari keyakinan bahwa mereka akan ditangani dengan aman oleh tenaga "
           "profesional. Karena itu strateginya fokus pada kepercayaan dan kemudahan, bukan "
           "sekadar ramai promosi.", size=30)
    return s.render("ss_hc54_jasmarkklinik_01_cover.png", OUT_DIR)


def s2():
    s = mk(2)
    s.title([("PERJALANAN", SKY), "CALON PASIEN"], after=44)
    s.bullets([
        ("Sadar ada masalah", "keluhan seperti jerawat yang tak sembuh atau gusi berdarah "
                              "membuat mereka mulai mencari jawaban."),
        ("Mencari solusi", "membaca artikel dan membandingkan cara penanganan yang tersedia."),
        ("Mencari penyedia terdekat", "kata kunci berubah menjadi klinik terdekat atau dokter "
                                      "di kota saya."),
        ("Memutuskan", "melihat ulasan, jam buka, dan kemudahan membuat janji."),
        ("Catatan penting", "pada tahap akhir Google menampilkan hasil peta di atas hasil biasa. "
                            "Yang tidak muncul di sana akan kalah."),
    ], gap=22, name_size=38, desc_size=27)
    return s.render("ss_hc54_jasmarkklinik_02_perjalanan.png", OUT_DIR)


def s3():
    s = mk(3)
    s.title([("LIMA STRATEGI", SKY), "YANG BEKERJA"], after=44)
    s.bullets([
        ("Jawab pertanyaan kesehatan", "dengan bahasa yang dipahami dan tetap dalam batas etika "
                                       "medis, tanpa menjanjikan kesembuhan."),
        ("Menang di pencarian sekitar", "Google Business Profile lengkap, ulasan yang segar, dan "
                                        "halaman lokasi yang jelas."),
        ("Permudah cara menghubungi", "tombol WhatsApp yang terlihat, jam praktik yang akurat, "
                                      "dan balasan cepat untuk pertanyaan umum."),
        ("Tunjukkan kredibilitas", "profil dokter, penjelasan prosedur, bukti sosial, dan "
                                   "kejelasan biaya konsultasi."),
        ("Konten yang tahan lama", "panduan penanganan keluhan umum dan tanya jawab pasien yang "
                                   "tetap relevan."),
    ], gap=20, name_size=38, desc_size=26)
    return s.render("ss_hc54_jasmarkklinik_03_strategi.png", OUT_DIR)


def s4():
    s = mk(4)
    s.title([("KESALAHAN YANG", SKY), "SERING TERJADI"], after=44)
    s.bullets([
        ("Menjanjikan hasil instan", "melanggar etika dan justru merusak kepercayaan pasien."),
        ("Mengabaikan hasil peta", "fokus menulis artikel, padahal mayoritas pencarian bersifat "
                                   "lokal."),
        ("Tidak melibatkan dokter", "konten kesehatan tanpa peninjauan tenaga medis kehilangan "
                                    "kredibilitas."),
        ("Membiarkan pertanyaan menggantung", "calon pasien cenderung memilih klinik yang "
                                              "merespons lebih cepat."),
        ("Tidak mengukur", "tanpa data, tidak diketahui konten mana yang benar-benar mendatangkan "
                           "pasien."),
    ], gap=20, name_size=38, desc_size=26)
    return s.render("ss_hc54_jasmarkklinik_04_kesalahan.png", OUT_DIR)


def s5():
    s = mk(5)
    s.title([("BANGUN", SKY), "KEPERCAYAAN"], after=44)
    s.lead("Jasa digital marketing klinik yang tepat tidak sekadar mendatangkan trafik, tetapi "
           "membangun kepercayaan.", after=30)
    s.para("Informasi yang akurat, kemudahan menghubungi, dan kredibilitas yang terlihat adalah "
           "fondasi paling tahan lama untuk mendatangkan pasien.", size=30)
    s.h2("www.studiosoft.id", size=40)
    return s.render("ss_hc54_jasmarkklinik_05_cta.png", OUT_DIR)


if __name__ == "__main__":
    print("StudioSoft Healthcare Carousel hc54 \u2014 jasa digital marketing klinik")
    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)
