#!/usr/bin/env python3
"""studiosoft_hc64_carousel_gen.py — StudioSoft Healthcare Carousel hc64.

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/
         (WP id 3764) RE-AIR Threads (jejak Threads terakhir 29 Sep 2026 02:01Z / hc49 =
         PALING TUA di antara artikel HC hidup yang TIDAK punya jadwal Threads mendatang;
         artikel HTTP 200). Slide BARU ss_hc64_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). 5 slide: cover + 3 isi + CTA.
"""
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"
OUT_DIR = os.path.join(WS, "studiosoft_hc64_carousel")
TAG = "#klinikkecantikan"
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 KLINIK", SKY), "KECANTIKAN SURABAYA"], after=44)
    s.lead("Pasien baru tidak lagi datang dari brosur atau spanduk. Mereka mengetik "
           "\u201cklinik kecantikan terbaik Surabaya\u201d di Google, lalu memilih dari "
           "halaman pertama.", after=30)
    s.para("Lima langkah berikut membangun visibilitas klinik secara bertahap dan terukur, "
           "bukan sekali jalan.", size=30)
    return s.render("ss_hc64_seoklinikcan_01_cover.png", OUT_DIR)


def s2():
    s = mk(2)
    s.title([("LANGKAH 1-3", SKY), "FONDASI PENCARIAN"], after=40)
    s.bullets([
        ("Riset kata kunci", "pilih frasa bervolume tinggi dengan kompetisi terukur, "
                             "misalnya \u201cklinik kecantikan Surabaya\u201d atau "
                             "\u201ctreatment laser wajah Surabaya\u201d."),
        ("Optimasi on-page", "judul dan meta deskripsi memuat kata kunci utama, heading "
                             "tersusun logis, internal link antar halaman diperkuat."),
        ("Cepat dan ramah ponsel", "website yang ringan dan nyaman dibaca dari HP membuat "
                                   "calon pasien betah menjelajah sebelum menghubungi."),
    ], gap=18, name_size=34, desc_size=24)
    return s.render("ss_hc64_seoklinikcan_02_fondasi.png", OUT_DIR)


def s3():
    s = mk(3)
    s.title([("LANGKAH 4-5", SKY), "KONTEN & LOCAL SEO"], after=40)
    s.bullets([
        ("Konten yang menjawab", "ulas manfaat laser untuk kulit berjerawat atau beda Botox "
                                 "dan filler dengan bahasa humanis, tidak menggurui."),
        ("Local SEO", "data lokasi konsisten di Google Maps, Google Business Profile, dan "
                      "schema markup agar terbaca sebagai bisnis lokal Surabaya."),
        ("Reputasi ulasan", "minta ulasan beberapa hari setelah kunjungan dan balas semuanya, "
                            "termasuk yang bernada negatif."),
    ], gap=16, name_size=33, desc_size=23)
    return s.render("ss_hc64_seoklinikcan_03_konten.png", OUT_DIR)


def s4():
    s = mk(4)
    s.title([("JAGA &", SKY), "UKUR HASILNYA"], after=40)
    s.bullets([
        ("Pantau performa", "Search Console dan Analytics menunjukkan halaman mana yang "
                            "benar-benar menarik calon pasien."),
        ("Satu halaman per layanan", "layanan unggulan perlu halaman khusus dengan konten yang "
                                     "terus disegarkan, bukan ditumpuk di halaman utama."),
        ("Konsisten", "algoritma dan perilaku pencarian berubah; SEO bukan pekerjaan sekali "
                      "selesai lalu ditinggalkan."),
    ], gap=18, name_size=34, desc_size=24)
    s.para("Anggaran tidak harus besar. Yang penting prioritas jelas dan hasilnya diukur.",
           size=26, after=0)
    return s.render("ss_hc64_seoklinikcan_04_ukur.png", OUT_DIR)


def s5():
    s = mk(5)
    s.title([("SEO ITU ASET,", SKY), "BUKAN BIAYA"], after=40)
    s.lead("Klinik yang rapi di Google mendapat pasien tanpa harus beriklan terus-menerus.",
           after=28)
    s.para("StudioSoft menyusun strategi SEO klinik kecantikan yang selaras dengan identitas "
           "brand Anda.", size=30)
    s.h2("www.studiosoft.id", size=40)
    return s.render("ss_hc64_seoklinikcan_05_cta.png", OUT_DIR)


if __name__ == "__main__":
    print("StudioSoft Healthcare Carousel hc64 - 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)
