#!/usr/bin/env python3
"""Gabung usulan Threads + Facebook + LinkedIn jadi satu dokumen 3 platform."""
import json, os

TH = json.load(open("usulan_caption_20260930.json"))
FB = json.load(open("usulan_caption_fb_li_20260930.json"))

L = []
A = L.append

A("# Usulan Konten Viral 3 Platform (Threads, Facebook, LinkedIn), 30 September 2026\n")
A("Semua angka di dokumen ini hasil tarikan hari ini: API Repliz (jadwal, komentar, akun), profil publik "
  "Threads hari ini, halaman LinkedIn publik, Google Trends Indonesia, tren X Indonesia, dan Google News "
  "3 hari terakhir. 24 caption (12 Threads, 6 Facebook, 6 LinkedIn) semuanya sudah lolos pemeriksaan dan "
  "link-nya sudah diverifikasi dua arah.\n")

A("## Reach tiga platform\n")
A("**Threads** (follower dibaca dari profil publik):")
A("- @ukyhandoko 227 · @studiosoft.id 108 · @sotosemarang.pakotto 67 (STOP) · @leitsurabaya 12 (HOLD) · "
  "@das_indonesia 8 · @tslaw_firm 8 · @theskincode_clinic 7 · @theeverybe 4 (jadwal error, berhenti 21 Sep)")
A("")
A("**LinkedIn** (follower halaman publik):")
A("- StudioSoft @kreasi-studiosoft 68 · The Skin Code Clinic 16 · LEIT 7 · TS Law 3 · DMark 2. "
  "Profil pribadi Uky tidak menampilkan angka follower ke publik.")
A("")
A("**Facebook**: angka follower halaman tidak bisa dibaca tanpa login, jadi yang dipakai ukuran aktivitas:")
A("- StudioSoft: 38 tayang, 43 pending ke depan (sampai 8 Des), 24 error")
A("- Tito Supriyanto Law Firm: 10 tayang, 16 pending (sampai 22 Okt)")
A("- The Skin Code Clinic: 8 tayang, 13 pending (sampai 10 Okt)")
A("- EveryBe: 25 tayang tapi 21 error dan tidak ada jadwal baru (berhenti 13 Sep)")
A("- DAS Bengkel: 29 tayang, tanpa jadwal baru (stop 14 Sep) · Warung Pak Otto: berhenti 23 Sep · "
  "DMark: 1 post (stop) · LEIT: 51 jadwal diparkir di 2099")
A("- Nol jadwal, siap diisi: RSIA Kendangsari, Surabaya Skin Centre, yasmanatura, Apotek Arek Lancor")
A("")
A("Temuan yang perlu Bos tahu: komentar yang terekam Repliz untuk Facebook dan LinkedIn nol, "
  "sementara Instagram dan Threads ada. Untuk dua platform itu, ukuran keberhasilan harus dari "
  "jangkauan dan klik link, bukan komentar.\n")

A("## Aturan yang dipegang per platform\n")
A("- **Threads**: maksimum 500 karakter (caption di dokumen ini 384 sampai 478), link wajib, ajakan komentar.")
A("- **Facebook**: `replies` WAJIB kosong. Kalau diisi, jadwal gagal dengan error postId. Itu penyebab "
  "24 error di Facebook StudioSoft. Panjangnya lebih lega, 654 sampai 736 karakter.")
A("- **LinkedIn**: `replies` juga WAJIB kosong (penyebab 22 error di LinkedIn pribadi Uky), format teks saja, "
  "nada profesional tanpa emoji. Caption 610 sampai 769 karakter.")
A("- Semua platform: hashtag huruf kecil, tanpa mention akun, bebas karakter China.\n")

A("## Sudut dibedakan per akun dan per platform\n")
A("| Akun | Sudut |")
A("|---|---|")
A("| uky Threads | pemilik usaha, pengalaman sendiri |")
A("| StudioSoft Threads | teknis, cara kejadiannya |")
A("| TS Law Threads | prosedur hukum, urutan langkah |")
A("| TSC Threads | klinis, koreksi miskonsepsi |")
A("| DAS Threads | diagnosa, urutan periksa dari yang termurah |")
A("| EveryBe Threads | kebiasaan harian |")
A("| StudioSoft Facebook | praktis untuk pemilik bisnis, angka nyata |")
A("| TS Law Facebook | bahasa paling awam, audiens luas |")
A("| TSC Facebook | edukasi pasien, ramah |")
A("| StudioSoft LinkedIn | keputusan dan proses kerja (B2B) |")
A("| Uky LinkedIn | pengalaman pemilik agensi |")
A("| TSC LinkedIn | standar medis dan kepercayaan |")

A("\n## 1. Threads (12 caption)\n")
for it in TH:
    A(f"### @{it['akun']} / {it['slot']}")
    A(f"- Panjang: {it['panjang']} char (batas aman 480)")
    A(f"- Link: {it['link']}\n")
    A("```\n" + it["caption"] + "\n```\n")

A("## 2. Facebook (6 caption)\n")
for it in FB:
    if it["platform"] != "facebook":
        continue
    A(f"### {it['akun']}")
    A(f"- Sudut: {it['sudut']}")
    A(f"- Pemicu: {it['pemicu']}")
    A(f"- Panjang: {len(it['caption'])} char")
    A(f"- Link: {it['link']}\n")
    A("```\n" + it["caption"] + "\n```\n")

A("## 3. LinkedIn (6 caption)\n")
for it in FB:
    if it["platform"] != "linkedin":
        continue
    A(f"### {it['akun']}")
    A(f"- Sudut: {it['sudut']}")
    A(f"- Pemicu: {it['pemicu']}")
    A(f"- Panjang: {len(it['caption'])} char")
    A(f"- Link: {it['link']}\n")
    A("```\n" + it["caption"] + "\n```\n")

A("## Status akun yang belum bisa jalan\n")
A("- **Threads @sotosemarang.pakotto** (67 follower, paling ramai): STOP sejak 24 Sep.")
A("- **Threads @leitsurabaya**: HOLD, kontrak habis 30 Sep.")
A("- **Threads, Facebook, dan LinkedIn EveryBe**: jadwal error dan tidak ada antrean baru.")
A("- **Facebook DAS Bengkel, Warung Pak Otto, DMark**: stop sejak September, menunggu keputusan Bos.")
A("- **LinkedIn TS Law**: stop sejak 10 Sep sesuai instruksi.")
A("- **LinkedIn pribadi Uky** (22 error, 0 antrean, 19 artikel pernah dipakai): akun paling siap dihidupkan lagi. "
  "Dua caption di atas bisa langsung mengisi.")
A("- **Facebook RSIA, Surabaya Skin Centre, yasmanatura, Apotek Arek Lancor**: nol jadwal sejak awal. "
  "Kalau Bos mau, empat halaman ini bisa mulai diisi, tapi perlu diputuskan dulu artikel dari domain mana "
  "yang dipakai sebagai link.\n")

A("## Langkah lanjut\n")
A("1. Bos pilih caption mana yang lanjut. Saya isi slot kosong, aturan 1 post per hari per akun.")
A("2. Preview dulu sebelum create, sesuai kebiasaan kita.")
A("3. Untuk Facebook dan LinkedIn, saya pastikan `replies` kosong di setiap payload.")
A("4. Khusus @ukyhandoko Threads dan @studiosoft.id Threads yang memakai artikel sama, jadwalkan di hari berbeda.")
A("5. Kalau Bos setuju, saya sekalian audit 24 error Facebook StudioSoft dan 26 error LinkedIn StudioSoft, "
  "karena polanya sama seperti kasus sebelumnya.")

os.makedirs("drafts", exist_ok=True)
p = "drafts/usulan_konten_3platform_20260930.md"
open(p, "w").write("\n".join(L))
print("Dokumen:", p, os.path.getsize(p), "byte")
