#!/usr/bin/env python3
"""studiosoft_hc44_carousel_gen.py — StudioSoft Healthcare Carousel hc44 (RE-AIR Threads).

Topik : "Google Business Profile untuk Klinik: Cara Biar Pasien Gampang Nemu Lokasi Anda"
Artikel: https://studiosoft.id/google-business-profile-klinik/

Konteks run 23 Sep 2026 (02:00 WIB / 22 Sep 19:00 UTC):
- Stok artikel healthcare BARU masih HABIS (WP REST 22 Sep: artikel terbaru 20 Sep
  `jasa-branding-surabaya-membangun-identitas-brand-kuat` = non-healthcare; kategori
  healthcare-digital terakhir 13 Sep = jasa-digital-marketing-klinik, sdh dipakai hc36).
- Audit 2.654 jadwal Repliz segar (23 Sep, /tmp/repliz_all_20260923.json), URL-presisi:
  * Threads SS -> GBP klinik TERAKHIR tayang 29 Agu 2026 (teks), jadi kandidat re-air
    paling tua yang tersisa (hc43 sdh memakai rs-klinik-digital-marketing-2026/27 Agu).
  * Slide WAJIB nama file BARU: `ss_hc44_gbp_*` (mitigasi error media-fetch Repliz).

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("~"):
# HOME di profil ini = /home/mantapman/.hermes/profiles/atun/home (bukan /home/mantapman).
OUT_DIR = os.path.join(WS, "studiosoft_hc44_carousel")
TAG = "#seolokal"
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([("PASIEN MENCARI", SKY), "KLINIK DI PETA"], after=50)
    s.lead("Dulu orang tanya tetangga. Sekarang mereka buka Google Maps, lihat rating, "
           "jam buka, dan foto. Kalau klinik Anda tidak muncul, pasien itu pergi ke klinik lain.",
           after=38)
    s.para("Google Business Profile: aset digital klinik yang paling sering diabaikan.", size=30)
    return s.render("ss_hc44_gbp_01_cover.png", OUT_DIR)


def s2():
    s = mk(2)
    s.title([("BUKAN SEKADAR", SKY), "PAPAN NAMA ONLINE"], after=46)
    s.bullets([
        ("Gratis", "tidak perlu budget iklan untuk tampil di peta dan pencarian."),
        ("Langsung terasa", "pasien melihat klinik Anda lengkap dengan tombol Petunjuk Arah."),
        ("Rating & review", "4.5 ke atas lebih dipilih walau layanannya setara."),
        ("Jam operasional", "termasuk weekend dan hari libur, supaya pasien tidak salah datang."),
    ], gap=28, name_size=40, desc_size=28)
    s.para("Profil yang lengkap mengubah pencarian online jadi kunjungan nyata.", size=30, after=0)
    return s.render("ss_hc44_gbp_02_kenapa.png", OUT_DIR)


def s3():
    s = mk(3)
    s.title([("5 LANGKAH", SKY), "OPTIMASI GBP"], after=46)
    s.bullets([
        ("Verifikasi kepemilikan", "via kartu pos, telepon, atau email agar profil aktif penuh."),
        ("Data lengkap & akurat", "nama persis, alamat, jam operasional, telepon, website."),
        ("Kategori yang tepat", "Hospital, Clinic, Dentist, Skin Care Clinic, dan sejenisnya."),
        ("Foto berkualitas", "minimal 20 foto: eksterior, ruang tunggu, dokter, peralatan, tim."),
        ("Posting rutin", "promo, layanan baru, atau tips kesehatan langsung dari profil."),
    ], gap=26, name_size=36, desc_size=28)
    return s.render("ss_hc44_gbp_03_langkah.png", OUT_DIR)


def s4():
    s = mk(4)
    s.title([("REVIEW", SKY), "PENENTU KEPUTUSAN"], after=46)
    s.bullets([
        ("Minta ulasan", "pasien yang puas, misalnya lewat QR code di meja resepsionis."),
        ("Tanggapi semua", "baik positif maupun negatif, maksimal dalam 24 jam."),
        ("Negatif? Sopan", "akui keluhan, tawarkan solusi di luar kolom publik."),
        ("Jangan beli review", "ulasan palsu bisa membuat profil Anda dihapus Google."),
    ], gap=28, name_size=38, desc_size=28)
    return s.render("ss_hc44_gbp_04_review.png", OUT_DIR)


def s5():
    s = mk(5)
    s.title([("HASILNYA", SKY), "BISA DIUKUR"], after=48)
    s.lead("Klinik gigi di Surabaya setelah optimasi GBP: permintaan Petunjuk Arah naik 40% "
           "dalam 3 bulan, review dari 12 menjadi 87, rating terjaga di 4.6.", after=38)
    s.para("Butuh partner optimasi GBP & SEO lokal untuk klinik Anda?", size=30, after=10)
    s.h2("www.studiosoft.id", size=40)
    return s.render("ss_hc44_gbp_05_cta.png", OUT_DIR)


if __name__ == "__main__":
    print("StudioSoft Healthcare Carousel hc44 \u2014 Google Business Profile untuk 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)
