# 2026-09-23 (WIB)

## StudioSoft — judul, meta, dan H1 beranda diganti (09:15 WIB)

Kontekstual dari analisis SEO 18 Sep: beranda memegang 3 kata kunci lokal yang sudah di posisi 6–10
(`digital marketing agency surabaya`, `digital agency surabaya`, `digital marketing surabaya`) tapi CTR-nya
cuma 1,2–1,4%. Temuan penentu: **H1 beranda tidak memuat kata kunci sama sekali** — "Solusi Digital Terbaik
untuk Bisnis Anda". Google kadang memakai H1 sebagai judul SERP, jadi itu penjelasan paling masuk akal.

Yang Bos pasang (gw usulkan, Bos input manual karena ini halaman):

```
Judul SEO : Digital Marketing Agency Surabaya | Hasil Terukur & Laporan        (59 char)
Meta      : Digital marketing agency surabaya yang fokus ke hasil: SEO, iklan, website,
            dan sosmed. Lihat portofolio klien kami dan minta estimasi gratis hari ini. (151 char)
H1        : Digital Marketing Agency Surabaya: SEO, Website & Sosmed
```

Verifikasi live 09:15 WIB: judul ✅, meta ✅, og:title/og:description ikut berubah ✅, H1 ✅,
`cf-cache-status: MISS` (pengunjung dapat versi baru) ✅. Slug tidak diubah.

**Baseline 28 hari (25 Agu – 21 Sep, sebelum perubahan)** — dipakai untuk pembanding:

| Query | Impresi | Klik | CTR | Posisi |
|---|---|---|---|---|
| digital marketing agency surabaya | 53 | 0 | 0% | 16,8 |
| digital marketing surabaya | 51 | 1 | 1,96% | 27,6 |
| digital agency surabaya | 70 | 0 | 0% | 27,1 |

**Pemantau dampak:** cron `70db649856a4` · `ss-dampak-homepage-ctr` · tiap Senin 09:00 WIB, 6 kali
(≈sampai awal Nov) · no-agent (diam kalau data belum cukup) · deliver telegram. Script:
`scripts/ss_home_ctr_report.py` (baseline tersimpan di dalam script).

Catatan: CTR biasanya bergerak 2–4 minggu setelah Google menampilkan judul baru.

## StudioSoft — draft dijadwalkan tayang 08:00 WIB (10:30 WIB)

Permintaan Bos: semua draft artikel ditayangkan tiap hari jam 08:00, dengan catatan standar SEO tetap dijaga.

**Temuan awal: 26 draft TIDAK memenuhi standar** — 76–133 kata per artikel, meta description 0 dari 26,
focus keyphrase 0, featured image 0, FAQ 0, link internal 0. Kalau ditayangkan apa adanya = 26 halaman tipis
(pola yang bikin DAS ambruk). 3 di antaranya duplikat persis (#7548/7549/7550 = salinan #7528/7529/7530)
→ sudah dipindah ke trash.

Bos memilih **opsi A**: lengkapi dulu ke standar, baru dijadwalkan.

**Batch 1 selesai (5 artikel, terjadwal 24–28 Sep 08:00 WIB):**

| ID | Judul | Kata | Meta | FAQ | Gambar | Tayang |
|---|---|---|---|---|---|---|
| 7528 | AI dan Pekerjaan Digital Marketer | 1.252 | 157 | 5 Q + schema | id 8966 | 24 Sep |
| 7529 | Apa Itu GEO (Generative Engine Optimization) | 978 | 146 | 5 Q + schema | id 8968 | 25 Sep |
| 7530 | Cara Bikin Prompt AI yang Bagus | 902 | 147 | 5 Q + schema | id 8970 | 26 Sep |
| 7531 | Bikin Konten Pakai AI: Boleh, Asal Tahu Batasnya | 858 | 137 | 5 Q + schema | id 8972 | 27 Sep |
| 7532 | Tools AI untuk Bisnis | 821 | 148 | 5 Q + schema | id 8974 | 28 Sep |

Semua: kategori AI (1061), featured image dari Pexels + alt, focus keyphrase, meta description dengan
keyphrase di awal, FAQPage schema, link internal, dan tombol WhatsApp di ekor.

**Jujur soal panjang:** standar kita ~1.300 kata. Baru #7528 yang mendekati (1.252); empat lainnya
821–978 kata. Karena statusnya `future`, keempatnya MASIH BISA ditambah sebelum tanggal tayangnya —
rencananya gw tambah bertahap. Publikasi otomatis oleh WordPress, tidak perlu cron.

**Sisa: 18 draft** menunggu digarap (batch berikutnya).

Script: `ss_batch1_draft.py` (+ `ss_batch1_tambahan.py`, `ss_batch1_tambahan2.py` = materi tambahan),
`ss_lihat_draft.py`, `ss_audit_draft.py`, `ss_bersih_duplikat_draft.py`.

### Penyesuaian: kebijakan panjang artikel + perbaikan batch 1 (11:30 WIB)

Bos tanya apakah artikel boleh di bawah 1.000 kata. Gw cek data GSC StudioSoft sendiri (307 artikel):
<600 kata → rata-rata cuma 1,9 impresi & hanya 39% dapat impresi; 600–999 → 29 impresi, 66%; 1.000–1.499 →
62,7 impresi & CTR terbaik; 1.500+ → 37,7 impresi. Dari 19 artikel berimpresi ≥100, rata-rata 1.073 kata,
median 1.011, dan 47% di antaranya di bawah 1.000 kata (yang terbaik 694 kata – 545 impresi, 8 klik).

**Kebijakan yang disepakati (Bos minta disimpan):** <600 kata = tipis (hindari); 800–1.000 cukup untuk artikel
pertanyaan sempit asalkan tuntas & spesifik; 1.250+ untuk kata kunci komersial; JANGAN padding. Disimpan di memori
+ skill `wordpress-seo-content-ops` (dengan tabel datanya).

Perbaikan yang dikerjakan setelahnya:
- **Tag diganti** — kelimanya masih bertag "Instagram, Threads" (bukti draft ini asalnya naskah medsos), sekarang
  jadi tag relevan: AI/GEO/Prompt AI/Tools AI/Content Marketing/SEO/Digital Marketing.
- **Link internal ditambah** jadi 2–3 per artikel (sebelumnya 1 di tiga artikel).
- **#7531 dan #7532 ditambah isi** (bagian baru yang berguna, bukan pengisi): 7531 875→1.055 kata,
  7532 821→973 kata.

Kondisi akhir batch 1 (semua ✅): kata 924–1.252 | meta 137–157 dgn keyphrase di awal | focus keyphrase |
FAQ 5 Q + schema | featured image + alt | kategori AI | 3 tag | 2–3 link internal | tombol WA.
Tayang otomatis 24–28 Sep 08:00 WIB. Sisa **18 draft** untuk batch berikutnya.

## Yasmanatura — GSC/GA4 + konsolidasi klaster maklon herbal (23 Sep, 16:00 WIB)

Bos minta cek GSC & GA4 Yasma, lalu menegaskan positioning: **Yasma = maklon herbal Sidoarjo**, bukan
kosmetik/skincare (dibuang dari rencana).

**Data (90 hari):** 1.154 klik | 15.340 impresi | CTR 7,52% | pos 9,1. 28d terakhir 335 klik/2.990 impresi
(CTR naik 6,31% → 11,20%, turunnya impresi karena dua pekan lonjakan di periode sebelumnya).
GA4 28d: 266 sesi, 187 user, engagement 59,4%, Organic Search 198 sesi.
**Brand 796 klik (96%)** vs non-brand 262 query hanya 32 klik (CTR 1,07%, pos 33,3).

**Masalah yang ditemukan:** (1) query terbesar `jasa maklon herbal` 278 impresi terpecah di banyak halaman pos 20-39;
(2) **#2729 & #2741 punya focus keyphrase IDENTIK** ("jasa maklon minuman herbal"), dua-duanya tipis (564 & 322 kata);
(3) `/perusahaan-maklon-sidoarjo/` (7.254 impresi, CTR 1,6%) dan `#2793` (3.551 impresi, CTR 0,3%) menyedot
pencarian merek tanpa klik, sementara beranda CTR 9,2%.

**Yang dikerjakan (HANYA post — arahan Bos, page tidak disentuh sama sekali):**

| Aksi | Hasil |
|---|---|
| #2729 jadi halaman payung | judul "Jasa Maklon Herbal Sidoarjo: …", fk `jasa maklon herbal`, meta 155, **1.129 kata**, FAQ 5Q + schema, tombol WA |
| #2741 (duplikat fk) | **→ TRASH** (isinya diringkas ke payung) |
| Link internal ke payung | **13 artikel** (klaster maklon #2899, #3424, #3279, #3146, #3149, #3152, #2864, #2868, #2907, #3129, #3440, #3246 + #2674 + #2793) |
| #2793 (CTR 0,3%) | fk & meta diarahkan ke topiknya: fk `jasa produksi minuman serbuk`, meta 149 dgn keyphrase di awal |
| Tautan rusak di payung | diperbaiki (tautan teh herbal menuju 404 → URL yang benar, sekarang 200) |

Catatan: nomor WA Yasma dari situs = **6281939119209** (dipakai di tombol). Page `/hubungi/`, `/produk/`, `/karir/`
TIDAK disentuh (halaman milik Bos). ⚠️ Butuh Bos: purge Cloudflare.

Script: `ys_cek_gsc_ga4.py`, `ys_cek_nonbrand.py`, `ys_peta_maklon.py`, `ys_verif_tipe.py`, `ys_payung_maklon.py`,
`ys_konten_link.py`, `ys_link_klaster.py`, `ys_fix_2793.py`.

## StudioSoft — konsolidasi klaster klinik/RS (23 Jul) — 23 Sep, 14:00 WIB

Arahan Bos: artikel nol impresi (bukan yang pendek). Hasil audit: 307 artikel publish, hanya 213 yang punya
impresi → **106 artikel nol impresi** (16 di antaranya umur <30 hari, wajar). Sampel URL Inspection 18 artikel:
15 terindeks tapi tidak pernah muncul, 2 crawled-not-indexed, 1 discovered-not-indexed. Pola: terbit **berbarengan
dalam satu hari** (23 Jul: 10 artikel; 12 Agu: 6; 30 Jun: 6; 17 Jun: 5) → kanibalisasi.

**Klaster 23 Jul (10 artikel klinik/RS) dikonsolidasi — SELESAI:**

| Peran | Post | Kata | FAQ | Isi |
|---|---|---|---|---|
| Pilar | #5970 | 1.391 | ✅ 5 Q | digital marketing RS & klinik: etika, konten, website, SEO lokal, GBP, sosmed, iklan, evaluasi, kalender |
| Pendukung | #5974 | 1.387 | ✅ 5 Q | SEO untuk klinik & RS (+ link ke pilar) |
| Pendukung | #3535 | 1.398 | ✅ 5 Q | 9 contoh konten edukatif RS (sudah ada, ditambah link ke pilar) |
| Pendukung | #5977 | 1.380 | ✅ 5 Q | Google Business Profile untuk klinik (+ link ke pilar) |

**Masuk TRASH (7 artikel, sesuai arahan Bos — bukan draft):** #5971, #5972, #5973, #5975, #5976, #5978, #5979.
Semua isinya sudah diringkas ke pilar sebelum dipindahkan.

Script: `ss_cari_nol_impresi.py`, `ss_cek_index_nol.py`, `ss_ambil_klaster_klinik.py`, `ss_konsolidasi_klinik.py`
(+ `ss_klinik_tambahan.py`), `ss_klinik_final.py`, `ss_faq_klinik.py`. Data: `ss_nol_impresi.json`,
`ss_klaster_klinik.json`.

- ⚠️ Butuh Bos: **purge Cloudflare** (4 artikel berubah isi + 7 URL masuk trash).
- Sisa klaster nol impresi berikutnya: **12 Agu (6 artikel AI)**, 30 Jun (6), 17 Jun (5).
- Aturan baru dari Bos: artikel <1.000 kata tidak perlu digarap bila masih dapat impresi; prioritas = artikel nol impresi.

## StudioSoft — eksekusi no 3 (FAQ) & no 4 (link internal) — 23 Sep, 12:30 WIB

Kondisi awal: 307 artikel publish. Audit kesehatan: meta/keyphrase/gambar 0 masalah, tapi **214 artikel <1.000 kata**,
**267 tanpa FAQ schema**, **65 tanpa link internal**. Bos minta kerjakan no 3 & no 4 lebih dulu.

**No 4 — link internal: SELESAI.** `ss_link_internal_batch.py` memilih target dari kemiripan topik (overlap token
judul+slug, minimal 2 kata), 2–3 tautan per artikel, disisipkan sebagai blok "Baca juga" sebelum bagian
FAQ/Kesimpulan. Hasil: **64 artikel berhasil, 0 gagal**. (1 artikel tidak punya tetangga topik yang cukup mirip.)

**No 3 — FAQ + schema, batch 1: SELESAI.** `ss_pasang_faq.py` (pemasang) + `ss_faq_batch1.py` (isi FAQ).
10 artikel dengan impresi tertinggi dari 59 target (>=1.000 kata, belum ber-FAQ): #3535, #4026, #4649, #2965,
#3888, #4064, #3960, #5160, #4016, #4577. Masing-masing 5 Q&A spesifik (50 pertanyaan total) + schema FAQPage.
Terverifikasi live: `FAQPage=1`, 5 `<h3>`, dan blok "Baca juga" muncul (contoh #3535 dan #4026).

- ⚠️ Butuh Bos: **purge Cloudflare** — isi 74 artikel berubah (64 link + 10 FAQ).
- Sisa no 3: **49 artikel** (37 di antaranya punya impresi) → batch berikutnya.
- ⚠️ Catatan origin: saat mulai, REST API studioSsoft timeout (homepage 200 dari cache CF, kontrol google 200) →
  pola origin stall. Dipasang pengawas `ss_watcher_link.sh` (poll 60s, cap 75 menit) yang menjalankan pass link
  otomatis begitu API hidup; dipakai sampai API pulih, lalu dimatikan.

## FB StudioSoft — 2 jadwal/hari: artikel 08:00 + berita AI viral 15:00 (11:10 WIB)

Permintaan Bos: "FB studiosoft tiap hari jam 8.00 share artikel website, sore jam 15.00 berita AI terbaru
yang viral (dari Google Trends atau X)".

**Yang dibangun:** `fb_studiosoft_harian.py` (workspace) + `scripts/fb_studiosoft_harian.sh`.
Mode `preview` (aman, tidak create) dan `run`. Cron `a1a3f63523e2` `fb-studiosoft-harian`, `0 23 * * *` UTC
= **06:00 WIB tiap hari**, no-agent, deliver ke chat ini.

- **08:00 WIB — artikel:** WP REST studiosoft.id (`per_page=50`, ambil `excerpt`), pilih artikel terbaru yang
  BELUM pernah dipakai di jadwal mana pun (set URL dari SEMUA jadwal Repliz, 381 URL terpakai saat ini).
  Ringkasan dipotong di batas kalimat. Kalau stok baru habis → putar ulang artikel terlama.
  Slot boleh geser +1 hari (maks), state anti-dobel.
- **15:00 WIB — berita AI:** kandidat dari 8 RSS (Detik Inet, CNBC Tech, Antara Tekno, TechCrunch AI,
  The Verge AI, MIT Tech Review, Ars Technica, Engadget), filter AI pakai word-boundary (`\bai\b`, bukan
  substring — penting: "pantai/pandai" jangan lolos), umur ≤60 jam. Skor = kebaruan + sebaran media
  (Google News ID: berapa media angkat storyline sama) + tren (Google Trends ID/US + **tren X lewat
  trends24.in/indonesia**). Frasa tren dicocokkan utuh, bukan potongan kata.
- **Kredensial X tidak ada di host ini** (tidak ada `xurl`, tidak ada API key) → sinyal "dari X" diambil
  dari mirror publik trends24.in. Kalau Bos mau baca X langsung, perlu API key.
- Aturan tetap: `replies=[]` (FB), hashtag huruf kecil, tanpa mention antar akun, wajib ada link + ajakan diskusi.

**Jadwal pertama yang sudah tayang/terjadwal:**
- 23 Sep 15:00 WIB — "OpenAI Rilis GPT-6 Sol dan Luna, Jago Coding Tapi Harga Lebih Murah" (Detik Inet) · id `6ab350982cf2c1b59c57990e`
- 24 Sep 08:00 WIB — "Jasa Branding Surabaya" (studiosoft.id) · id `6ab35098280158540088423f`

⚠️ Catatan untuk Bos: FB SS masih punya jadwal kartu Selasa+Jumat 19:30 WIB (sampai 8 Des).
Bos memutuskan (11:20 WIB): **"selasa & jumat ga usah pasang"** → pipeline ini TIDAK mengisi apa pun di
hari Selasa & Jumat (`HARI_SKIP = {1, 4}` di `slot_berikut()`), kartu 19:30 yang sudah ada dibiarkan.
Jadi: Sen/Rab/Kam/Sab/Min = 2 post (08:00 + 15:00), Sel & Jum = 1 post (kartu saja).
Verifikasi logika slot: Selasa 06:00 → Rabu 08:00/15:00; Jumat 06:00 → Sabtu 08:00/15:00 ✓.
Sisa kartu Rabu 23 Sep 19:30 (jadwal lama) tetap tayang → hari itu saja 3 post.

⚠️ `r.jina.ai` untuk studiosoft.id sekarang sering balas pendek/gagal (6 KB) — jalur utama sudah dibalik ke
**curl `--http1.1` langsung** (berhasil 180s timeout), jina jadi cadangan.

### Tambahan 11:35 WIB — berita AI juga ke Threads + LinkedIn

Perintah Bos: "kamu juga bisa pasang artikel AI viral ini ke threads, dan linkedin".

Script diperluas: berita AI yang sama tayang **15:00 WIB di 3 akun brand StudioSoft** — Facebook
`6a334952c5ff4ce3a3225941`, Threads `6a335b9ec5ff4ce3a3225c2a`, LinkedIn `6a334c49c5ff4ce3a32259c9`.
Satu kali pilih berita, tiga varian caption (Threads dipangkas otomatis ≤500 char, LinkedIn gaya profesional).
Artikel website 08:00 tetap Facebook saja.

Sudah dibuat & diverifikasi via API (pending, text, `replies=[]`):
- Threads SS `6ab3560e2cf2c1b59c58a944` — 429 char
- LinkedIn SS `6ab3560e2801585400899de4` — 676 char

Slot 15:00 dipilih karena di luar grid 7-slot (05/08/11/14/17/20/23) → kosong ≥21 hari ke depan di ketiga akun.
State per platform: `hari[tgl].ai` / `.ai_threads` / `.ai_linkedin`.
Kalau Bos maksudnya akun pribadinya (@ukyhandoko / LinkedIn Uky), cukup ganti 2 konstanta akun di script —
tinggal bilang.

## IG TS Law — carousel "Mitos Perjanjian" tayang 24 Sep (13:35 WIB)

Bos kirim zip berisi 6 PNG 1080×1350 (tanpa tanggal, tanpa caption). Isinya carousel "Mitos atau Fakta":
mitos perjanjian lisan tidak sah, faktanya kesepakatan lisan bisa mengikat (4 unsur Pasal 1320 KUH Perdata),
mitos chat/WhatsApp tidak bisa jadi bukti, slide penutup, dan CTA tslaw.id.

Tanpa tanggal eksplisit, aturannya default: **carousel = 09:00 WIB**, ambil slot bebas terdekat. Peta slot
saat itu: IG TS Law sudah terisi seri "Mitos atau Fakta" 25 Sep 11:00, jadi carousel masuk **24 Sep 09:00 WIB**.
Ikut aturan 18 Sep (semua konten IG TSLaw ke FB + Threads): Threads 24 Sep 09:00, FB 24 Sep 19:30.

Terpasang & terverifikasi via API (semua `pending`, 6 slide urut `_01.._06`, hashtag lowercase, 0 mention,
`replies=[]`):

- IG `6ab36f492801585400912441` — 995 char
- Threads `6ab36f492cf2c1b59c5ec0b9` — 494 char (versi ringkas, batas 500)
- FB `6ab36f4a2cf2c1b59c5ec0bf` — 995 char (caption sama dengan IG)

Media: `openclaw-img/tslaw_mitos_perjanjian_01..06.jpg` (JPEG q90, semua HTTP 200 di funnel).
Script: `tslaw_mitos_perjanjian_schedule.py` · bukti urutan: `bukti_carousel_tslaw_mitos_perjanjian.py`.

Catatan teknis: matriks beda-pixel untuk seri ini **tidak boleh pakai ambang absolut 20** seperti prosedur 13 Sep.
Latar slide-nya sama (grid krem), jadi kandidat salah pun cuma beda 14–20; yang benar 0,10. Ambang yang dipakai:
`min < 1` DAN `terdekat lain > 10 × min`. Dengan itu keenam slide terbukti diagonal 1:1.

`type=album` sudah diuji aman di ketiga akun TS Law (IG TS Law 3× success, FB StudioSoft 17×, Threads TSC 3×),
jadi catatan lama "carousel TS Law = IG saja" dibatalkan di skill `atun-social-automation`
(`references/carousel-ops.md` + `references/tslaw-ig-harian.md` sudah diperbarui).
