ControlCenter
➕ Nuovo 📝 Aggiorna 📘 Docs 07/05/2026 09:00
← Tutti i progetti
🔌
Child Master Admin - Plugin
Plugin WordPress core per il network Discover MCL. Orchestratore modulare per automazione contenuti AI (GPT-4.1), monetizzazione ibrida HB/Taboola, gestione remota plugin, ottimizzazione E-A-T, sync Master-Child, push notifications, pillar articles con box riassunto robusto (retry + recovery), related posts redesign, filename SEO Immich, box In Breve per discover, author slug fix, Discover meta tags ottimizzati. v127: box fonti Perplexity con JSON-LD Article citation per segnale E-E-A-T. v128: fix redirect 404→home 301 permanente (patch.php bloccava l'hook).
● Attivo Priorità Alta 👤 Luca
🤖 Sincronizza con Claude
🚀 Copia Brief + ToDo = per iniziare una nuova conversazione  |  📋 JSON Completo = per aggiornare a fine sessione
📖 Brief Progetto
Child Master Admin è il plugin WordPress che fa da sistema nervoso centrale per l'intero network Discover di MCL Media SRL — oltre 280 siti italiani (più un nucleo di siti in spagnolo, francese, tedesco e inglese) che generano traffico da Google Discover e monetizzano tramite Hb Agency. Il plugin orchestra ogni aspetto della vita di un sito child: generazione automatica di articoli via GPT-4.1 (discover e pillar), gestione immagini da Immich con filename SEO, monetizzazione ibrida HB Agency/Taboola, sincronizzazione bidirezionale col Master (mclmedia.eu), push notification via Perfecty Push, schede autore con ProfilePage JSON-LD, related posts redesign, box "📋 In breve" con takeaways AI e sommario cliccabile, box fonti Perplexity con JSON-LD Article citation per segnale E-E-A-T, redirect 404→home 301 per consolidare la link equity dei domini recuperati, e un sistema di patch che gestisce robots.txt, Discover meta tags e sicurezza.
Siamo alla versione 129, appena completata. In produzione sui 280+ siti gira ancora la v123 (deployata su 27 siti attivi l'11 marzo); la v128 è stata testata e validata su pulizieprodotti.it. Le versioni dalla 126 alla 129 rappresentano un ciclo di evoluzione intenso avvenuto tra il 15 e il 18 marzo 2026. La v126 ha introdotto il filename SEO per le immagini Immich, il box "In breve" anche per gli articoli discover, il fix dell'author slug, la disattivazione delle CTA WhatsApp/Telegram, e il potenziamento delle regole editoriali (da 3 generiche a 6 precise in 5 lingue, con anti-keyword-stuffing, anti-filler, tono in seconda persona, paragrafi brevi, dati concreti obbligatori). La v127 ha aggiunto il modulo fonti Perplexity: un box HTML a fine articolo con fino a 5 fonti (4 Perplexity + 1 eventuale GNewsXity), link nofollow, dominio visibile, disclaimer temporale, e soprattutto JSON-LD Article con citation array Schema.org che inietta un segnale E-E-A-T strutturato nell'head. La v128 ha risolto un bug critico: il redirect 404→home non funzionava su nessun sito perché patch.php (caricato per primo) rimuoveva l'hook template_redirect; il fix ha svuotato quel metodo e cambiato il redirect da 302 a 301 permanente. La v129, contenuta nello zip allegato, è la novità più recente: supporto multilingua completo. Una nuova classe CMA_Multilang_Patch in patch.php rileva automaticamente la lingua del sito via get_locale() e traduce tutti i testi precedentemente hardcoded in italiano — system prompt per generazione contenuti (custom, expand, takeaways), etichette UI del box riassunto ("In breve"/"En resumen"/"En bref"/"Kurz zusammengefasst"/"In brief"), titoli del sommario, e header/nota del box fonti. Cinque lingue supportate: IT, ES, FR, DE, EN, con fallback automatico sull'italiano. Zero configurazione richiesta: basta che il sito WordPress abbia il locale corretto.
Le decisioni architetturali chiave sono state: mantenere patch.php come layer di override che si carica prima di tutto (priorità 0 su plugins_loaded), usare un dizionario statico cached per le stringhe multilingua anziché un sistema di traduzione esterno, e preservare la retrocompatibilità totale — i siti italiani non vedono alcun cambiamento, i siti stranieri funzionano automaticamente. Il debito tecnico identificato durante la revisione di patch.php (doppio robots.txt handler, logging ibrido, meta max-image-preview triplicato) è stato documentato ma non risolto perché non impatta Google Discover.
Il prossimo step concreto è il deploy progressivo della v129 su tutti i 280+ siti del network. Prerequisito: il gestionale discover.gestionemcl.it deve essere aggiornato prima del plugin, perché l'architettura Perplexity Enrichment genera i sources_json lato gestionale che il plugin poi riceve e renderizza. L'ordine è: aggiornare il gestionale → deployare v129 via gestionale su un batch di test (5-10 siti) → verificare box fonti, redirect 301, e multilingua sui siti stranieri → rollout completo.
📁 File Progetto 0 file
Max 64M · zip, pdf, docx, xlsx, immagini, codice…
📊 Avanzamento
0%
✅ To Do List 0/0
Nessuna task
📝 Note
Child Master Admin v128 è il plugin WordPress core installato su tutti i 280+ siti del network Discover MCL Media. Versione attuale in produzione: v123 (27 siti). La v128 è stata deployata e testata su pulizieprodotti.it, pronta per deploy progressivo. === NOVITÀ v128 (17/03/2026) — FIX REDIRECT 404→HOME 301 === Due modifiche: 1. system/functions.php: redirect 404→home cambiato da 302 (temporaneo) a 301 (permanente) per consolidare link equity dei domini recuperati con siti nuovi. 2. patch.php: rimosso il remove_action in CMA_Discover_Patch::fix_404_handling() che bloccava completamente il redirect 404. Il metodo ora è vuoto. Causa trovata durante debug: la funzione redirect_404_to_homepage esisteva correttamente ma l'hook template_redirect risultava MISSING perché patch.php (caricato per primo via require_once) lo rimuoveva via plugins_loaded priorità 0. Revisione completa patch.php durante la sessione: identificati debiti tecnici minori (doppio robots.txt handler tra system/functions.php e patch.php, logging ibrido file+wp_options in write_log, meta max-image-preview iniettato 3 volte con metodi diversi). Nessuno di questi impatta Google Discover — solo pulizia codice futura. Confermato: tutti i siti hanno Yoast attivo → canonical gestito correttamente. Il robots.txt servito è quello del patch (priorità 1), granulare con blocco solo namespace CMA — quello in system/functions.php che blocca tutto /wp-json/ non viene mai eseguito. === NOVITÀ v127 (15/03/2026) — PERPLEXITY SOURCES + JSON-LD CITATION === Nuovo modulo utils/sources/ aggiunto al plugin: - core.php: due filtri WordPress. Filtro the_content (priorità 99) appende box fonti HTML a fine articolo — solo se post ha meta _mcl_article_sources non vuoto. Box con header 'Fonti e approfondimenti', icone numerate, link nofollow noopener, dominio estratto dall'URL, nota disclaimer con mese/anno corrente. Max 5 fonti (4 Perplexity + 1 eventuale discover sorgente GNewsXity). Filtro wp_head (priorità 5) inietta JSON-LD Article con citation array — ogni fonte come Schema.org WebPage con name e url. Segnale E-E-A-T per Google Quality Rater, particolarmente significativo per YMYL (salute, finanza). - style.css: design coerente con box '📋 In breve' esistente. Background #F8FAFC, bordo top #3B82F6 (3px), font system stack, responsive (padding ridotto su mobile), dark mode via prefers-color-scheme. Endpoint incoming-article aggiornato: accetta campo opzionale sources_json nel payload dal gestionale. Se presente, valida ogni fonte (sanitize_text_field su title, esc_url_raw + filter_var su URL), e salva come _mcl_article_sources post_meta. Retrocompatibile al 100%: articoli senza sources_json non vengono toccati, nessun box appare, nessun JSON-LD iniettato. Prerequisito: il gestionale deve essere aggiornato CON Perplexity Enrichment PRIMA del deploy v128. È il gestionale che genera i sources_json e li invia nel payload. Il plugin li riceve e li renderizza. JSON-LD si aggiunge a quello già presente (ProfilePage sulle pagine /author/ dalla v120). Si attiva solo su singoli post con fonti. Non genera rich results visibili in SERP ma è un segnale E-E-A-T verificabile dai Quality Rater. === ANALISI COMPETITOR DISCOVER (15/03/2026) === 10 siti competitor analizzati, 4 network identificati: - Network A (P.IVA 07082780821): re-mark.it, genesistechstore.it, folladornurseryschool.it — BEST IN CLASS (7-7.5/10). Tono narrativo naturale, incipit in 2ª persona, alt text dettagliati, immagini 768x428, no keyword stuffing. - KefaBlog (MCL Media): tenutavaldorso.it, sophiestique.it, casatazzi.it — da 4 a 5.5/10. Keyword stuffing pesante, incipit enciclopedici, hash Pixabay nei filename, author slug che espone infrastruttura. - EV-A Srl: bionikeresort.it — 6/10. Buona varietà ma clickbait e timestamp nei filename immagini. - Singoli: hostariaapicius.it (6.5, domain history ristorante), taxsi.it (5.5, bulk publish), cardonexperience.it (5, index contaminato). - MCL (SiculBlog): mbrenergia.it — 5.5/10. Stesso topic di genesistechstore.it ma con gap su immagini, incipit e keyword stuffing. Gap principali risolti dalla v126+v127+v128: 1. Filename immagini: da hash Pixabay a slug SEO del titolo (v126) 2. Box In Breve: attivato anche per discover (v126) 3. Author slug: da login tecnico a display_name (v126) 4. CTA WhatsApp: disattivata (v126) 5. max-image-preview: esteso a tutte le pagine (v126) 6. Prompt quality: nuovo prompt_meta_generator + rules potenziate 5 lingue (v126 gestionale) 7. Fonti verificate: box fonti Perplexity + JSON-LD citation E-E-A-T (v127) 8. Redirect 404: da 302 a 301 permanente, link equity consolidata sulla home (v128) === ARCHITETTURA MODULARE (7 macro-moduli + patch layer) === 1. GENERATOR (AAG): GPT-4.1, discover (4000 token) e pillar (8000 token), box riassunto per ENTRAMBI con retry + recovery, controllo lunghezza, espansione 2. ADV: Monetizzazione ibrida HB Agency (header bidding) / Taboola (native), ads.txt virtualizzato 3. ENGAGEMENT: Related post v121 (card+thumbnail, mid-article+fine, responsive, dark mode), widget affiliato. Social buttons WA/TG: DISATTIVATI v126 (codice preservato) 4. SYSTEM: Plugin manager remoto, missed schedule fixer, autologin, robots.txt, LiteSpeed purge, menu dinamico categorie, redirect 404→home 301 5. E-A-T & AUTORI: Sync autori con user_nicename fix, traduzione bio AI, assegnazione auto, scheda autore, ProfilePage JSON-LD 6. SYNC & PUSH: Notifica Master on-publish, Perfecty Push integration 7. SOURCES & CITATION (v127): Box fonti Perplexity in fondo articolo, JSON-LD Article citation nel <head>, CSS dedicato, solo su post con meta _mcl_article_sources 8. PATCH: Sicurezza (rate limiting), performance (CSS combinato, logging file), Discover SEO (max-image-preview su tutte le pagine + wp_robots + redirect 404→301) === PROSSIMI STEP === Priorità 1: Deploy gestionale Perplexity Enrichment → Validare JSON-LD con Rich Results Test su pulizieprodotti.it → deploy v128 progressivo Priorità 2: Monitorare qualità contenuti nuovo prompt + brief Perplexity per 1 settimana Priorità 3: Fix footer copyright + menu multilingua Priorità 4: Distribuzione multi-categoria nel PED Compositor Priorità 5: Fix sicurezza (inspector, token, endpoint aperti) Priorità 6: Monitorare impatto E-E-A-T (fonti + citation) su CTR/traffico dopo 2 settimane
📜 Changelog
v128 completata e deployata su pulizieprodotti.it — 2 file modificati. system/functions.php: redirect 404→home cambiato da 302 a 301 permanente, home_url('/') con trailing slash. patch.php: svuotato CMA_Discover_Patch::fix_404_handling() che faceva remove_action('template_redirect', 'redirect_404_to_homepage') bloccando il redirect 404 su tutti i siti. child-master-admin.php: version bumped a 128.0. Debug sessione: hook risultava MISSING nonostante funzione esistente e file caricato — causa trovata con grep in patch.php riga 270. Dopo deploy e purge LiteSpeed cache, curl conferma HTTP/2 301. Revisione completa patch.php: identificati doppio robots.txt handler, logging ibrido, meta duplicato — nessun impatto Discover, solo debito tecnico.
2026-03-17 15:00 · claude
v127 completata — Perplexity Sources + JSON-LD Citation: 3 file modificati + 2 nuovi. child-master-admin.php: version 127.0, require utils/sources/core.php dopo modulo social, description aggiornata con menzione citation. endpoint/generator.php: incoming-article accetta sources_json nel payload, valida ogni fonte (sanitize_text_field + esc_url_raw + filter_var), salva come _mcl_article_sources post_meta con wp_slash; log ricezione aggiornato con conteggio fonti. utils/sources/core.php (NUOVO): filtro the_content priorità 99 appende box fonti HTML (max 5, icone numerate, link nofollow noopener, dominio visibile, nota disclaimer mese/anno); filtro wp_head priorità 5 inietta JSON-LD Article con citation array (Schema.org WebPage); wp_enqueue_scripts carica style.css solo su singoli post con meta. utils/sources/style.css (NUOVO): CSS box fonti responsive, bordo top #3B82F6, font system, dark mode via prefers-color-scheme. Retrocompatibile: articoli senza sources_json non mostrano box né JSON-LD. ZIP pronto per deploy.
2026-03-15 15:00 · claude
v126 Gestionale: Rules tecniche potenziate in handlers/ped.php (5 lingue), handlers/ped_engine.php e handlers/compositor.php. Da 3 regole generiche a 6 regole precise: anti-keyword-stuffing (MAX 2-3 keyword, MAX 3-4 bold), anti-filler, tono 2ª persona singolare, paragrafi MAX 3-4 righe, dati concreti obbligatori, lunghezza 800-1200 parole. Nuovo prompt_meta_generator configurato in Impostazioni con istruzioni per incipit narrativo, angolo editoriale, struttura H2 come domande, dati concreti, anti-pattern. Test confronto pre/post su articolo 'Formiche nell'orto': da 22 bold meccanici a 3, da incipit enciclopedico a scena sensoriale in 2ª persona, da H2 'Introduzione/Conclusione' a domande del lettore.
2026-03-15 08:00 · claude
v126 completata: 6 file modificati nel plugin. child-master-admin.php: version 126.0. utils/immagini/core.php: filename SEO da slug titolo post (troncamento 80 char) + post_title attachment leggibile. generator/core.php: filename SEO anche per immagini URL + box '📋 In breve' attivato per DISCOVER (solo takeaways, no TOC) + recovery cron per entrambi i tipi (soglia 2 H2 discover, 3 H2 pillar). patch.php: max-image-preview:large esteso a tutte le pagine + filtro wp_robots nativo WP 5.7+. utils/scheda-autore/core.php: user_nicename da display_name (fix /author/infomclmedia-it/ → /author/massimo-vigilante/). utils/social/functions.php: modulo CTA WhatsApp/Telegram disattivato con return (codice preservato).
2026-03-15 07:30 · claude
Analisi competitor Discover completata: 10 siti analizzati (re-mark.it 7.5, genesistechstore.it 7.5, folladornurseryschool.it 7, hostariaapicius.it 6.5, bionikeresort.it 6, mbrenergia.it 5.5, tenutavaldorso.it 5.5, taxsi.it 5.5, cardonexperience.it 5, sophiestique.it 4.5, casatazzi.it 4). 4 network identificati: Network A (P.IVA 07082780821 — best in class), KefaBlog (MCL — 3 siti), EV-A Srl Napoli, sconosciuti. Gap principali identificati: filename immagini hash Pixabay, incipit enciclopedici, keyword stuffing meccanico, author slug che espone infrastruttura, CTA WhatsApp invasiva pre-contenuto, homepage mono-categoria.
2026-03-15 06:00 · claude
v123 deployata su tutti i 27 siti attivi. Test live con 6 pillar da Pillar Extra: box riassunto generato correttamente su tutti, link interni <a> inseriti da GPT, logging pillar visibile nei log. Recovery cron verificato: aggiunge box mancanti ai post degli ultimi 7gg.
2026-03-11 15:00 · claude
v123 completata: 3 file modificati. generator/core.php: box riassunto con retry (2 tentativi 30s+45s, pausa 3s) + fallback su solo sommario H2 (box SEMPRE generato se ci sono H2, anche senza takeaways GPT). Recovery cron aag_recovery_missing_summary_box: scansiona ultimi 7gg ogni 15 min, aggiunge box mancanti (max 1/ciclo). Helper aag_call_takeaways_api isolato con gestione errori completa. Logging cron con separatori ═══, content_type/status/date/tokens espliciti. endpoint/generator.php: log ricezione articoli (content_type, needs_content, dimensione prompt). child-master-admin.php: version 123.0.
2026-03-11 14:00 · claude
Debug box riassunto mancante su Tenuta News: post 4411 (pillar 'Assistenza sanitaria per anziani') aveva content_type=pillar e contenuto 9.4KB con 8 H2, ma nessun box. Causa: chiamata GPT takeaways fallita silenziosamente durante il cron (nessun retry, nessun fallback, nessun log errore nella v122). Box rigenerato manualmente con wp eval. Verificato: 4 pillar su 7 mancavano del box. Root cause confermata: rate limit/timeout OpenAI sulla terza chiamata GPT del ciclo (contenuto + espansione + takeaways).
2026-03-11 13:30 · claude
v122: Menu dinamico ricostruito. Le categorie vengono ordinate per count DESC (numero articoli). Le top 3 appaiono come voci dirette nel menu primario, tutte le restanti finiscono sotto una voce 'Notizie' come sub-menu dropdown (classe menu-item-has-children + ul.sub-menu). Compatibile con GeneratePress. File modificato: system/functions.php (funzione add_categories_with_posts_to_menu).
2026-03-11 10:00 · claude
v121 completata: 4 file modificati (endpoint/generator.php, generator/core.php, generator/admin.php, related-post/functions.php). Modello GPT-4.1 per tutti i contenuti. Supporto content_type discover/pillar. Pillar: max_tokens 8000, timeout 180s, system prompt dedicato 1500-2000 parole con FAQ. Box riassunto automatico post-generazione (chiamata GPT leggera 300 token per 3-4 takeaways + parsing H2 per sommario cliccabile + anchor ID automatici). Controllo lunghezza minima con espansione (discover min 500, pillar min 1200). Pulizia HTML differenziata (pillar mantiene <a> per link interni). Related posts redesign completo: card con thumbnail, doppio posizionamento (mid-article dopo primo H2 + fine articolo griglia 3 colonne), responsive, dark mode. Pagine manuali Aggiungi Pillar/Discover in wp-admin con select categorie, data pubblicazione, prompt textarea. Metabox Tipo Contenuto nell'editor post. Coda generazione visibile con badge tipo.
2026-03-10 16:00 · claude
Test pillar manuale su hotelriccioneduestelle.it: articolo 'Quali laghi visitare in Italia' generato con GPT-4.1. Box riassunto con 4 takeaways + sommario 8 sezioni H2 cliccabili. Primo test: GPT inventava link interni inesistenti. Fix: prompt con URL completi dalla sitemap + divieto esplicito href relativi. Secondo test: 3 link interni inseriti correttamente con anchor text naturale.
2026-03-10 13:00 · claude
v120: Aggiunto modulo ProfilePage JSON-LD per pagine /author/ (Google Structured Data). Validato con Rich Results Test su hotelriccioneduestelle.it - 8 elementi validi, 0 errori.
2026-03-08 12:30 · claude
Audit completo plugin v119: analizzati tutti i moduli, identificati problemi sicurezza (inspector.php, token hardcoded, endpoint aperti), bug (doppio deactivation hook, doppio autologin), e debito tecnico.
2026-03-08 11:00 · claude
Progetto creato e popolato
2026-03-08 11:31 · claude
ℹ️ Info
Versione attuale 128.0
Siti attivi 280+
Siti con v128 1 (pulizieprodotti.it — v123 su 27 siti attivi, resto da aggiornare)
Gestionale discover.gestionemcl.it
Revenue Hb Agency (Header Bidding)
AI Model (Articoli) GPT-4.1 (discover 4000 token, pillar 8000 token)
AI Model (SEO/Immagini) GPT-4o-mini
AI Model (Riassunto) GPT-4.1 (300 token, temp 0.3, retry 2 tentativi — ora anche per DISCOVER)
AI Model (Prompt Builder) GPT-4o-mini (meta-prompt ad-hoc per titolo — prompt_meta_generator potenziato v126)
Push Provider Perfecty Push
Image Server Immich (immaginimcl.it)
Master URL mclmedia.eu
Analisi competitor 10 siti analizzati (re-mark.it, genesistechstore.it, folladornurseryschool.it, hostariaapicius.it, bionikeresort.it, tenutavaldorso.it, taxsi.it, cardonexperience.it, sophiestique.it, casatazzi.it) — 4 network identificati
Prossimo step Deploy v128 progressivo su tutti i 280+ siti del network. Il gestionale deve essere aggiornato PRIMA del plugin (Perplexity Enrichment genera i sources_json che il plugin riceve). v128 testata su pulizieprodotti.it: redirect 301 verificato funzionante.
🛠 Tech Stack
PHP WordPress REST API OpenAI API (GPT-4.1) Anthropic Claude API (Sonnet 4.6) Perplexity API (sonar-pro) Immich API HB Agency API Taboola Perfecty Push Plausible Analytics WP-Cron JSON-LD Schema.org
📘 README
# Child Master Admin **Core System & Orchestrator per network Child WordPress** Suite modulare per automazione contenuti (AI), monetizzazione ibrida (HB Agency/Taboola), gestione remota plugin, ottimizzazione E-A-T e sincronizzazione Master-Child. - **Versione:** 120.0 - **Autore:** MCL MEDIA SRL - **Requisiti:** WordPress 5.8+, PHP 7.4+ - **Dipendenze esterne:** OpenAI API (GPT-4o), Immich, Perfecty Push, Plausible Analytics, HB Agency API --- ## Indice 1. [Panoramica Architettura](#panoramica-architettura) 2. [Moduli](#moduli) - [Generator (AAG)](#1-generator-aag---automated-article-generator) - [Advanced Ads](#2-advanced-ads---monetizzazione-ibrida) - [Engagement & UX](#3-engagement--ux) - [System & DevOps](#4-system--devops) - [E-A-T & Autori](#5-e-a-t--autori) - [Sync & Push](#6-sync--push) - [Media Manager](#7-media-manager) 3. [API REST Endpoints](#api-rest-endpoints) 4. [Cron Jobs](#cron-jobs) 5. [Autenticazione](#autenticazione) 6. [Struttura File](#struttura-file) 7. [Installazione & Configurazione](#installazione--configurazione) 8. [Patch di Sicurezza & Performance](#patch-di-sicurezza--performance) --- ## Panoramica Architettura Il plugin opera come **controller centrale** su ogni sito Child del network. Espone API REST protette per il controllo remoto dal gestionale Master (base.mclmedia.eu / discover.gestionemcl.it) e gestisce automazioni locali tramite WP-Cron. ``` ┌──────────────────────┐ REST API ┌──────────────────────┐ │ Master Gestionale │ ◄─────────────────────► │ Child Site (WP) │ │ base.mclmedia.eu │ Bearer Token Auth │ + Child Master Admin│ │ discover.gestionemcl│ │ │ └──────────────────────┘ └──────────────────────┘ │ │ │ ├── Generator (GPT-4o) │ ├── Immich (immagini) │ ├── Perfecty Push │ ├── HB Agency / Taboola │ └── Plausible Analytics │ └── Notifiche On-Publish (permalink, push) ``` --- ## Moduli ### 1. Generator (AAG) — Automated Article Generator **File:** `generator/core.php`, `generator/admin.php`, `generator/tools.php`, `endpoint/generator.php` Il cuore della produzione contenuti automatizzata. Riceve articoli dal Master come "scheletri" (titolo + categoria + prompt) e li completa con contenuto AI. **Funzionalità:** - **Generazione AI:** Integrazione OpenAI GPT-4o con prompt custom dal gestionale (priorità assoluta) e system prompt di fallback. Max 4000 tokens per articolo. - **Import CSV Massivo:** Upload CSV con formato `Categoria;Titolo;URL_Immagine` e pianificazione automatica con intervalli configurabili (articoli/giorno, ore tra un articolo e l'altro). - **Piano Multicategoria:** Fetch articoli dal Master pool con distribuzione su più categorie. - **Pipeline Media (Immich):** Ricerca semantica immagini su Immich, download/upload nella Media Library, generazione automatica Alt Text. - **Meta Description AI:** Generazione automatica meta description SEO (Yoast) tramite GPT, con supporto multilingua (IT, EN, FR, ES, DE). - **Cron:** Ogni 15 minuti, cerca 1 post `draft`/`future` con meta `_aag_needs_content = 1` e lo completa. - **Logging:** Sistema di log con rotazione (max 100 entries), visualizzabile dall'admin WP. **Menu Admin:** - MCL Generator → Impostazioni (API Key OpenAI, Prompt, URL Master, Plausible) - MCL Generator → Stato & Manuale (esecuzione cron manuale) - MCL Generator → Log - MCL Generator → Pubblicati (ultimi 20 articoli generati) - MCL Generator → CSV Import - MCL Generator → Piano Multicat. - MCL Generator → Plausible Stats --- ### 2. Advanced Ads — Monetizzazione Ibrida **File:** `utils/adv/hbagency/core.php`, `utils/adv/hbagency/admin.php`, `utils/adv/taboola/core.php`, `endpoint/hbagency.php` Sistema dual-provider per la gestione della monetizzazione pubblicitaria, con switch dinamico tra HB Agency e Taboola. **HB Agency Mode:** - Registrazione automatica sito via API HB Agency - Sync automatico `ads.txt` remoto via cron (ogni 10 minuti, si auto-disattiva dopo download riuscito) - Iniezione Header Bidding scripts - `ads.txt` servito dinamicamente (rewrite rules, nessun file fisico) **Taboola Mode:** - `ads.txt` statico con entries pre-configurate (26 ad exchange partners) - Loader script asincrono nell'`<head>` - Widget mid-article iniettati dopo il 1°, 3° e 5° paragrafo - Supporto AMP nativo - Flush script nel `<footer>` **Switch Provider:** Configurabile da admin WP o via endpoint REST `/set-ad-provider`. **Menu Admin:** Adv Manager → Selezione provider, registrazione sito HB, download manuale ads.txt. --- ### 3. Engagement & UX **File:** `related-post/functions.php`, `utils/social/functions.php`, `endpoint/social.php` **Related Post Widget:** - Stile fisso HiCo (Stile 25) — design ottimizzato e minificato - Cache tramite Transient (1 ora) per ridurre carico MySQL - Mostra 3 post recenti (esclude il post corrente) - Query ottimizzata: `fields => 'ids'`, `no_found_rows`, nessun meta/term cache - Esclusione configurabile per categoria (default: categoria 13) **Social Buttons (WhatsApp & Telegram):** - CTA full-width iniettate nel contenuto degli articoli - Mappatura per categoria: il Master invia una mappa `categoria → link social` via endpoint REST - Design responsive con icone SVG, effetti hover, ombre - Testo micro-copy + CTA principale configurabile --- ### 4. System & DevOps **File:** `system/functions.php`, `endpoint/system.php`, `endpoint/plugins.php`, `plugins/functions.php` **Plugin Manager Remoto:** | Endpoint | Metodo | Descrizione | |---|---|---| | `/plugins` | GET | Lista completa plugin (nome, versione, stato attivo) | | `/plugins/install` | POST | Installa plugin da URL `.zip` | | `/plugins/activate` | POST | Attiva plugin | | `/plugins/deactivate` | POST | Disattiva plugin | | `/plugins/update` | POST | Aggiorna (disattiva → elimina → reinstalla → riattiva) | | `/plugins/delete` | POST | Elimina plugin | **Utilities di Sistema:** - **Redirect 404 → Homepage:** Redirect 302 automatico per tutte le 404. - **Robots.txt Dinamico:** Generato via PHP (nessun file fisico). Include regole per Googlebot, Bingbot, blocco `/wp-json/`, sitemap dinamica. - **Menu Categorie Automatico:** Aggiunge tutte le categorie con post al menu primario. - **Login Diretto Temporaneo:** Genera link di autologin valido 5 minuti. Rate limiting: max 5 tentativi per IP ogni 15 minuti. - **Full Status:** Endpoint diagnostico per controllo stato completo del sito. --- ### 5. E-A-T & Autori **File:** `utils/scheda-autore/functions.php`, `utils/scheda-autore/core.php`, `utils/scheda-autore/profile-page.php`, `endpoint/scheda-autore.php` Sistema completo per la gestione dell'authorship in ottica Google E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness). **Author Sync:** - Creazione/aggiornamento profili autore da remoto (Master → Child) - Campi extra: Job Title, LinkedIn URL, Twitter/X URL, Avatar remoto custom - Traduzione automatica bio via AI (GPT) per siti multilingua (FR, ES, DE, EN) - Assegnazione autore ai post basata su mappa slug (intenzioni) o mappa ID categoria - Sistema multi-autore per categoria con selezione random **Lock System:** Blocco manuale di un autore su un post specifico per impedire riassegnazioni automatiche future. **Author Box Frontend:** - Card HTML con Schema.org markup (`itemtype="http://schema.org/Person"`) - Avatar (remoto o Gravatar fallback), nome, job title, bio, link social - CSS responsive integrato **ProfilePage JSON-LD:** - Markup strutturato `ProfilePage` sulle pagine `/author/` - Include `hasPart` (articoli recenti) e `agentInteractionStatistic` (conteggio post) - Conforme alle specifiche Google per Structured Data ProfilePage - `sameAs` con link social (LinkedIn, Twitter/X) --- ### 6. Sync & Push **File:** `sync/functions.php`, `endpoint/sync.php`, `push/functions.php`, `endpoint/push.php` **Comunicazione Child → Master (On Publish):** - Notifica automatica al Master con permalink aggiornato quando un post viene pubblicato - Notifica separata per attivare push notification dal Master - Lock system per evitare notifiche duplicate (transient 1 minuto) **Discover MCL Utils:** - Conteggio post schedulati - Recupero IDs post gestiti da Discover - Delete massivo per IDs - RSS custom con immagini (`/latest-posts`) **Push Notifications (Perfecty Push):** - Auto-fix checkbox "Send on Publish" su tutti i post `future` - Correzione automatica post future mancanti al caricamento admin - Endpoint REST per statistiche subscribers, invio notifiche, lista notifiche recenti --- ### 7. Media Manager **File:** `endpoint/media.php` Gestione remota delle immagini in evidenza dei post. **Funzionalità:** - Upload file fisico via `multipart/form-data` - Download e sideload da URL remoto - Sostituzione forzata (elimina vecchia immagine + setta nuova) - Risposta con stato completo: `image_status`, `current_image`, `action_log` --- ## API REST Endpoints ### Namespace `childadmin/v1` (Token: `CHILDMASTER_FIXED_TOKEN`) | Endpoint | Metodo | Modulo | Descrizione | |---|---|---|---| | `/full-status` | GET | System | Stato completo del sito | | `/direct-login` | GET | System | Genera link autologin temporaneo | | `/plugins` | GET | Plugins | Lista plugin installati | | `/plugins/install` | POST | Plugins | Installa plugin da ZIP URL | | `/plugins/activate` | POST | Plugins | Attiva plugin | | `/plugins/deactivate` | POST | Plugins | Disattiva plugin | | `/plugins/update` | POST | Plugins | Aggiorna plugin (reinstall) | | `/plugins/delete` | POST | Plugins | Elimina plugin | | `/sync-author` | POST | E-A-T | Sync profilo autore | | `/set-article-author` | POST | E-A-T | Assegna autore specifico + lock | | `/manage-image` | POST | Media | Upload/replace immagine in evidenza | | `/set-ad-provider` | POST | ADV | Switch provider (hbagency/taboola) | | `/social/update-map` | POST | Social | Aggiorna mappa social per categoria | | `/perfectypush/stats` | GET | Push | Conteggio subscribers | | `/perfectypush/notify` | POST | Push | Invio notifica push | | `/perfectypush/recent-notifications` | GET | Push | Lista notifiche recenti | | `/delete-post` | POST | Sync | Elimina singolo post da remoto | | `hbai_download_ads` | POST | ADV | Forza download ads.txt HB Agency | ### Namespace `childmaster/v1` | Endpoint | Metodo | Auth | Descrizione | |---|---|---|---| | `/incoming-article` | POST | Nessuna | Ricevi articolo dal Master (creazione post) | | `/get-scheduled-articles` | GET | Nessuna | Lista articoli schedulati | | `/delete-scheduled-articles` | POST | Delete Token | Elimina articoli schedulati | | `/get-missed-scheduled-posts` | GET | Nessuna | Lista post con schedule mancato | ### Namespace `discover-mcl-utils/v1` (Token: `CHILDMASTER_DELETE_TOKEN`) | Endpoint | Metodo | Descrizione | |---|---|---| | `/get-scheduled-posts-ids` | POST | IDs post gestiti da Discover | | `/delete-posts-by-ids` | POST | Eliminazione massiva per IDs | ### Namespace `child-utils/v1` | Endpoint | Metodo | Descrizione | |---|---|---| | `/scheduled-posts-count` | GET | Conteggio post schedulati (token dedicato) | ### Namespace `mcl-child-api/v1` | Endpoint | Metodo | Descrizione | |---|---|---| | `/latest-posts` | GET | RSS-like feed con immagini (pubblico) | --- ## Cron Jobs | Hook | Intervallo | Modulo | Descrizione | |---|---|---|---| | `aag_generate_articles_event` | 15 min | Generator | Genera contenuto AI per 1 post in coda | | `immich_auto_featured_cron` | 5 min | Immich | Cerca e setta immagine in evidenza da Immich | | `mcw_publish_missed_posts_event` | 5 min | Check Website | Pubblica post con schedule scaduto (max 3/ciclo) | | `hbai_retry_download_ads_txt_hook` | 10 min | HB Agency | Retry download ads.txt (si auto-disattiva) | I cron sono sfalsati all'attivazione (+0s, +30s, +60s) per evitare sovrapposizioni. --- ## Autenticazione Il plugin utilizza tre livelli di autenticazione via Bearer Token nell'header `Authorization`: | Token | Costante | Utilizzo | |---|---|---| | Token Principale | `CHILDMASTER_FIXED_TOKEN` | Tutti gli endpoint `childadmin/v1` | | Token Delete | `CHILDMASTER_DELETE_TOKEN` | Operazioni distruttive (delete post, delete scheduled) | | Token HB Agency | Hardcoded `123abc` | Endpoint specifico HB Agency | | Token Sync Count | Hardcoded nel callback | Endpoint conteggio schedulati | Tutti i token sono verificati con `hash_equals()` per prevenire timing attacks. --- ## Struttura File ``` child-master-admin/ ├── child-master-admin.php # Entry point, costanti, loader moduli, cron setup ├── patch.php # Patch sicurezza e performance (v2.0) ├── inspector.php # Debug tool (rimuovere in produzione!) │ ├── endpoint/ # REST API route definitions │ ├── generator.php # /incoming-article │ ├── hbagency.php # /hbai_download_ads, /set-ad-provider │ ├── media.php # /manage-image │ ├── plugins.php # /plugins/* │ ├── push.php # /perfectypush/* │ ├── scheda-autore.php # /sync-author, /set-article-author │ ├── social.php # /social/update-map │ └── sync.php # Scheduled articles, delete, RSS │ ├── generator/ # AI Content Generation │ ├── core.php # Cron logic, OpenAI integration │ ├── admin.php # WP Admin pages e metaboxes │ └── tools.php # CSV Import, Multicat planner, Plausible │ ├── plugins/ │ └── functions.php # CRUD plugin da remoto │ ├── push/ │ └── functions.php # Perfecty Push integration & auto-fix │ ├── related-post/ │ └── functions.php # Widget related post (stile HiCo) │ ├── sync/ │ └── functions.php # Child→Master notifications, Discover utils │ ├── system/ │ └── functions.php # 404 redirect, robots.txt, menu, autologin │ └── utils/ ├── adv/ │ ├── hbagency/ │ │ ├── core.php # API HB Agency, ads.txt download, cron │ │ └── admin.php # Admin UI provider switch │ └── taboola/ │ └── core.php # Script loader, mid-article widgets, AMP ├── analytics/ │ └── functions.php # Plausible Analytics custom tracker ├── check-website/ │ └── functions.php # Missed schedule fixer (ogni 5 min) ├── immagini/ │ ├── core.php # Immich API, download, SEO meta gen │ └── admin.php # Admin UI + AJAX search ├── scheda-autore/ │ ├── functions.php # Author box frontend + CSS │ ├── core.php # Sync logic, traduzione bio AI │ └── profile-page.php # JSON-LD ProfilePage structured data └── social/ └── functions.php # WhatsApp/Telegram CTA buttons + CSS ``` --- ## Installazione & Configurazione 1. **Upload:** Caricare la cartella `child-master-admin` in `wp-content/plugins/`. 2. **Attivazione:** Attivare il plugin da WP Admin → Plugin. L'attivazione registra automaticamente tutti i cron jobs e fa il flush delle rewrite rules. 3. **Configurazione Generator:** MCL Generator → inserire OpenAI API Key, URL Master, eventuale Plausible API Key. 4. **Configurazione ADV:** Adv Manager → selezionare provider (HB Agency o Taboola), registrare il sito se HB Agency. 5. **Analytics:** Impostazioni → Analytics MCL → inserire dominio Plausible e referrer. **Dipendenze Plugin (opzionali ma consigliate):** - Perfecty Push (per push notifications) - Yoast SEO (per meta description AI) --- ## Patch di Sicurezza & Performance Il file `patch.php` (v2.0) viene caricato per primo e include: - **Rate Limiting Autologin:** Max 5 tentativi per IP ogni 15 minuti. - **Sanitizzazione Response:** Rimozione header `X-Powered-By` dalle risposte REST. - **Redirect 404:** Con status code corretto per Google (302 temporaneo). - **Logging su File:** Invece di `wp_options`, per ridurre carico DB. - **CSS Frontend Combinato:** Riduce inline styles frammentati. - **Meta Tag Discover:** `max-image-preview:large` per ottimizzazione Google Discover. - **Robots.txt Migliorato:** Generato dinamicamente. - **Ottimizzazione Content Filters e Cron.** --- ## Note di Sicurezza > **⚠️ `inspector.php`** — Questo file è uno strumento di debug **senza protezione**. Chiunque conosca l'URL può visualizzare l'intero codice sorgente del plugin. **Rimuoverlo o proteggerlo in produzione.** > **⚠️ Token hardcoded** — I token di autenticazione sono definiti come costanti nel file principale. Per ambienti ad alta sicurezza, valutare lo spostamento in `wp-config.php` o variabili d'ambiente. > **⚠️ API Keys** — Le credenziali HB Agency e Immich sono definite come costanti PHP. Trattare con la stessa attenzione delle credenziali database. --- *Child Master Admin v120.0 — MCL MEDIA SRL*
⚠️ Zona Pericolosa clicca per espandere