#!/usr/bin/env python3
"""studiosoft_hc49_carousel_gen.py — StudioSoft Healthcare Carousel hc49 (RE-AIR/new-topic Threads).

Topik : "Strategi SEO Terbaik untuk Klinik Kecantikan di Surabaya: Tingkatkan Pasien Lewat Google"
Artikel: https://studiosoft.id/strategi-seo-terbaik-untuk-klinik-kecantikan-di-surabaya-tingkatkan-pasien-lewat-google/
         (alive / HTTP 200, diverifikasi 28 Sep 2026, WP id 3764)

Konteks run 28 Sep 2026 (02:00 WIB / 27 Sep 19:00 UTC):
- Stok artikel healthcare BARU masih HABIS (WP REST 28 Sep: artikel terbaru 27 Sep
  `bikin-konten-pakai-ai-boleh-asal-tahu-batasnya` = non-healthcare).
- AUDIT (hc49_audit.py, 28 Sep): 7 artikel HC seri ini masih DEAD/404.
- Threads: artikel ini SATU-SATUNYA artikel HC yang MASIH hidup yang BELUM PERNAH jadi
  topik carousel seri hc (jejak Threads hanya 1x text 14 Sep 2026 16:01Z) -> topik efektif baru.
- Slide BARU `ss_hc49_seoklinikcan_*`.

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_hc49_carousel")
TAG = "#seoklinik"
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([("SEO UNTUK", SKY), "KLINIK", "KECANTIKAN"], after=44)
    s.lead("Klinik kecantikan baru bermunculan di Surabaya setiap tahun. Tantangannya bukan "
           "hanya kualitas layanan, tetapi bagaimana calon pasien menemukan klinik Anda di Google.",
           after=34)
    s.para("Hanya segelintir klinik yang muncul di halaman pertama. Sebagian besar calon pasien "
           "memilih dari daftar itu tanpa scroll lebih jauh.", size=30)
    return s.render("ss_hc49_seoklinikcan_01_cover.png", OUT_DIR)


def s2():
    s = mk(2)
    s.title([("KENAPA KLINIK", SKY), "BUTUH SEO?"], after=44)
    s.bullets([
        ("Ditemukan saat dibutuhkan", "orang mengetik klinik kecantikan terbaik Surabaya, "
                                      "lalu memilih cepat dari hasil teratas."),
        ("Terlihat lebih kredibel", "muncul di halaman pertama membentuk kesan profesional "
                                    "sebelum calon pasien membaca satu kata pun."),
        ("Berhenti kehilangan peluang", "tanpa optimasi, klinik Anda tidak pernah masuk "
                                        "pertimbangan mereka sama sekali."),
    ], gap=26, name_size=38, desc_size=28)
    return s.render("ss_hc49_seoklinikcan_02_kenapa.png", OUT_DIR)


def s3():
    s = mk(3)
    s.title([("FONDASI:", SKY), "KATA KUNCI,", "ON-PAGE, KONTEN"], after=44)
    s.bullets([
        ("Riset kata kunci", "perawatan wajah aman di Surabaya, klinik estetika terpercaya, "
                             "treatment laser wajah."),
        ("Optimasi on-page", "judul dan meta deskripsi ber-kata kunci, struktur heading "
                             "logis, gambar dengan alt text relevan."),
        ("Konten yang menjawab", "artikel yang menjawab pertanyaan pasien dengan bahasa "
                                 "humanis, bukan sekadar banyak kata."),
    ], gap=26, name_size=38, desc_size=28)
    return s.render("ss_hc49_seoklinikcan_03_fondasi.png", OUT_DIR)


def s4():
    s = mk(4)
    s.title([("MENANG DI", SKY), "PENCARIAN", "LOKAL"], after=44)
    s.bullets([
        ("Google Business Profile", "foto, jam operasional, kategori layanan, dan alamat "
                                    "yang konsisten di semua platform."),
        ("Ulasan pasien", "jumlah dan kesegaran ulasan ikut menentukan siapa yang dipilih "
                          "di hasil pencarian sekitar."),
        ("Kecepatan & mobile", "website yang cepat dan nyaman di ponsel menjaga calon pasien "
                               "tidak kabur sebelum menghubungi."),
    ], gap=26, name_size=38, desc_size=28)
    return s.render("ss_hc49_seoklinikcan_04_lokal.png", OUT_DIR)


def s5():
    s = mk(5)
    s.title([("MULAI DARI", SKY), "SATU LANGKAH", "YANG RAPI"], after=44)
    s.lead("Rapikan Google Business Profile dan kata kunci lokal dulu, lalu tumbuhkan konten "
           "edukasi setahap demi setahap.", after=34)
    s.para("Yang membedakan klinik yang tumbuh dan yang jalan di tempat biasanya bukan anggaran, "
           "tapi konsistensi merawat kanal digitalnya.", size=30, after=18)
    s.h2("www.studiosoft.id", size=40)
    return s.render("ss_hc49_seoklinikcan_05_cta.png", OUT_DIR)


if __name__ == "__main__":
    print("StudioSoft Healthcare Carousel hc49 \u2014 SEO klinik kecantikan Surabaya")
    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)
