#!/usr/bin/env python3
"""Rapikan skill wordpress-seo-content-ops: pindahkan bagian 'Pitfalls learned' ke references/pitfalls.md
supaya SKILL.md kembali di bawah batas ukuran, lalu tambahkan pelajaran baru."""
import os, re

SKILL = "/home/mantapman/.hermes/skills/web/wordpress-seo-content-ops/SKILL.md"
REFDIR = os.path.dirname(SKILL) + "/references"
os.makedirs(REFDIR, exist_ok=True)
REF = REFDIR + "/pitfalls.md"

isi = open(SKILL).read()
print(f"SKILL.md sebelum: {len(isi)} karakter")

i = isi.find("## Pitfalls learned")
if i < 0:
    print("bagian Pitfalls tidak ditemukan")
    raise SystemExit(1)
# ambil sampai heading berikutnya (kalau ada) atau sampai akhir
m = re.search(r"\n#", isi[i + 5:])
akhir = i + 5 + m.start() if m else len(isi)
bagian = isi[i:akhir]
print(f"bagian Pitfalls: {len(bagian)} karakter (baris {isi[:i].count(chr(10))+1} dst)")

pelajaran_baru = """## Pitfalls learned (arsip lengkap)

Catatan: bagian ini dipindahkan ke berkas ini supaya SKILL.md tetap ringkas. Isinya sama, ditambah
temuan terbaru di bagian paling atas.

- **`wp.editPost` dengan `custom_fields` MENAMBAH baris meta baru, bukan memperbarui — jadi nilainya tidak pernah berubah.**
  Beranda TSLaw (25 Sep 2026) berakhir dengan LIMA baris `_yoast_wpseo_focuskw`; WordPress membaca baris pertama
  (`meta_id` terkecil), sehingga setiap penulisan yang "berhasil" membalas `<boolean>1</boolean>` sementara nilai
  efektifnya tetap lama. Perbaikan: baca `wp.getPost`, catat `id` tiap baris untuk kunci itu, lalu kirim
  `{"id": <meta_id>, "key": ..., "value": ...}` — perbarui SEMUA baris kembar. Baris kembar tidak bisa dihapus
  lewat XML-RPC/REST; hanya bisa dibersihkan dari hosting (phpMyAdmin / `wp post meta delete --all`), dan
  sisanya tidak mengganggu tampilan.
- **GA4 tidak menyimpan kata kunci pencarian organik.** Saat owner minta "sesuaikan keyphrase dengan GA4",
  pakai GA4 untuk halaman pendaratan/kanal/kota/perangkat, lalu GSC untuk query-nya. (Dua klien memakai properti
  terpisah "Keyword Hero" justru karena keterbatasan ini.) Contoh TSLaw: GA4 organik = 21 dari 53 sesi mendarat
  di beranda, kota teratas Jakarta 13 / Surabaya 6 — sementara GSC menunjukkan `law firm surabaya` 36 impresi
  (posisi 27,3) versus keluarga `firma hukum surabaya` hanya 6 impresi. Keyphrase beranda diganti ke
  `law firm surabaya` karena itu satu-satunya frasa lokal yang punya permintaan terbukti.
- **Query merek bisa dapat posisi halaman 1 dengan NOL klik.** TSLaw: `pengacara ts` 48 impresi posisi 5,8 dan
  `ts law firm` 36 impresi posisi 6,5, dua-duanya 0 klik dalam 90 hari. Sebelum menyalahkan cuplikan, ingat
  kemungkinan lain: pencari memakai inisial/nama lain. Uji dengan menaruh nama merek di depan judul.

"""

sisa = isi[:i] + ("## Pitfalls learned\n\nSeluruh catatan jebakan (30+ butir, termasuk insiden TSLaw yang menghapus konten\n"
                  "halaman karena XML-RPC tanpa escaping) ada di `references/pitfalls.md`. **Baca berkas itu sebelum\n"
                  "menulis apa pun ke situs klien** — aturan utamanya: simpan salinan konten asli dulu, tulis konten\n"
                  "lewat REST (JSON), dan verifikasi dengan membaca ulang dari halaman live.\n") + isi[akhir:]

open(REF, "w").write(pelajaran_baru + bagian.split("\n", 1)[1].lstrip("\n"))
open(SKILL, "w").write(sisa)

print(f"SKILL.md sesudah: {len(sisa)} karakter")
print(f"references/pitfalls.md: {len(open(REF).read())} karakter")
