Alle koppelingen

Websites & monitoring Beschikbaar

WordPress

De vraag was er twee: lees de AI-zichtbaarheid van Rank Math in de marketingmodule, en houd een WordPress-inlog per website vast zodat we die site later ook op andere manieren kunnen aansturen. Dat bleek hetzelfde wachtwoord tegen dezelfde host te zijn, en daarom is het één koppeling geworden in plaats van twee. Dat later is inmiddels nu: dezelfde inlog is waarmee een agent de inhoud van veertig klantsites leest en bewerkt.

Wat je nodig hebt

  • Een WordPress-site van 6.9 of nieuwer voor de Abilities-API (ouder werkt gewoon, alleen die ene deur blijft dicht)
  • Een applicatiewachtwoord van een gebruiker met beheerdersrechten op die site
  • Voor de AI-zichtbaarheid: de plugin Rank Math met de module AI Visibility aan, en een site die aan een Rank Math-account met Content AI is gekoppeld
  • Voor paginaopbouw met ACF-repeaters, berichttypes die niet in REST staan, uploads, menu's bewerken en WPML: de plugin schakl WordPress MCP Bridge op de site
  • Het recht wordpress.site.manage om een site te koppelen; standaard alleen beheerders

Zo koppel je het

  1. 1 Maak in WordPress een applicatiewachtwoord aan onder Gebruikers → Profiel, onderaan. Geef het een naam waaraan je het later herkent. Let op wat dit is: elke route van Rank Math voor AI-zichtbaarheid vraagt om manage_options, dus dit wachtwoord hoort bij een beheerder. Een alleen-lezen variant bestaat niet.
  2. 2 Zet WordPress aan onder Instellingen → Integraties. Hij heeft de module Websites nodig, want daar hangt de koppeling aan.
  3. 3 Open de website in schakl. en vul op de kaart WordPress het adres van de site, de gebruikersnaam en het applicatiewachtwoord in. Het wachtwoord gaat versleuteld de opslag in en komt nooit meer terug uit de API, uit een logregel of uit het wijzigingsspoor.
  4. 4 Druk op Controleren. Er lopen zes losse proeven: bereikt het wachtwoord de REST-API, is de gebruiker beheerder, kent deze site de Abilities-API, antwoordt Rank Math op AI-zichtbaarheid, staat de MCP-plugin er, en staat de plugin schakl WordPress MCP Bridge er. Elke uitkomst blijft staan met de eigen foutregel van de site erbij, onvertaald, want dat is een citaat.
  5. 5 Wil je de AI-zichtbaarheid op het dashboard, koppel dan onder Marketing op de klant een bron van het type Rank Math aan deze website. Zonder gekoppelde website weigert dat meteen, in plaats van pas de volgende ochtend als een rode regel.
  6. 6 Vanaf dan haalt de nachtelijke synchronisatie één momentopname per dag op en groeit de trendlijn vanzelf.

Vier deuren, één sleutel

Rank Math registreert zijn AI-zichtbaarheid als WordPress Abilities, met twee regels erbij: toon in REST, en beschikbaar via MCP. Die twee regels zijn het hele verhaal. Ze zetten dezelfde functies op de gewone REST-route van WordPress én op de MCP-server van de MCP Adapter-plugin, en allebei authenticeren zoals iedere REST-aanroep dat doet, wat voor ons een applicatiewachtwoord betekent. Daarmee opent één inlog vier oppervlakken op dezelfde host, en daarom is dit een eigen koppeling en geen verborgen veldje van een marketingbron: er staan meer dingen in de rij voor die sleutel.

  • De gewone REST-API: berichten, media, gebruikers, plugins
  • De Abilities-API van WordPress 6.9, per functie aan te zetten
  • De MCP-server, als de MCP Adapter-plugin geïnstalleerd is
  • De eigen route van Rank Math voor AI-zichtbaarheid

Een proef is bewijs, nooit de poort

De zes proeven bepalen elkaars uitslag niet, want in het echt zijn die toestanden onafhankelijk: Rank Math ontbreekt gewoon vaak op een site waarvan de berichten-API kerngezond is, en MCP op een site waar Rank Math prima werkt. Een lezing die lukt weegt zwaarder dan een controle die weigert: een wachtwoord dat de gewone REST-API haalde is actief, ook als de andere niets opleverden, en pas als álle proeven weigeren heet de inlog geweigerd. Onbereikbaar en geen-WordPress zijn bovendien iets anders dan geweigerd, want die twee zeggen niets over het wachtwoord, en ze als inlogfout melden stuurt iemand een nieuw wachtwoord maken dat nooit fout was. Elk kruisje draagt de eigen fouttekst van de site, want een kruisje zonder uitleg is de enige toestand waar niemand iets mee kan.

Het nieuwere oppervlak is niet automatisch het juiste

Rank Math heeft twee manieren om dezelfde cijfers te geven, en maar één ervan meet iets. De Ability leest een cache van twaalf uur en kan niet afdwingen dat er opnieuw wordt opgehaald: zijn eigen vernieuwingsoptie is alleen telemetrie. De REST-route kan dat wel. Wie de Ability had gekozen omdat het het modernere oppervlak is, had een grafiek gebouwd die alleen beweegt als er een mens in het WordPress-dashboard kijkt: een grafiek van wanneer iemand voor het laatst heeft ingelogd, getekend alsof het de AI-zichtbaarheid van een klant is. De nachtelijke synchronisatie roept daarom de REST-route aan met vernieuwen aan, en een test houdt dat vast.

Vijf cijfers die niemand al kende

De andere marketingbronnen spreken een taal die een marketeer al bezit: iedereen weet wat een sessie is. Deze vijf zijn nieuw voor het bureau én voor de klant, en de labels zijn zo kort als een tegel toelaat. Zo stond 'Bronvermeldingen 6' naast 'Vermeldingen 18' zonder dat ergens op het scherm stond dat het eerste de deelverzameling van het tweede is die ook een link bevatte. Het bureau kon het dashboard dat het gebouwd had niet uitleggen en de klant kon het dashboard dat hij gekregen had niet lezen. Elk cijfer draagt daarom zijn eigen zin: uitgeschreven waar er ruimte is, als tooltip waar die er niet is, en in precies hetzelfde onderdeel voor het bureau en voor het portaal, zodat er geen versie bestaat die de cijfers wel aan de een en niet aan de ander uitlegt.

  • AI-zichtbaarheidsscore: rang, vermeldingen, bronvermeldingen en sentiment samengevouwen tot één getal van 0 tot 100
  • Vermeldingen: hoe vaak het merk genoemd werd in de antwoorden op de gevolgde vragen
  • Bronvermeldingen: het deel daarvan dat ook naar de site van het merk linkte
  • Gemiddeld sentiment: hoe positief het merk beschreven wordt, als percentage
  • Gemiddelde plaats: de gemiddelde positie tussen de merken die een antwoord noemt, waarbij 1 het beste is

De site is een parameter, geen gereedschap

Veertig klanten met elk hun eigen WordPress, bereikbaar voor het team vanuit de MCP-server van schakl., ook op sites die zelf geen abilities registreren. Een gereedschap per site zou een lijst opleveren die per klant verschilt, en een chatclient stopt elk gereedschap bij elke beurt in de context van het model. Dus zijn het gewone routes op de WordPress-koppeling met de site als parameter, en is de MCP-sectie wordpress hetzelfde rijtje gereedschappen of je nu vier sites beheert of vierhonderd. Wat per site verschilt (welke plugins, welke berichttypes, welke abilities) wordt beantwoord door de samenvatting van die site, niet in de gereedschapslijst gecodeerd. Wat niet in een vaste route past gaat via een begrensde doorgang naar de hele REST-API van de site: WPML, LiteSpeed, FileBird en wat er morgen bij komt.

  • Samenvatting per site: WordPress- en PHP-versie, berichttypes, plugin-namespaces, formulieren, abilities en of de site meertalig is
  • Pagina's, berichten en elk eigen berichttype lezen en bewerken, inclusief concepten, ACF-velden en de WPML-taal
  • Media lezen, zodat een ACF-afbeeldings-id iets betekent
  • Contact Form 7: sjabloon, veldnamen, beide mails en de meldingen
  • Abilities opsommen en uitvoeren; een ability die zichzelf niet als alleen-lezen aanmerkt telt als schrijven
  • De doorgang: GET voor elk teamlid, schrijven alleen voor een beheerder, gebruikers, plugins, thema's en instellingen voor niemand, en een antwoord dat bij 256 KB zegt wat het wegliet

Het publiek bepaalt het recht

WordPress heeft geen testomgeving: een wijziging aan een gepubliceerde pagina is meteen de uitzending. De rechten zijn daarom niet verdeeld naar welk veld je aanraakt, maar naar wie het resultaat ziet. Een medewerker schrijft concepten en bewerkt wat nog niet live staat; alles wat een bezoeker kan zien bewerken, of een concept live zetten, is een apart recht dat standaard bij de beheerder ligt. Dat wordt besloten door het record te lezen vóór de wijziging, en de weigering komt voordat de site iets gevraagd wordt. Formulieren, menu's, optiepagina's en vertaalde teksten zijn live zodra ze opslaan en vallen dus onder publiceren, en verwijderen is weer een eigen recht, zodat een sleutel voor een assistent kan zeggen: mag bewerken, nooit verwijderen. Elke schrijfactie komt als regel in het wijzigingsspoor van de site bij schakl., want de WordPress van de klant legt niets over ons vast.

schakl WordPress MCP Bridge: de paginaopbouw van de site zelf

Een pagina die uit een ACF-repeater van getypte blokken bestaat, met per bloktype een handvol zichtbare velden uit dertig, is via de REST-integratie van ACF niet te bewerken: die validatie negeert de voorwaardelijke logica, een repeater moet in zijn geheel terug en slaat op positie op, een berichttype dat niet in REST staat bestaat daar niet, en uploaden gaat alleen als multipart. Dat is niet vanaf de kant van het wachtwoord op te lossen, dus doet een WordPress-plugin het op de site: de schakl WordPress MCP Bridge. Die kent het schema van de veldgroepen inclusief de voorwaarden, leest per blok alleen de velden die de editor toont, valideert een wijziging zoals de editor dat doet en meldt elk probleem met het volledige pad, bewerkt één blok zonder de rest te raken, neemt een afbeelding mee als URL of base64, bewerkt menu's ter plekke, geeft Contact Form 7 wat de eigen REST-namespace ervan nooit had, en regelt WPML: talen, een gekoppelde vertaling met vertaalde verwijzingen, String Translation en beide manieren waarop WPML een formulier vertaalt. schakl. bereikt de plugin via 33 bridge-routes onder dezelfde inlog, dezelfde 33 gereedschappen in de sectie wordpress hoeveel sites er ook zijn. Staat de plugin er niet, dan zegt de aanroep dat met de naam van de plugin erbij; de controle op de websitepagina toont de geïnstalleerde versie en of de plugin zichzelf kan bijwerken.

  • Het schema: welke velden er zijn, welke keuzes ze hebben en wanneer de editor ze verbergt
  • Records lezen, aanmaken, bewerken per pad en verwijderen, ook van berichttypes die niet in REST staan
  • Een record, een term of een optiepagina ook als leesbare tekst, en de lijst met records in één aanroep met tekst erbij: elk FAQ-item met zijn antwoord
  • Media uploaden als JSON, termen en ACF-optiepagina's
  • Menu's: aanmaken, hernoemen, themalocaties kiezen, items ter plekke bewerken, verplaatsen en op volgorde zetten, en verwijderen
  • Contact Form 7: de velden uit het sjabloon, de configuratiefouten van CF7, mails en meldingen samengevoegd bij bijwerken, en verwijderen onder een eigen recht
  • WPML: talen, vertalingen aanmaken of koppelen, String Translation, en een formulier per taal of één formulier met vertaalde teksten
  • Een weigering van de plugin komt ongewijzigd door, met het pad naar het veld en de rij

Rechten

Geef deze rechten aan de rol die deze koppeling beheert (Instellingen → Rollen). Standaard alleen voor beheerders, en nooit voor de rol client.

  • wordpress.site.manage Een site koppelen, het wachtwoord wijzigen, controleren en ontkoppelen. Standaard alleen beheerders, en bewust niet samengevoegd met het schrijfrecht op websites.
  • wordpress.site.read Zien of de site van deze klant gekoppeld is en wat de laatste controle opleverde. Ook voor medewerkers, want dat is een vraag die een accountmanager tijdens gewoon werk stelt.
  • wordpress.content.read Pagina's, berichten, media en bridge-records lezen op een gekoppelde site. Standaard beheerder en medewerker.
  • wordpress.content.write Concepten schrijven en bewerken wat nog niet live staat, en media uploaden. Standaard beheerder en medewerker.
  • wordpress.content.publish Alles bewerken wat een bezoeker ziet, iets live zetten, en optiepagina's, menu's en vertaalde teksten wijzigen. Standaard alleen beheerder.
  • wordpress.content.delete Records naar de prullenbak verplaatsen of verwijderen, en menu's verwijderen, via de schakl WordPress MCP Bridge. Standaard alleen beheerder.
  • wordpress.forms.read Contact Form 7-formulieren lezen. Standaard beheerder en medewerker.
  • wordpress.forms.write Contact Form 7-formulieren bewerken; een formulier is live zodra het opslaat. Standaard alleen beheerder.
  • wordpress.forms.delete Contact Form 7-formulieren verwijderen via de schakl WordPress MCP Bridge. Definitief, want CF7 heeft geen prullenbak, en elke pagina die het formulier insluit wordt leeg. Standaard alleen beheerder.
  • wordpress.ability.read Abilities opsommen en de abilities uitvoeren die zichzelf als alleen-lezen aanmerken. Standaard beheerder en medewerker.
  • wordpress.ability.run Elke ability uitvoeren, ook schrijvende. Standaard alleen beheerder.
  • wordpress.rest.read Alles lezen via de REST-API van een gekoppelde site. Standaard beheerder en medewerker.
  • wordpress.rest.write Schrijven via de REST-API van de site, met gebruikers, plugins, thema's en instellingen voor iedereen uitgesloten. Standaard alleen beheerder, en nooit op een standaardsleutel.

Wat het bewust niet doet

  • Dit is een tabel met beheerderswachtwoorden van klantsites. Dat is een groter risico dan een Cloudflare-token dat alleen DNS mag lezen, en daarom is het beheerrecht alleen voor beheerders en gaat geen van beide rechten ooit naar de rol Klant.
  • Ontkoppelen vergeet het wachtwoord hier, maar trekt het niet in bij WordPress. Dat doet de eigenaar zelf op zijn profielpagina, en het als bijeffect van opruimen intrekken zou breken waar dat wachtwoord verder nog voor gemaakt was.
  • Rank Math houdt geen geschiedenis bij. Elk pad levert alleen de laatste stand, dus de trendlijn bestaat doordat wij momentopnamen bewaren. Er wordt één rij per dag geschreven en geen reeks identieke rijen, want een vlakke lijn die op meten lijkt is erger dan geen lijn.
  • Analyses draaien op het tempo van het abonnement van Rank Math, standaard wekelijks. Twee opeenvolgende momentopnamen mogen dus gewoon hetzelfde getal bevatten; wanneer er voor het laatst geanalyseerd is, reist mee zodat een rapportage kan zeggen wat het eigenlijk vergelijkt.
  • Vermeldingen en bronvermeldingen lijken tellingen en zijn het niet: het zijn lopende totalen op het moment van de laatste analyse. Ze worden daarom gemiddeld en nooit opgeteld.
  • Rank Math wordt alleen gelezen: geen merk aanmaken en geen vragen bewerken. Schrijven naar de site zelf gaat via de MCP-routes hierboven, onder hun eigen rechten.
  • Media uploaden via de gewone wp/v2-route kan niet, want die neemt alleen multipart aan en geen MCP-gereedschap kan dat versturen. Uploaden gaat via de schakl WordPress MCP Bridge.
  • De schakl WordPress MCP Bridge is op een testcontainer van begin tot eind gedraaid, nog niet op de productiesite van een klant. De WPML-kant is geschreven naar de documentatie van WPML en heeft nog geen echte site gezien.

Waar je het vindt De kaart WordPress op de detailpagina van een website. Er is bewust geen menu-item: WordPress is geen plek waar je naartoe gaat.

Lees de handleiding

Meer in deze categorie

Andere koppelingen