#!/usr/bin/env python3
"""Perbaikan #2928 (pencemaran nama baik di media sosial): koreksi dasar hukum usang
(Pasal 310 KUHP -> Pasal 433/434 UU 1/2023; Pasal 27A & 45 ayat (4) UU ITE berhenti
berlaku 2 Jan 2026) + panjangkan ke 1.000+ kata + pilar + FAQ/skema.

Dry run default, --apply untuk menulis lewat REST API JSON.
"""
import argparse, base64, json, re, sys, urllib.request, urllib.error, html as ihtml

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
DOM = "tslaw.id"
AUTH = base64.b64encode(b"bambangbot:EFKm EYGx VQCP Y9go ncPr uM2Y").decode()
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}
PID = 2928

FAQ = [
    ("Apakah semua kritik bisa dipidana?",
     "Tidak. Kritik yang disampaikan wajar dan berdasar bukan pencemaran. Hukum membedakan kritik dari penyerangan kehormatan. Pasal 433 ayat (3) UU 1/2023 juga mengecualikan perbuatan yang dilakukan untuk kepentingan umum atau karena terpaksa membela diri."),
    ("Bukti apa yang perlu dikumpulkan?",
     "Tangkapan layar, tautan unggahan, tanggal, identitas akun, serta bukti dampak yang ditimbulkan. Simpan berkas aslinya karena Pasal 5 ayat (1) UU 11/2008 menyebut informasi elektronik dan hasil cetaknya sebagai alat bukti yang sah."),
    ("Apakah harus somasi lebih dulu?",
     "Tidak wajib, tapi jalur damai sering lebih cepat dan hemat. Somasi juga menjadi dokumentasi itikad baik."),
    ("Berapa lama prosesnya?",
     "Jalur damai bisa selesai dalam hitungan minggu. Jalur pidana umumnya berlangsung lebih lama."),
    ("Bisakah menuntut ganti rugi?",
     "Bisa, bila kerugian materi dapat dibuktikan. Dasarnya Pasal 1365 KUHPerdata, dan gugatan bisa berjalan bersamaan dengan proses pidana."),
    ("Apakah Pasal 27A UU ITE masih berlaku?",
     "Tidak lagi. Pasal II UU 1/2024 menyatakan Pasal 27A dan Pasal 45 ayat (4) UU ITE berlaku sampai dengan berlakunya UU 1/2023 tentang KUHP, yaitu pada 2 Januari 2026. Rujukan yang dipakai sekarang Pasal 433 dan Pasal 434 KUHP."),
    ("Berapa batas waktu untuk melapor?",
     "Enam bulan sejak Anda mengetahui adanya tindak pidana bila berdomisili di Indonesia, dan sembilan bulan bila berada di luar negeri, sesuai Pasal 29 ayat (1) UU 1/2023. Pencemaran nama baik adalah delik aduan, sehingga tenggat ini menentukan."),
]

SKEMA = {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
        {"@type": "Question", "name": q,
         "acceptedAnswer": {"@type": "Answer", "text": a}}
        for q, a in FAQ
    ],
}

CONTENT = """<p>Pencemaran nama baik di media sosial bukan sekadar pertengkaran di kolom komentar. Sejak 2 Januari 2026 dasar hukumnya berubah: KUHP baru berlaku penuh, ketentuan pencemaran nama baik berpindah ke Pasal 433 dan Pasal 434 UU 1/2023, dan Pasal 27A UU ITE yang selama bertahun-tahun jadi andalan berhenti berlaku. Artikel ini memetakan dasar hukum terbaru itu sekaligus tujuh langkah yang bisa ditempuh, dari mengamankan bukti digital sampai melapor ke kepolisian.</p>

<h2 class="wp-block-heading">Dasar Hukum Pencemaran Nama Baik Setelah KUHP Baru Berlaku</h2>

<p>Sejak 2 Januari 2026, KUHP Nasional dalam Undang-Undang Nomor 1 Tahun 2023 berlaku. Tiga ketentuan yang paling sering dipakai untuk unggahan bermuatan penyerangan kehormatan adalah:</p>

<ul class="wp-block-list">
<li><strong>Pasal 433 ayat (1)</strong>: menyerang kehormatan atau nama baik orang lain dengan cara menuduhkan suatu hal secara lisan, dengan maksud supaya hal itu diketahui umum. Ancaman pidananya penjara paling lama 9 bulan atau denda paling banyak kategori II, yaitu Rp10 juta.</li>
<li><strong>Pasal 433 ayat (2)</strong>: perbuatan yang sama dilakukan dengan tulisan atau gambar yang disiarkan, dipertunjukkan, atau ditempelkan di tempat umum. Ini disebut pencemaran tertulis, dengan ancaman penjara paling lama 1 tahun 6 bulan atau denda paling banyak kategori III, yaitu Rp50 juta.</li>
<li><strong>Pasal 434</strong>: tuduhan yang tidak dapat dibuktikan kebenarannya padahal pelakunya sudah diberi kesempatan membuktikan, atau fitnah. Ancaman pidananya penjara paling lama 3 tahun atau denda paling banyak kategori IV, yaitu Rp200 juta.</li>
</ul>

<p>Karena media sosial pada dasarnya adalah tulisan yang disiarkan, unggahan berisi tuduhan biasanya dikaitkan dengan Pasal 433 ayat (2), bukan ayat (1). Pasal 433 ayat (3) memberi batas penting: perbuatan itu tidak dipidana jika dilakukan untuk kepentingan umum atau karena terpaksa membela diri. Pasal 310 dan Pasal 311 KUHP lama yang dulu dipakai sudah bukan lagi rujukan, sehingga artikel hukum yang masih menyebut Pasal 310 perlu dibaca dengan hati-hati.</p>

<h2 class="wp-block-heading">Apa yang Berubah pada 2 Januari 2026</h2>

<p>Perubahan terbesar bukan hanya nomor pasal, tetapi nasib Pasal 27A UU ITE. Pasal II UU Nomor 1 Tahun 2024 tentang Perubahan Kedua atas UU ITE menentukan bahwa Pasal 27A dan Pasal 45 ayat (4) berlaku sampai dengan diberlakukannya UU 1/2023 tentang KUHP.</p>

<p>Artinya ancaman 2 tahun penjara dan denda Rp400 juta pada Pasal 45 ayat (4), status delik aduan pada ayat (5), dan ancaman fitnah 4 tahun pada ayat (6) hanya hidup pada masa transisi. Sejak 2 Januari 2026 rujukannya kembali ke Pasal 433 dan Pasal 434 KUHP. Institute for Criminal Justice Reform (ICJR) mencatat Pasal 27A memang tidak lagi berlaku ketika KUHP 2023 mulai berlaku dan menilai perlu penegasan agar tidak timbul ketidakpastian dalam penegakan.</p>

<p>Undang-Undang Nomor 1 Tahun 2026 tentang Penyesuaian Pidana lalu menyelaraskan ancaman pidana pada undang-undang di luar KUHP. Untuk UU ITE, penyesuaian itu menyentuh Pasal 45 ayat (8), Pasal 45 ayat (10), Pasal 45A, dan Pasal 45B. Ketentuan pencemaran nama baik tidak termasuk karena muatannya sudah pindah ke KUHP.</p>

<p>Bagi pelapor, konsekuensi praktisnya sederhana: laporan tetap bisa diajukan, tetapi dasar hukum yang dikutip adalah Pasal 433 atau Pasal 434 UU 1/2023, bukan Pasal 310 KUHP dan bukan Pasal 27A UU ITE. Laporan yang menyebut pasal yang sudah tidak berlaku berisiko dikembalikan atau diperdebatkan sejak awal.</p>

<h2 class="wp-block-heading">1. Pahami Dulu Definisi Pencemaran Nama Baik Secara Hukum</h2>

<p>Pencemaran nama baik adalah tindakan yang menyerang kehormatan atau reputasi seseorang di muka umum. Dalam hukum Indonesia, delik ini kini diatur dalam Pasal 433 UU 1/2023 yang berlaku sejak 2 Januari 2026, menggantikan Pasal 310 KUHP lama. Tidak semua kritik atau opini termasuk pencemaran nama baik. Unsur utamanya adalah adanya tuduhan yang tidak benar dan disebarkan secara sengaja.</p>

<h2 class="wp-block-heading">2. Identifikasi Jenis Pencemaran Nama Baik yang Anda Alami</h2>

<p>Pencemaran nama baik bisa terjadi dalam berbagai bentuk dan media. Yang paling umum sekarang adalah pencemaran melalui media sosial, grup WhatsApp, atau forum online. Ada pula pencemaran secara lisan yang dilakukan di hadapan orang banyak. Setiap jenis memiliki pendekatan pembuktian yang berbeda.</p>

<h2 class="wp-block-heading">Kapan Sebuah Unggahan Bisa Dipidana</h2>

<p>Tidak semua kritik di media sosial masuk kategori pencemaran nama baik. Hukum membedakan antara kritik, penyampaian pendapat, dan perbuatan yang menyerang kehormatan seseorang dengan menyebarkan pernyataan tidak benar.</p>

<p>Yang menjadi penentu adalah ada atau tidaknya unsur menyebarkan, sifat pernyataan yang menyerang kehormatan, dan apakah yang disampaikan diketahui tidak benar. Kritik terhadap kebijakan atau kinerja umumnya bukan pencemaran, selama disampaikan dengan cara yang wajar.</p>

<h2 class="wp-block-heading">Unsur yang Harus Terbukti</h2>

<p>Untuk menilai apakah sebuah unggahan memenuhi Pasal 433, penyidik dan hakim bekerja dengan unsur yang sama setiap kali:</p>

<ul class="wp-block-list">
<li>Ada orang tertentu yang menjadi sasaran, bukan kritik terhadap kebijakan atau lembaga.</li>
<li>Ada tuduhan berupa perbuatan atau fakta tertentu, bukan sekadar penilaian atas kinerja.</li>
<li>Tuduhan disampaikan dengan tulisan atau gambar yang disiarkan sehingga dapat diketahui umum.</li>
<li>Ada kesengajaan, dan tuduhan itu tidak benar.</li>
</ul>

<p>Jika salah satu unsur tidak terpenuhi, misalnya pernyataan yang disampaikan adalah opini atau tuduhan yang justru terbukti benar, Pasal 433 tidak dapat dipakai. Karena itulah pengumpulan bukti dan penyusunan kronologi adalah pekerjaan hukum, bukan sekadar teknis.</p>

<h2 class="wp-block-heading">Ringkasan Langkah Hukum yang Bisa Ditempuh</h2>

<p>Langkah pertama adalah mendokumentasikan. Simpan tangkapan layar, tautan, tanggal, dan identitas akun. Bukti digital yang tercatat rapi sangat menentukan karena unggahan bisa dihapus kapan saja.</p>

<p>Langkah kedua, menempuh jalur non-litigasi: teguran tertulis atau somasi. Tidak jarang pihak lain bersedia menghapus dan meminta maaf. Bila tidak ada itikad baik, barulah jalur pidana atau perdata ditempuh.</p>

<p>Langkah ketiga, pelaporan ke pihak berwenang disertai bukti yang lengkap. Untuk kerugian materi, gugatan perdata bisa diajukan bersamaan.</p>

<h2 class="wp-block-heading">3. Kumpulkan Bukti yang Kuat dan Lengkap</h2>

<p>Langkah paling krusial dalam kasus pencemaran nama baik adalah pengumpulan bukti. Screenshot postingan, komentar, atau pesan yang mengandung fitnah harus segera diamankan. Jangan lupa merekam URL atau tautan konten tersebut sebagai bukti digital. Bukti digital yang kuat akan memperkuat laporan Anda ke pihak kepolisian.</p>

<p>Kekuatan bukti digital tidak diukur dari banyaknya tangkapan layar. Pasal 5 ayat (1) UU Nomor 11 Tahun 2008 tentang Informasi dan Transaksi Elektronik menyatakan informasi elektronik, dokumen elektronik, dan hasil cetaknya merupakan alat bukti hukum yang sah. Karena itu simpan berkas aslinya, bukan hanya gambar yang sudah dikompres, catat tautan lengkap dan tanggal unggahan, lalu simpan salinan di perangkat lain. Bukti yang hilang karena unggahan dihapus jauh lebih sulit dipulihkan daripada bukti yang diamankan sejak awal.</p>

<h2 class="wp-block-heading">4. Lakukan Somasi Sebelum Melapor ke Polisi</h2>

<p>Somasi menjadi langkah damai yang bisa ditempuh sebelum membawa kasus ke ranah pidana. Kirimkan teguran resmi kepada pelaku agar segera menghapus konten dan meminta maaf secara terbuka. Banyak kasus pencemaran nama baik selesai di tahap somasi tanpa perlu berlanjut ke pengadilan. Dengan somasi, Anda menunjukkan itikad baik untuk menyelesaikan masalah secara kekeluargaan.</p>

<p>Jika konten yang merugikan muncul di media massa, jalurnya berbeda. Pasal 5 ayat (2) dan ayat (3) UU Nomor 40 Tahun 1999 tentang Pers mewajibkan pers melayani hak jawab dan hak koreksi. Hak jawab dipakai untuk menanggapi pemberitaan yang merugikan nama baik, sedangkan hak koreksi untuk membetulkan kekeliruan. Keduanya ditempuh sebelum membawa sengketa pemberitaan ke pengadilan.</p>

<h2 class="wp-block-heading">5. Ajukan Laporan ke Polda atau Polres Terdekat</h2>

<p>Apabila somasi tidak diindahkan, langkah selanjutnya adalah melaporkan kasus ke pihak kepolisian. Datanglah ke Polda Jawa Timur atau Polres setempat dengan membawa bukti-bukti yang sudah dikumpulkan. Sampaikan kronologi kejadian secara jelas dan tunjukkan pasal yang dilanggar. Pendampingan advokat sangat disarankan pada tahap ini agar laporan Anda sesuai prosedur.</p>

<p>Dasar kewenangan melapor ada pada Pasal 108 ayat (1) KUHAP: setiap orang yang mengalami, melihat, menyaksikan, atau menjadi korban tindak pidana berhak mengajukan laporan atau pengaduan. Laporan boleh tertulis dan boleh lisan; jika disampaikan lisan, penyidik mencatatnya lalu pengadu dan penyidik menandatanganinya.</p>

<p>Karena pencemaran nama baik adalah delik aduan mutlak, laporan korban menjadi syarat penuntutan. Pasal 29 ayat (1) UU 1/2023 memberi tenggang waktu 6 bulan sejak orang yang berhak mengadu mengetahui adanya tindak pidana bila berdomisili di Indonesia, dan 9 bulan bila berada di luar negeri. Lewat dari tenggat itu hak mengadu gugur, dan inilah yang paling sering membuat korban kehilangan jalur pidana karena terlalu lama menimbang.</p>

<h2 class="wp-block-heading">6. Persiapkan Diri untuk Proses Persidangan</h2>

<p>Proses hukum pencemaran nama baik bisa memakan waktu berbulan-bulan hingga tahunan. Anda perlu menyiapkan mental, waktu, dan biaya untuk mengikuti persidangan. Hakim akan memeriksa bukti digital, saksi ahli, dan keterangan para pihak. Pastikan Anda didampingi advokat yang berpengalaman dalam kasus UU ITE.</p>

<h2 class="wp-block-heading">Jalur Perdata untuk Ganti Rugi</h2>

<p>Jalur pidana tidak selalu yang paling menguntungkan korban. Serangan terhadap nama baik juga merupakan perbuatan melawan hukum yang dapat digugat ganti rugi berdasarkan Pasal 1365 KUHPerdata: setiap perbuatan melawan hukum yang menimbulkan kerugian mewajibkan pelakunya mengganti kerugian tersebut.</p>

<p>Keunggulan jalur perdata adalah fokusnya pada kerugian nyata, misalnya hilangnya klien, pembatalan kontrak, atau biaya pemulihan reputasi. Kelemahannya, Anda harus membuktikan besaran kerugian itu. Gugatan perdata dapat diajukan bersamaan dengan proses pidana karena keduanya berjalan di jalur yang berbeda.</p>

<h2 class="wp-block-heading">Pertimbangan Sebelum Melapor</h2>

<p>Sebelum melapor, pertimbangkan beberapa hal. Apakah pernyataannya benar-benar tidak berdasar. Apakah pelapor bisa membuktikan unsur-unsurnya. Dan apakah jalur damai sudah dicoba lebih dulu.</p>

<p>Perlu juga menyadari bahwa proses hukum atas pencemaran nama baik bisa menarik perhatian lebih luas. Pastikan manfaatnya sepadan dengan risiko yang timbul.</p>

<h2 class="wp-block-heading">7. Konsultasikan Kasus Pencemaran Nama Baik dengan Advokat TSLaw</h2>

<p>Setiap kasus pencemaran nama baik memiliki keunikan dan tantangan tersendiri. Tito Suprianto Law Firm (TSLaw) sebagai kantor advokat di Surabaya siap mendampingi Anda. Profil dan bidang kerja kantor bisa dilihat di halaman <a href="https://www.tslaw.id/law-firm-surabaya/">law firm Surabaya</a> TSLaw. Mulai dari konsultasi awal, penyusunan somasi, hingga pendampingan di pengadilan. Dengan pengalaman menangani berbagai kasus UU ITE, TSLaw dapat menjadi mitra hukum terpercaya Anda.</p>

<h2 class="wp-block-heading">Kesimpulan</h2>

<p>Pencemaran nama baik di media sosial adalah pelanggaran serius yang bisa berakibat pidana penjara. Dengan mengikuti 7 langkah di atas, Anda bisa melindungi reputasi dan mendapatkan keadilan secara hukum. Pastikan Anda didampingi advokat profesional agar proses hukum berjalan lancar. Perlu diingat, sejak 2 Januari 2026 dasar hukumnya adalah Pasal 433 dan Pasal 434 UU 1/2023, bukan lagi Pasal 310 KUHP atau Pasal 27A UU ITE.</p>

<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-a89b3969 wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-outline uagb-block-aa502741"><a class="wp-block-button__link uagb-button wp-element-button" href="https://wa.me/6281909222026?text=Saya%20ingin%20tahu%20tentang%20TSLAW">KONSULTASI GRATIS</a></div>
</div>

<h2 class="wp-block-heading">Pertanyaan yang Sering Diajukan</h2>
"""

for q, a in FAQ:
    CONTENT += f"<h3>{q}</h3>\n<p>{a}</p>\n\n"

CONTENT += "<script type=\"application/ld+json\">" + json.dumps(SKEMA, ensure_ascii=False) + "</script>\n\n"

CONTENT += """<h2 class="wp-block-heading">Baca juga</h2>
<p>Kalau topiknya berhubungan dengan kebutuhan Anda, artikel berikut membahasnya lebih dalam: <a href="https://www.tslaw.id/panduan-praktis-perlindungan-data-pribadi-untuk-umkm-langkah-mudah-dan-murah/">Panduan Praktis Perlindungan Data Pribadi untuk UMKM: Langkah Mudah dan Murah</a>, <a href="https://www.tslaw.id/6-langkah-mengurus-sengketa-tanah-secara-hukum-di-indonesia/">6 Langkah Cara Mengurus Sengketa Tanah Secara Hukum</a>, <a href="https://www.tslaw.id/6-langkah-mengurus-warisan-tanpa-sengketa-keluarga/">6 Langkah Mengurus Warisan Tanpa Sengketa Keluarga</a>.</p>"""

# kalimat lama yang sengaja diganti (alasan: fakta hukum usang)
HILANG_DISENGAJA = [
    "delik ini diatur dalam Pasal 310 KUHP dan diperkuat oleh UU ITE untuk kasus di ranah digital",
    "Tito Suprianto Law Firm (TSLaw) sebagai kantor advokat di Surabaya siap mendampingi Anda. Mulai",
    "Panduan Praktis Perlindungan Data Pribadi untuk UMKM: Langka",
    "Di era digital, bentuk yang paling umum",
]


def kata(html):
    t = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", html, flags=re.S | re.I)
    t = re.sub(r"<[^>]+>", " ", t)
    return len(re.findall(r"[A-Za-z0-9][A-Za-z0-9'\-]*", t))


def blok(html):
    h = re.sub(r"<p([^>]*)><p", r"<p\1>", html)          # rapikan <p><p>
    h = re.sub(r"</p></p>", "</p>", h)
    out = []
    for m in re.finditer(r"<(p|li|h2|h3)[^>]*>(.*?)</\1>", h, re.S):
        tx = re.sub(r"<[^>]+>", " ", ihtml.unescape(m.group(2)))
        tx = re.sub(r"\s+", " ", tx).strip()
        if len(tx) > 55:
            out.append(tx)
    return out


def rest(path, method="GET", data=None):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    body = None
    if data is not None:
        body = json.dumps(data).encode()
        h["Content-Type"] = "application/json"
    r = urllib.request.Request(f"https://{DOM}{path}", data=body, headers=h, method=method)
    with urllib.request.urlopen(r, timeout=180) as x:
        return x.status, json.loads(x.read())


def main():
    ap = argparse.ArgumentParser()
    ap.add_argument("--apply", action="store_true")
    a = ap.parse_args()

    lama = json.load(open(f"{WS}/tslaw_pemulihan/perbaikan_20261025/post_2928_sebelum.json"))
    isi_lama = lama["content"]["raw"]
    print(f"#2928 sebelum: {kata(isi_lama)} kata, {len(blok(isi_lama))} blok teks")
    print(f"#2928 sesudah: {kata(CONTENT)} kata, {len(blok(CONTENT))} blok teks")

    # --- pemeriksaan
    assert kata(CONTENT) >= 1050, "terlalu pendek"
    assert "\u2014" not in CONTENT, "ada em dash"
    assert not re.search(r"[\u201c\u201d\u2018\u2019]", CONTENT), "ada kutip melengkung"
    assert not re.search(r"[\u4e00-\u9fff]", CONTENT), "ada CJK"
    assert "<p><p>" not in CONTENT and "</p></p>" not in CONTENT
    assert CONTENT.count("FAQPage") == 1
    for q, _ in FAQ:
        assert q in CONTENT, f"pertanyaan tidak tampil: {q}"
    skema = re.search(r"<script type=\"application/ld\+json\">(.*?)</script>", CONTENT, re.S).group(1)
    sd = json.loads(skema)
    assert len(sd["mainEntity"]) == len(FAQ) == 7
    for item in sd["mainEntity"]:
        assert item["name"] in CONTENT
        assert item["acceptedAnswer"]["text"] in CONTENT
    assert "wa.me/6281909222026" in CONTENT
    assert "law-firm-surabaya" in CONTENT
    assert "Pasal 433" in CONTENT and "Pasal 434" in CONTENT
    assert "Pasal 310 KUHP" in CONTENT  # masih disebut sebagai rujukan usang
    assert len(re.findall(r"Pasal 27A", CONTENT)) >= 2

    # --- teks lama tidak boleh hilang
    nb = " ".join(blok(CONTENT))
    hilang = []
    for b in blok(isi_lama):
        if b in nb:
            continue
        if any(b.startswith(p) or p in b for p in HILANG_DISENGAJA):
            continue
        hilang.append(b)
    print(f"\nblok lama tidak ditemukan: {len(hilang)}")
    for h in hilang:
        print("  -", h[:150])
    assert not hilang, "ada blok lama hilang tanpa alasan"

    # --- tautan internal + pilar
    links = sorted(set(re.findall(r'href="(https://(?:www\.)?tslaw\.id[^"]+)"', CONTENT)))
    print(f"\ntautan internal: {len(links)}")
    buruk = []
    for u in links:
        try:
            with urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=60) as x:
                st = x.status
        except urllib.error.HTTPError as e:
            st = e.code
        except Exception:
            st = 0
        if st != 200:
            buruk.append((st, u))
    print("  tautan tidak 200:", buruk)
    if buruk:
        print("  PERINGATAN: perbaiki tautan dulu")

    if not a.apply:
        print("\nDRY RUN. Tidak ada yang ditulis.")
        open(f"{WS}/tslaw_pemulihan/perbaikan_20261025/konten_baru_2928.html", "w").write(CONTENT)
        print("calon isi disimpan di tslaw_pemulihan/perbaikan_20261025/konten_baru_2928.html")
        return

    st, res = rest(f"/wp-json/wp/v2/posts/{PID}", "POST", {"content": CONTENT})
    print(f"\nPOST content -> {st}")
    st2, cek = rest(f"/wp-json/wp/v2/posts/{PID}?context=edit")
    sama = cek["content"]["raw"] == CONTENT
    print(f"baca ulang: {st2} | content.raw identik: {sama} | kata: {kata(cek['content']['raw'])}")
    print("judul:", cek["title"]["raw"])
    print("slug:", cek["slug"])
    m = cek.get("meta") or {}
    print("fokus:", m.get("_yoast_wpseo_focuskw"))
    print("metadesc:", m.get("_yoast_wpseo_metadesc"))
    assert sama, "isi hasil baca ulang tidak identik"


if __name__ == "__main__":
    main()
