Aku Buat Plugin untuk Posting via Claude Code

Kalau kalian udah baca artikel-artikel sebelumnya di blog ini, pasti tahu kalau saya lagi deep dive banget ke ekosistem MCP (Model Context Protocol) bareng Claude. Mulai dari auto-browser buat ngatasin drama bot nyangkut di halaman login, sampai integrasi MCP Adapter ke WordPress. Nah, sekarang saya mau cerita sesuatu yang lebih personal, saya bikin plugin WordPress sendiri, dan tujuannya satu: biar Claude bisa posting langsung ke blog ini tanpa saya harus buka WP-Admin sama sekali.

Kedengarannya sederhana, tapi proses bikinnya lumayan seru.

Masalahnya Apa Sih?

Jadi begini. Setelah nyoba WordPress MCP Adapter dari tim WordPress.org, saya sadar ada satu hal yang kurang plugin itu emang keren banget sebagai bridge antara WordPress dan protokol MCP, tapi dia butuh abilities yang terdaftar dulu supaya Claude bisa ngapa-ngapain. Ibaratnya kayak kalian punya remote control canggih, tapi nggak ada yang mau di-remote.

Di situlah saya mikir: “Ya udah, bikin sendiri aja abilitiesnya.”

Kenalan Sama WordPress Abilities API

WordPress 6.9 ngerilis sesuatu yang namanya Abilities API sebuah cara standar buat mendaftarkan “kemampuan” ke dalam WordPress yang bisa dipanggil oleh sistem eksternal, termasuk AI agent. Setiap ability punya:

  • Input schema parameter apa yang diterima
  • Output schema data apa yang dikembalikan
  • Permission callback siapa yang boleh eksekusi
  • Execute callback logika utamanya

Yang paling penting buat kasus saya: ada flag meta.mcp.public = true yang bikin ability itu bisa ditemukan dan dieksekusi lewat MCP Adapter. Tanpa flag ini, ability tetap ada tapi Claude nggak bisa lihat.

Plugin yang Saya Bikin

Saya kasih nama pluginnya Blog Abilities for MCP simpel, nggak neko-neko. Isinya empat ability utama:

1. blog/create-post

Ability paling krusial. Claude bisa bikin post baru lengkap dengan judul, konten HTML, status (publish, draft, atau pending), excerpt, tag, sampai kategori. Semua parameter-nya terdefinisi jelas di input schema, jadi Claude nggak bisa seenaknya kirim data yang aneh-aneh.

2. blog/update-post

Buat ngedit post yang udah ada. Cukup kirim ID post plus field mana yang mau diubah bisa judulnya aja, kontennya aja, atau statusnya aja. Nggak harus kirim semua data sekaligus.

3. blog/list-posts

Biar Claude bisa “ngintip” dulu lihat post apa aja yang udah ada, statusnya apa, tanggalnya kapan. Berguna banget kalau mau update artikel lama atau ngecek draft yang belum kelar.

4. blog/delete-post

Move ke trash, atau kalau perlu hapus permanen. Ada parameter force buat yang mau skip trash langsung hapus. Tapi tenang, permission callback-nya ketat hanya user dengan kapabilitas delete_posts yang bisa eksekusi.

Cara Kerjanya dari Sisi Claude

Setelah plugin aktif dan MCP Adapter terinstall di WordPress, alurnya jadi kayak gini:

  1. Claude terhubung ke WordPress via MCP server (endpoint: /wp-json/mcp/mcp-adapter-default-server)
  2. Claude panggil tool mcp-adapter-discover-abilities → dapat daftar semua ability yang available
  3. Mau nulis artikel? Tinggal panggil mcp-adapter-execute-ability dengan ability_name: blog/create-post
  4. Boom. Post masuk ke WordPress.

Artikel yang lagi kalian baca ini pun dibuat dengan cara persis seperti itu dan juga dari claude code jadi saya ndak perlu ngetik manual.

Yang Bikin Saya Kagum: Yoast Ikutan Otomatis

Waktu pertama kali saya cek ability apa aja yang ke-detect di blog ini, saya kaget. Selain empat ability dari plugin saya, ada dua ability tambahan yang muncul:

  • yoast-seo/get-seo-scores
  • yoast-seo/get-readability-scores

Ternyata Yoast SEO udah support MCP Adapter secara native. Artinya ke depannya, Claude bisa nulis artikel sekaligus ngecek skor SEO-nya sebelum di-publish. Ini yang namanya workflow impian.

Tantangan yang Saya Temuin

Nggak semua mulus sih. Ada beberapa hal yang sempet bikin saya garuk-garuk kepala:

Soal kategori ability. WordPress 6.9 mewajibkan kategori ability didaftarkan di hook wp_abilities_api_categories_init, bukan di wp_abilities_api_init. Waktu pertama saya daftarin di hook yang salah, semua ability tetap masuk tapi kasih notice panjang di error log. Beda hook, beda timing.

Soal Composer. MCP Adapter butuh dependency PHP yang diinstall via Composer. Di shared hosting yang nggak ada akses SSH, ini bisa jadi hambatan. Solusi saya: install di environment lokal dulu (Docker), copy folder vendor-nya, baru zip dan upload.

Soal sesi MCP yang perlu restart. Perubahan di .mcp.json nggak langsung ke-apply Claude Code harus di-quit sepenuhnya dulu baru koneksi MCP-nya reload. Bukan bug, tapi worth diketahui.

Hasilnya?

Sekarang workflow nulis blog saya berubah total. Saya tinggal buka Claude Code, bilang topik yang mau ditulis, dan Claude yang handle semuanya riset gaya tulisan, nulis konten, sampai posting ke WordPress. Saya cukup review hasilnya dan bilang “publish” kalau udah oke.

Bukan berarti saya malas nulis ya. Lebih ke arah: saya ngontrol hasilnya, AI yang ngerjain prosesnya. Dan itu terasa beda banget dibanding cuma pakai ChatGPT terus copy-paste manual ke WP-Admin.

Buat Kalian yang Mau Coba

Plugin-nya masih sederhana dan belum saya release ke publik, tapi kalau kalian tertarik buat setup serupa di WordPress kalian sendiri, yang perlu disiapkan:

  1. WordPress 6.8+ (6.9+ lebih disarankan)
  2. Plugin MCP Adapter dari WordPress.org install via Composer atau upload manual
  3. Plugin custom abilities kalian sendiri atau tunggu saya release versi publiknya
  4. Application Password WordPress buat autentikasi
  5. Claude Code dengan konfigurasi .mcp.json yang nunjuk ke endpoint WordPress kalian

Setupnya memang butuh effort di awal, tapi begitu jalan it just works.

Saya excited banget sama arah perkembangan ini. WordPress yang udah jadi platform penulisan terpopuler di dunia, sekarang punya jembatan langsung ke AI agent. Bukan cuma buat generate konten otomatis, tapi buat workflow yang beneran human-in-the-loop kalian yang pegang kendali, AI yang eksekusi.

Kalau ada yang mau diskusi soal setup ini atau punya ide buat fitur tambahan di plugin-nya, drop aja di kolom komentar. Saya baca semua kok.

Leave a Reply

Your email address will not be published. Required fields are marked *