#!/usr/bin/env python3
"""Generator konten Threads harian 28 Sep 2026 (job 04:00 WIB).

Konteks: situs klien lambat (origin ~20-25 s/halaman) — link yang dipakai WAJIB sudah
terverifikasi 200 dari luar (check-host.net):
  - tsc  : https://www.theskincodeclinic.com/penyebab-flek-hitam-dan-cara-mengatasinya-3/  (200, 3 node)
  - das  : https://dasindonesia.com/kompresi-mesin-turun-panduan-lengkap/                    (200, node se2 0.03 s)
Link SS/uky/tslaw hanya pelengkap (guard same-day akan SKIP 3 akun itu).
"""
import json, re, sys

NL = "\n"
CJK = re.compile(r"[\u3000-\u303f\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uff00-\uffef]")
CTA = re.compile(r"komentar|pendapat|diskusi|setuju|share|pengalaman|menurut", re.I)
MENTION = re.compile(r"@\w+")

items = [
    {
        "account": "studiosoft",
        "slot": 11,
        "text": (
            "Saya melihat banyak bisnis di Malang sebenarnya punya produk bagus, tetapi sulit ditemukan saat orang mencari di Google." + NL + NL +
            "Masalahnya bukan pada produk, melainkan pada fondasi SEO: struktur situs, kata kunci lokal, dan konten yang menjawab kebutuhan calon pembeli. Membenahi tiga hal ini biasanya lebih berdampak daripada menambah iklan." + NL + NL +
            "https://studiosoft.id/jasa-seo-malang/" + NL + NL +
            "Menurut Anda, apa kendala terbesar bisnis lokal saat mau muncul di Google? Tulis di komentar ya."
        ),
    },
    {
        "account": "uky",
        "slot": 14,
        "text": (
            "Saya belajar bahwa brand yang kuat bukan yang paling ramai bicara, tapi yang paling jelas soal siapa dirinya." + NL + NL +
            "Ketika positioning sudah tajam, konten jadi lebih mudah dibuat, klien lebih cepat paham, dan harga tidak lagi jadi satu-satunya bahan perbandingan. Brand adalah keputusan, bukan sekadar desain." + NL + NL +
            "https://studiosoft.id/creative-agency-surabaya-solusi-kreatif-brand-berbeda/" + NL + NL +
            "Setuju atau tidak? Kasih tahu pendapatmu di komentar."
        ),
    },
    {
        "account": "tslaw",
        "slot": 17,
        "text": (
            "Saya sering ditanya apakah gugatan perceraian harus selalu dimulai dengan mediasi. Jawabannya: hampir selalu, dan itu bukan sekadar formalitas." + NL + NL +
            "Mediasi memaksa kedua pihak merumuskan apa yang sebenarnya diperebutkan, termasuk hak asuh dan nafkah. Kalau gagal, barulah perkara masuk ke persidangan. Memahami alurnya membuat proses terasa jauh lebih tenang." + NL + NL +
            "https://www.tslaw.id/panduan-cerai-gugat/" + NL + NL +
            "Menurut Anda, mengapa banyak orang justru menghindari mediasi? Tulis pendapatmu di komentar."
        ),
    },
    {
        "account": "tsc",
        "slot": 20,
        "allow_if_no_ownlink": True,
        "text": (
            "Saya sering menemui pasien yang flek hitamnya muncul kembali meski sudah rutin memakai krim pemutih." + NL + NL +
            "Flek bisa berasal dari paparan matahari, bekas jerawat, sampai perubahan hormon. Karena penyebabnya berbeda, penanganannya juga harus bertahap dan disesuaikan kondisi kulit, bukan asal ganti produk." + NL + NL +
            "https://www.theskincodeclinic.com/penyebab-flek-hitam-dan-cara-mengatasinya-3/" + NL + NL +
            "Menurut Anda, mana yang paling sulit dihindari: matahari atau bekas jerawat? Ceritakan di komentar!"
        ),
    },
    {
        "account": "das",
        "slot": 23,
        "allow_if_no_ownlink": True,
        "text": (
            "Saya sering menerima mobil yang tarikannya lesu, padahal pemiliknya merasa servis rutin sudah jalan. Setelah diukur, ternyata kompresi mesinnya turun." + NL + NL +
            "Kompresi turun bisa berasal dari ring piston aus, klep yang tidak rapat, atau kebocoran di ruang bakar. Semakin cepat terdeteksi, semakin ringan biaya perbaikannya." + NL + NL +
            "https://dasindonesia.com/kompresi-mesin-turun-panduan-lengkap/" + NL + NL +
            "Pernah merasakan tarikan mobil melemah? Share pengalamanmu di kolom komentar!"
        ),
    },
]

out = {"date": "2026-09-28", "accounts": items}
bad = 0
for it in items:
    t = it["text"]
    problems = []
    if len(t) > 500:
        problems.append("LEN=%d >500" % len(t))
    if not re.search(r"https?://\S+", t):
        problems.append("TANPA LINK")
    if not CTA.search(t[-220:]):
        problems.append("TANPA CTA")
    if MENTION.search(t):
        problems.append("ADA MENTION")
    if CJK.search(t):
        problems.append("ADA CJK")
    if "..." in t:
        problems.append("ADA ELIPSIS")
    if len([s for s in re.split(r"[.!?]", t) if len(s.strip()) > 12]) < 5:
        problems.append("KALIMAT <5")
    if "#" in t:
        tags = re.findall(r"#(\w+)", t)
        if any(x != x.lower() for x in tags):
            problems.append("HASHTAG KAPITAL")
    print("%-11s slot %2d  len=%3d  %s" % (it["account"], it["slot"], len(t), "OK" if not problems else " | ".join(problems)))
    if problems:
        bad += 1

if bad:
    print("❌ %d item bermasalah" % bad)
    sys.exit(1)

path = "/home/mantapman/.hermes/profiles/atun/workspace/threads_content_today.json"
with open(path, "w") as f:
    json.dump(out, f, ensure_ascii=False, indent=1)
print("✅ tulis", path)
