📖 Brief Progetto
Discover Extra è il CMS custom MCL Media (PHP 8.3 + MariaDB 10.11 + Nginx, server Hetzner CPX22 128.140.55.211, pannello admin su cms.mclmedia.eu) che genera siti HTML statici ottimizzati per Google Discover. Gestisce ~24 siti Discover attivi (incluso il nuovo ferraravetro.it), 3 siti Worldfilia, e ~329 siti parking su 12 VPS CX23, monetizzati tramite HB Agency header bidding e affiliazione Amazon, con push notifications VAPID native (~183K subscriber) e analytics Plausible.
Nella sessione del 9 aprile 2026 il lavoro si è concentrato su tre aree principali: il sistema di Piano Editoriale automatizzato, il sistema di push notification boost, e l'avvio di nuovi siti.
**Piano Editoriale (MultiPED v2):** Il MultiPED è stato completamente semplificato — rimossi i campi orario, distanza min/max e dropdown categoria dalla tabella siti. Il backend ora gestisce tutto automaticamente: gli articoli vengono distribuiti random ma ben spaziati nella giornata (oggi: da +30min fino alle 23:00; domani: dalle 06:00 alle 23:00). La categoria viene risolta automaticamente dal Category Resolver, un nuovo engine a 3 livelli: (1) sito verticale → usa sempre quella categoria, (2) sito con top articles 1000+ visite → distribuzione proporzionale pesata, (3) sito senza storico → weighted random dal database parking, max 5 categorie in 5 giorni poi ruota. La pagina Siti ora mostra il campo 'Verticale' editabile inline.
**Push Notification Boost:** Il sistema boost è stato riscritto con logica round-robin. In precedenza i boost venivano assegnati sito per sito durante il confirm_ped, causando esaurimento del budget per i siti confermati per ultimi (bug critico: mt_rand crashava quando min > max, bloccando l'inserimento degli articoli). Ora il confirm_ped crea articoli SENZA boost, e dopo tutti i siti una chiamata separata assign_boosts distribuisce i boost equamente: giro 1 → 1 boost per sito, giro 2 → 1 per sito, ecc. fino al budget (64/giorno). Così tutti i siti hanno almeno N boost. Ottimizzato anche il push_sender: batch da 100→30 e parallelo da 3→2 per VPS, errori curl_0 passati da ~30K a quasi zero (~5 per invio).
**Avvio Sito e Network Boost:** Riscritta la pagina Avvio Sito — mostra solo siti nuovi senza contenuti, selezione fino a 3 categorie dalle top 5 del network, toggle boost (10 push su 27 articoli), genera 27 articoli su 3 giorni (9+9+9). Implementato il sistema Network Boost cross-site: quando il publisher pubblica articoli di un sito in lancio (launch_expires_at attivo), li inserisce nella tabella network_boost. Il builder genera un box 'Da non perdere' con max 3 link della stessa categoria da siti in lancio — HTML statico puro per massimo peso SEO. Il box appare automaticamente nei rebuild degli altri siti e sparisce dopo 5 giorni. ferraravetro.it è stato creato e avviato con 27 articoli (Salute + Giardino) e 10 boost. Golden snapshot aggiornato a 374785564 (con push_sender.php incluso). Pagina Riepilogo Boost aggiunta sotto Analisi. Sessione login portata a 7 giorni, dashboard refresh a 10 secondi.
**Prossimi step:** testare il MultiPED con il boost round-robin (primo test reale dopodomani), verificare che il Network Boost box appaia sugli articoli degli altri siti, risolvere l'interstitial HB Agency su mobile per i nuovi siti, implementare la pagina Guadagni HB Agency.
Nella sessione del 9 aprile 2026 il lavoro si è concentrato su tre aree principali: il sistema di Piano Editoriale automatizzato, il sistema di push notification boost, e l'avvio di nuovi siti.
**Piano Editoriale (MultiPED v2):** Il MultiPED è stato completamente semplificato — rimossi i campi orario, distanza min/max e dropdown categoria dalla tabella siti. Il backend ora gestisce tutto automaticamente: gli articoli vengono distribuiti random ma ben spaziati nella giornata (oggi: da +30min fino alle 23:00; domani: dalle 06:00 alle 23:00). La categoria viene risolta automaticamente dal Category Resolver, un nuovo engine a 3 livelli: (1) sito verticale → usa sempre quella categoria, (2) sito con top articles 1000+ visite → distribuzione proporzionale pesata, (3) sito senza storico → weighted random dal database parking, max 5 categorie in 5 giorni poi ruota. La pagina Siti ora mostra il campo 'Verticale' editabile inline.
**Push Notification Boost:** Il sistema boost è stato riscritto con logica round-robin. In precedenza i boost venivano assegnati sito per sito durante il confirm_ped, causando esaurimento del budget per i siti confermati per ultimi (bug critico: mt_rand crashava quando min > max, bloccando l'inserimento degli articoli). Ora il confirm_ped crea articoli SENZA boost, e dopo tutti i siti una chiamata separata assign_boosts distribuisce i boost equamente: giro 1 → 1 boost per sito, giro 2 → 1 per sito, ecc. fino al budget (64/giorno). Così tutti i siti hanno almeno N boost. Ottimizzato anche il push_sender: batch da 100→30 e parallelo da 3→2 per VPS, errori curl_0 passati da ~30K a quasi zero (~5 per invio).
**Avvio Sito e Network Boost:** Riscritta la pagina Avvio Sito — mostra solo siti nuovi senza contenuti, selezione fino a 3 categorie dalle top 5 del network, toggle boost (10 push su 27 articoli), genera 27 articoli su 3 giorni (9+9+9). Implementato il sistema Network Boost cross-site: quando il publisher pubblica articoli di un sito in lancio (launch_expires_at attivo), li inserisce nella tabella network_boost. Il builder genera un box 'Da non perdere' con max 3 link della stessa categoria da siti in lancio — HTML statico puro per massimo peso SEO. Il box appare automaticamente nei rebuild degli altri siti e sparisce dopo 5 giorni. ferraravetro.it è stato creato e avviato con 27 articoli (Salute + Giardino) e 10 boost. Golden snapshot aggiornato a 374785564 (con push_sender.php incluso). Pagina Riepilogo Boost aggiunta sotto Analisi. Sessione login portata a 7 giorni, dashboard refresh a 10 secondi.
**Prossimi step:** testare il MultiPED con il boost round-robin (primo test reale dopodomani), verificare che il Network Boost box appaia sugli articoli degli altri siti, risolvere l'interstitial HB Agency su mobile per i nuovi siti, implementare la pagina Guadagni HB Agency.
📁 File Progetto
2 file
📊 Avanzamento
99%
✅ To Do List
72/80
✓
Setup server Hetzner CPX22 con PHP 8.3 + Nginx + SQLite
✓
Builder v1-v7: template articolo con NewsArticle schema, chapô, curiosity box, link inline, correlati, pagine statiche, categorie multiple, menu dropdown, footer redesign, top-links, internal linking cronologico
✓
Generator: generazione titoli + articoli via OpenAI GPT-4.1-mini con prompt ottimizzato Discover
✓
Modulo Immich: ricerca immagini, anti-duplicato, alt text via OpenAI, filename SEO
✓
Pannello admin cms.mclmedia.eu: dashboard, gestione siti, generazione, recycler, settings, documentazione (26 sezioni v3.0), cache management
✓
Audit SEO completo vs archedfo.it e implementazione fix
✓
Builder v5: BreadcrumbList, ProfilePage, WebSite+Organization schema, font sistema, logo SVG auto, og:image homepage, article:tag
✓
Builder v6: formato URL archedfo (/giorno-id-slug/), funzione article_url_path() centralizzata
✓
Builder v8: formato permalink catdate, generazione redirects.map, pulizia cartelle postname orfane, migrazione 353 siti, recovery ~95K immagini da Immich
✓
Modulo Cloudflare API: creazione zona, DNS, page rule www/non-www, SSL, Security High, Bot Fight Mode
✓
Deploy automatico: Nginx config + Cloudflare Origin Certificate SSL (15 anni)
✓
Modulo HB Agency: registrazione sito via API, download ads.txt, script prebid injection
✓
Cron HB Agency ads.txt: ogni 10 min se manca, ogni 2 giorni se presente
✓
Generator v2: Immich integrato dopo ogni articolo, retry, rebuild automatico
✓
Logo Generator v3: 10 stili × 5 varianti PNG con GD + Montserrat/Inter, brand color awareness
✓
Tagline generator: H1 + subtitle dinamici basati su categorie del sito
✓
Plausible analytics tag integrato in tutte le pagine
✓
HB Agency script integrato nell'head di tutte le pagine con JS delay (carica dopo interazione/5s)
✓
WebP conversion: importer, Immich download, batch converter (1110 immagini, 56MB risparmiati)
✓
Endpoint API su gestionale-wf (api_cms_products.php) per esporre prodotti WF al CMS
✓
Tipo sito WF nel form creazione siti + colonna site_type nel DB
✓
Pagina Prodotti WF: import automatico da gestionale-wf con check HTTP siti online + fetch og:image da JSON-LD
✓
Generator WF: 3 articoli per prodotto (social proof, funzionalità, evergreen) con nome display pulito
✓
10 varianti banner display professionali con CSS dedicato e selezione random
✓
Tracking CTR banner: pixel 1px impressioni + JS onclick click, tabella wf_banner_events
✓
Pagina Analisi Banner WF: CTR per variante, posizione, prodotto, trend giornaliero
✓
Skip HB Agency per siti WF (no ads.txt, no prebid script)
✓
Web Push Notifications: modulo VAPID nativo (engine/push.php), zero dipendenze, payload Perfecty-compatibile
✓
Pagina Nuovo Articolo: form admin + AI generation + Immich + publish asincrono + push network/sito
✓
Publisher v2: invio push automatico alla pubblicazione di articoli scheduled, tracking article_id e push_mode
✓
Widget iscrizione push: popup modale compatto + service worker Perfecty-compatibile in 3 path + esclusione iOS
✓
Dashboard Push nel pannello admin: invio manuale, stats, log, gestione VAPID, tab Discover/Parking separati
✓
Fix PageSpeed: fetchpriority=high, overflow-x:hidden ads, location /img/ nginx, ARIA landmarks, contrast fixes (score 99/96/100/100)
✓
Importer WordPress v2.1: migrazione con WebP conversion, articoli, categorie, push subscribers, VAPID keys
✓
Plugin MCL Exporter v2.0: REST API endpoint per migrazione automatizzata parking
✓
Fix layout HB Agency su mobile: CSS containment + MutationObserver + iframe TCF/GPP nascosti
✓
Push Network: funzione push_send_network() per inviare a tutti i siti + UI con toggle sito/rete
✓
MCL Ads Manager: strategie per sito/articolo (full/light/native-only/no-ads/amazon + custom), auto-parse zone HB, pannello admin con rebuild+deploy in un click
✓
Stripe Premium: checkout €1.99/mese singolo + €7.99/mese network, webhook, pagina /premium/ su ogni sito, cookie-based no-ads, verifica token asincrona
✓
Cache Management: pagina admin per purge Cloudflare singola/bulk via API
✓
Internal linking: cronologico per categoria (deterministico), top-links card dopo primo paragrafo (2 prominenti + 4 inline)
✓
Pagina Pubblicazioni: grid 2 colonne con card colorate per categoria, stats header
✓
Infrastruttura parking: VPS parking-01 configurata, snapshot golden-parking (ID 373225296), config CMS con costanti parking
✓
Sistema migrazione parking completo: parking_importer.php, pagina Migrazione Parking, pagina Parcheggio, tabella parking_servers con auto-scaling
✓
Migrazione batch ~330 siti WordPress al parking (12 VPS CX23, 50 siti/VPS, costo €0.14/sito/mese)
✓
Pagina Migra al Parking: sposta siti attivi da VPS dedicata CPX22 al parking condiviso CX23 con eliminazione automatica VPS Hetzner
✓
Nuova dashboard con card a griglia per sito + timeline attività + API dashboard-live.php
✓
Ottimizzazione mobile globale: file mobile.css unico con fix responsive per tutte le pagine admin
✓
Pubblicazione articoli asincrona: article-create.php salva come scheduled, publisher.php fa rebuild/deploy/indexing/push in background
✓
Push distribuito su VPS remote: push_sender.php v1.1 su 32 VPS, PHP 8.3-cli, batch=30, max 2 paralleli/VPS, ~8 min per ~183K sub, errori quasi azzerati
✓
Modulo Amazon monoprodotto: PA-API 5.0 OffersV2, pagina admin Amazon, ricerca/preview/genera, box CTA HTML con prezzo+sconto+bottone, cover GD con scontorno, categoria 'Prodotti e Offerte' automatica, campo prezzo manuale fallback
✓
Cover Amazon: 20 template editoriali WOW con PHP/GD + helper radial/diagonal gradient
✓
3 box CTA Amazon per articolo (dopo intro, prima di Pro/Contro, alla fine) + sticky bar con IntersectionObserver
✓
Strategia ads 'amazon': HB Agency completamente disattivato per articoli Amazon, ads_strategy='amazon' auto-assegnata
✓
Native Amazon Widget: widget proprietario in fondo all'articolo con 3 sezioni (stessa categoria/stessa macro/ultimi dal network), card con cover+titolo+dominio, link diretti cross-sito per backlink
✓
Sistema scheduling Amazon automatico: 100 categorie merceologiche (10 macro-settori), 5 tabelle DB, assegnazione categoria per sito con rotazione 21gg e storico, pagina admin Programmazione Amazon con 4 tab
✓
Cron Amazon: amazon_cron.php con 3 modalità (plan/run/expire), linking interno + cross-sito, anti-duplicato ASIN, ~$30/mese per 329 siti
✓
FAQ + Product JSON-LD per articoli Amazon: 5 FAQ generate dall'AI, parser dedicato, HTML accordion, FAQPage + Product schema nel builder
✓
MultiPED v2 con category resolver automatico, distribuzione orari random, boost round-robin separato
✓
Migrazione database da SQLite a MariaDB 10.11: schema 23 tabelle, migrazione ~290K righe, conversione 32 file PHP, zero downtime, tutti i cron funzionanti in parallelo
✓
Documentazione v3.0: aggiornata per MySQL, nuove sezioni Amazon/Parking/Crontab, credenziali MariaDB, comandi aggiornati, storico migrazione
✓
Restyling pagina Programmazione: dashboard KPI (5 card), stato processi Worker/Publisher con LED, barra progresso, filtro solo Discover, ETA completamento
✓
Log migliorati: PED worker e Publisher loggano 'Nessun articolo da scrivere/pubblicare', script log_cleanup.sh con cron mezzanotte (12 log troncati a 500 righe)
✓
Category Resolver: engine a 3 livelli (verticale → top articles pesati → weighted random parking), campo vertical_category in sites, tabella site_assigned_categories, max 5 categorie in 5 giorni
✓
Top Analytics: pagina admin con tab Discover/Parking, cron notturno top 100 pagine 30gg, categorie agganciate, populate parking manuale (51K+ titoli)
✓
PED v2 con strategia Pillar/Spin: 60% nuovi ispirati ai top, 30% spin vincenti, anti-duplicato ultimi 30, box approfondimento pillar nell'HTML
✓
Pagina Riepilogo Boost: stato publisher cron, KPI, prossimi boost, boost inviati, errori
✓
Pagina Avvio Sito: selezione fino a 3 categorie top, 27 articoli su 3 giorni, toggle boost (10/27), launch_expires_at per 5 giorni
✓
Network Boost cross-site: box 'Da non perdere' HTML statico con max 3 link stessa categoria da siti in lancio, tabella network_boost, scadenza automatica 5 giorni
✓
Boost round-robin: assign_boosts separato dal confirm_ped, distribuzione equa su tutti i siti (1 boost/sito per round fino al budget)
✓
Golden snapshot Hetzner aggiornato a 374785564 con push_sender.php pre-installato
✓
Ottimizzazione push: batch da 100→30, parallelo da 3→2 per VPS, errori curl_0 da ~30K a ~5 per invio
Pagina Guadagni HB Agency: cron sync API + tabella hb_revenues + dashboard con KPI/grafico/tabella top siti (prompt dettagliato pronto: PROMPT-guadagni-hb-agency.md)
Articoli multiprodotto Amazon ('I 5 migliori...') con selezione N prodotti e cover griglia
Migrazione da PA-API 5.0 a Creators API Amazon (PA-API deprecata 30 aprile 2026)
Restyling pannello admin: tema chiaro Google Material (Concept A approvato), prompt dettagliato pronto (PROMPT-RESTYLING.md)
Integrazione Plausible via API/SSH per aggiunta automatica siti ad analytics.mclmedia.eu
Test ingresso Google Discover con siti CMS vs siti WordPress
Configurare chiavi Stripe in Impostazioni e testare flusso premium end-to-end
Migrare i ~20 siti Discover attivi al parking tramite pagina Migra al Parking ed eliminare VPS CPX22 dedicate
📝 Note
## Struttura file sul server
```
/var/www/cms/ ← CMS engine + admin
/admin/ ← Pannello web (PHP-FPM)
/assets/
mobile.css ← Override responsive globale per tutte le pagine admin
/pages/ ← dashboard, sites, site-detail, settings, generate, recycler, deploy-status, import, wf-products, wf-generate, wf-analytics, amazon, amazon-scheduler, article-new, push, ads-manager, caching, documentazione, analytics, programmazione, multi-ped, parking-import, parking, migrate, tools, top-analytics, boost-overview, guadagni (DA CREARE)
/api/ ← article-create.php, amazon-api.php, ads-rebuild.php, push-subscribe.php, push-send.php, dashboard-live.php, stripe-webhook.php, premium-checkout.php, premium-verify.php, cache-api.php, analytics-api.php, parking-api.php, migrate-api.php, ped-api.php
inspector.php ← Snapshot CMS tar.gz (?key=mcl2026)
wf_tracker.php ← Endpoint tracking banner (pixel + click)
/engine/ ← Moduli core
builder.php ← v8 — catdate, redirects.map, CSS Amazon, pillar box, network boost box
network_boost.php ← Box 'Da non perdere' cross-site per siti in lancio
category_resolver.php ← Risoluzione automatica categoria (verticale/top articles/weighted random)
amazon_api.php ← PA-API 5.0 OffersV2, AWS Sig v4
amazon_generator.php ← Prompt AI monoprodotto con 5 FAQ, cover GD 20 template
amazon_cron.php ← Cron engine: plan (4:00) + run (*/5 8-20 LIMIT 15) + expire (3:00)
logo_generator.php ← 10 stili × 5 varianti PNG con GD
generator.php ← v2 — genera articoli OpenAI + Immich
generator_functions.php ← generate_titles_v2() con pesi 60/30, spin, anti-duplicato
generator_wf.php ← Genera articoli WF: 3 per prodotto
publisher.php ← v5 — cron pubblicazione + push distribuito + network_boost insert per siti in lancio
ped_worker.php ← Cron ogni minuto, 1 articolo/esecuzione
push.php ← Web Push VAPID nativo
push_fast.php ← v4 — Push distribuito SSH, batch=30, max 2 paralleli/VPS
push_sender.php ← v1.1 su ogni VPS (retry 2 round)
ads_manager.php ← Funzioni core ads
hb_parser.php ← Parser zone HB
hbagency.php ← HB Agency API
stripe_premium.php ← Stripe API
importer.php ← v2.1 — Import WP con WebP
parking_importer.php ← v1.0 — Migrazione parking
immich.php ← Modulo immagini + WebP
cloudflare.php ← API Cloudflare
deploy.php ← v2 — Deploy Nginx + Origin Certificate + cron SSL retry
hetzner.php ← API Hetzner (HETZNER_SNAPSHOT_ID = 374785564)
brand.php ← Header/footer/menu/push widget
indexing.php ← Google Indexing API
schedule.php ← Scheduler recycler giornaliero
recycler.php ← URL recycler
analytics_cron.php ← Cron analytics + top_articles
log_cleanup.sh ← Pulizia log mezzanotte
/tools/ ← Script operativi (rebuild_one, dns_check, assign_images, etc.)
/config/
config.php ← mcl_db() MySQL PDO, mcl_setting(), CF keys, PARKING constants
init_db.php ← v4 — Migration checks via information_schema
migrate_categories.php ← vertical_category + site_assigned_categories
migrate_network_boost.php ← network_boost + launch_expires_at
migrate_top_articles.php ← top_articles table
```
## Database
MariaDB 10.11 — migrato da SQLite il 7 aprile 2026
- DB: mcl_cms, User: mcl@localhost, Pass: McL2026ExtraDB
- Tabelle nuove (9 aprile): top_articles, site_assigned_categories, network_boost
- Campi nuovi (9 aprile): sites.vertical_category, sites.launch_expires_at
- Connessione: mcl_db() in config.php restituisce PDO MySQL
## Piano Editoriale — Flusso attuale
1. MultiPED: seleziona siti + numero articoli, clicca Genera Titoli
2. Category Resolver determina automaticamente la categoria per ogni sito
3. generate_titles_v2: 60% nuovi (ispirati ai top), 30% spin, anti-duplicato
4. Conferma: articoli creati SENZA boost, distribuiti random nella giornata
5. assign_boosts: distribuzione round-robin (1 boost/sito per round fino al budget)
6. PED Worker: scrive contenuti in background
7. Publisher (*/3 min): pubblica, rebuild, deploy, push, indexing
## Push Notification — Parametri attuali
- PUSH_BATCH_SIZE = 30 (era 100)
- PUSH_MAX_PARALLEL_PER_VPS = 2 (era 3)
- Budget boost giornaliero: 64
- Slot intervallo: 15 minuti
- ~183K subscriber su ~350 siti
- Errori curl_0 quasi azzerati dopo ottimizzazione
## Crontab completo
```
* * * * * php8.3 /var/www/cms/engine/ped_worker.php >> /tmp/mcl-ped-session.log 2>&1
*/3 * * * * php8.3 /var/www/cms/engine/publisher.php >> /var/log/mcl-publisher.log 2>&1
*/3 7-23 * * * php8.3 /var/www/cms/engine/recycler.php >> /var/log/mcl-recycler.log 2>&1
0 6 * * * php8.3 /var/www/cms/engine/schedule.php >> /var/log/mcl-schedule.log 2>&1
0 4 * * * php8.3 /var/www/cms/engine/amazon_cron.php plan >> /var/log/mcl-amazon-plan.log 2>&1
*/5 8-20 * * * php8.3 /var/www/cms/engine/amazon_cron.php run >> /var/log/mcl-amazon-run.log 2>&1
0 3 * * * php8.3 /var/www/cms/engine/amazon_cron.php expire >> /var/log/mcl-amazon-expire.log 2>&1
*/10 * * * * php8.3 /var/www/cms/engine/hbagency.php --cron-ads >> /var/log/mcl-hb-cron.log 2>&1
*/30 * * * * php8.3 /var/www/cms/engine/deploy.php --cron-ssl >> /var/log/mcl-ssl-cron.log 2>&1
0 0 * * * /var/www/cms/engine/log_cleanup.sh >> /var/log/mcl-log-cleanup.log 2>&1
0 3 * * * php8.3 /var/www/cms/engine/analytics_top_cron.php >> /var/log/mcl-top-analytics.log 2>&1
```
## CRITICO: builder.php righe 2-3
```php
require_once __DIR__ . '/logo_generator.php';
require_once __DIR__ . '/network_boost.php';
```
## CRITICO: deploy con rsync
rsync --delete DEVE avere --exclude='img/' — le immagini sono gestite separatamente.
## Sito ferraravetro.it (nuovo, 9 aprile)
- VPS: 178.104.156.157 (Hetzner ID 126248008)
- Zone CF: 36d60ea55302845a0e58c45f8cf6988f
- HB Agency: ID 39943, attualmente ads_strategy='no-ads' (interstitial mobile da risolvere)
- SSL: pending propagazione DNS
- 27 articoli avviati (Salute + Giardino), 10 boost
📜 Changelog
Sistema boost push completamente riscritto con logica round-robin: confirm_ped ora crea articoli SENZA boost, nuova azione assign_boosts distribuisce equamente (giro 1 → 1 boost/sito, giro 2 → 1/sito, ecc. fino al budget 64/giorno). Fix bug critico mt_rand($min > $max) che bloccava l'inserimento articoli quando il budget boost era esaurito. Ottimizzato push_sender: batch da 100→30, parallelo da 3→2 per VPS — errori curl_0 passati da ~30K a ~5 per invio
2026-04-09 18:00 · claude
Category Resolver + MultiPED v2 + Top Analytics: implementato engine category_resolver.php a 3 livelli (verticale/top articles pesati/weighted random parking), campo vertical_category editabile in pagina Siti e site-detail, tabella site_assigned_categories. MultiPED semplificato: rimossi orario/distanza/dropdown categoria — il backend gestisce tutto. Top Analytics con cron notturno e populate parking (51K+ titoli). PED v2 con generazione titoli 60% nuovi + 30% spin + box pillar HTML
2026-04-09 15:00 · claude
Avvio Sito + Network Boost cross-site: riscritta pagina Avvio Sito (27 articoli su 3 giorni, selezione categorie top 5, toggle boost 10/27). Network Boost: box 'Da non perdere' HTML statico nel builder con link stessa categoria da siti in lancio, tabella network_boost, publisher inserisce articoli automaticamente, scadenza 5 giorni. Creato ferraravetro.it (VPS 178.104.156.157, HB Agency ID 39943). Pagina Riepilogo Boost sotto Analisi. Golden snapshot aggiornato a 374785564
2026-04-09 14:00 · claude
Pulizia operativa: 38 record DNS parking fixati via Cloudflare API (puntavano a OVH vecchio), 99 script /tmp/ analizzati e utili spostati in /var/www/cms/tools/, pagina admin Tools con esecuzione AJAX e log streaming. Sessione login portata a 7 giorni (da 24 min). Dashboard refresh portato a 10 secondi (da 30s). Calendario Editoriale v4 con 3 viste (Timeline/Siti/Lista)
2026-04-09 10:00 · claude
Migrazione permalink catdate completata su tutti i 353 siti: builder.php v8 con case 'catdate' in article_url_path(), generazione redirects.map in rebuild_site(), pulizia cartelle postname orfane. Aggiunto 'category' alle SELECT di publisher.php, analytics_cron.php, recycler.php. Script migrate_catdate.php e deploy_catdate.php v2 (preflight map_hash su VPS, rsync --delete --exclude='img/', CF purge, verifica URL). sophiestique.it: 506K click Discover ora serviti nativamente senza redirect. Rimossa regola Nginx WordPress inversa su sophiestique.it
2026-04-08 18:00 · claude
Recovery ~95K immagini perse durante deploy (rsync --delete aveva cancellato /img/ sulle VPS). Creato recover_images.php v2 con curl_multi (50 richieste parallele a Immich, no OpenAI, ~200 img/min). Recovery completato, immagini deployate su tutte le VPS. Fix permanente: deploy_catdate.php ora usa --exclude='img/'. Inspector page creata su cms.mclmedia.eu/admin/inspector.php per snapshot CMS
2026-04-08 19:30 · claude
Migrazione completa database da SQLite a MariaDB 10.11: installato MariaDB sul server CMS, creato schema MySQL (23 tabelle), migrati ~290K righe (104K articoli, 183K push subscriber) in 25 secondi con verifica integrità 100%, convertiti 32 file PHP, riscritto config.php con PDO MySQL e timezone Europe/Rome. Backup SQLite preservato. Risolto definitivamente il problema 'database is locked'
2026-04-07 21:30 · claude
Restyling pagina Programmazione v3: dashboard KPI con 5 card, stato processi Worker/Publisher con dot LED, filtro solo Discover. Documentazione aggiornata a v3.0 con 26 sezioni. Log migliorati con cleanup cron mezzanotte
2026-04-07 22:00 · claude
SEO dati strutturati per articoli Amazon: FAQPage JSON-LD + Product JSON-LD. Pannello Defaults globali in MultiPED
2026-04-06 19:00 · claude
Sistema Amazon Parking completo: cron engine amazon_cron.php con 3 modalità, 100 categorie merceologiche, pagina admin Programmazione Amazon. 329 siti assegnati. Costo ~$30/mese
2026-04-06 17:00 · claude
Native Amazon Widget + sticky bar + strategia ads 'amazon' con HB Agency disattivato
2026-04-06 15:00 · claude
Cover Amazon v2: 20 template editoriali PHP/GD. 3 box CTA per articolo
2026-04-06 13:00 · claude
Modulo Amazon completo deployato: PA-API 5.0 con OffersV2, pagina admin Amazon, primo test Fire TV Stick HD su enjoyanimazione.it
2026-04-06 11:00 · claude
ℹ️ Info
Server
Hetzner CPX22 — 128.140.55.211
OS
Ubuntu 24.04
PHP
8.3
Web Server
Nginx 1.24.0
Database
MariaDB 10.11 — DB: mcl_cms, User: mcl@localhost, Pass: McL2026ExtraDB
Database Backup SQLite
/var/www/cms-backup-sqlite/data/cms.db
Admin Panel
https://cms.mclmedia.eu
Admin Password
mcl2026
Admin Session
7 giorni (gc_maxlifetime + cookie_lifetime = 604800)
CMS Inspector
https://cms.mclmedia.eu/admin/inspector.php?key=mcl2026 — scarica snapshot tar.gz del CMS
Sito Test WF
https://sitotest.mclmedia.eu
Sito Live Discover
https://www.sophiestique.it
Siti Attivi CMS
~24 siti Discover attivi su VPS CPX22 dedicate + 3 siti WF + ~329 siti in parking su 12 VPS CX23
Permalink Format
catdate — /%category%/%year%/%monthnum%/%day%/%postname%/ (migrato da postname l'8 aprile 2026)
Parking VPS
12 VPS CX23 (parking-01 a parking-12), max 50 siti/VPS, ~€48/mese totale
Parking Snapshot
golden-parking — ID 373225296
Parking Max Sites
50 siti per VPS (aggiornato da 20)
Golden Snapshot Discover
ID 374785564 — CPX22 con push_sender.php incluso (aggiornato 9 aprile 2026)
Plugin MCL Exporter
v2.0 — endpoint REST /wp-json/mcl-exporter/v1/export?key=mclmedia2026parkingkey
Gestionale WF API
https://gestionale-wf.mclmedia.eu/api_cms_products.php
WF API Key
MCL_CMS_WF_2026
Cloudflare Email
info@mclmedia.it
HB Agency User ID
11797
HB Agency API Key
0e63bcb2-56ba-47f8-b073-23a7f9461bb7
HB Agency API Secret
7a307f08-4334-417a-ac88-a70633393fb5
HB Agency Report API
GET https://pubapi.hbagency.ai/publisher/report?dateFrom=DD/MM/YYYY&dateTo=DD/MM/YYYY
Immich
https://immaginimcl.it
Plausible
https://analytics.mclmedia.eu
Push API Endpoint
https://cms.mclmedia.eu/api/push-subscribe.php
Push System
Distribuito su 32 VPS — push_sender.php v1.1 (con retry 2 round) + PHP 8.3-cli su ogni VPS, batch=30 curl_multi, max 2 paralleli/VPS, ~8 min per ~183K sub, errori curl_0 quasi azzerati
Push Subscribers
~183K totali
Push Boost Budget
64/giorno, slot ogni 15 min (06:00-23:00), round-robin su tutti i siti
Amazon PA-API
PA-API 5.0 con OffersV2 — Access Key AKPAL0AMY61775366303, Partner Tag mclmedia-21, marketplace www.amazon.it
Amazon PA-API Deprecation
30 aprile 2026 — migrare a Creators API
Amazon Scheduler
329 siti parking con categoria assegnata, 100 categorie merceologiche, cron plan 4:00 + run */5 8-20 + expire 3:00, LIMIT 15 per ciclo, ~$30/mese GPT-4.1-mini
Amazon Cron
plan (4:00) → run (*/5 8-20, LIMIT 15) → publisher (*/3) → live
Amazon Schema
Product JSON-LD + FAQPage JSON-LD (5 FAQ) per articoli con amazon_asin
Documentazione
Pagina admin Documentazione v3.0 — 26 sezioni, aggiornata 7 aprile 2026
Ads Manager
Pagina admin ?page=ads-manager — strategie ads per sito/articolo + zone HB + premium Stripe + strategia 'amazon' (zero HB)
Stripe Webhook URL
https://cms.mclmedia.eu/admin/api/stripe-webhook.php
Stripe
Non ancora configurato — chiavi da inserire in Impostazioni
PageSpeed Scores
Performance 99, Accessibility 96, Best Practices 100, SEO 100
Hetzner Limit
50/50 server — richiesta aumento a 100 pendente
Mobile CSS
admin/assets/mobile.css — override responsive globale per tutte le pagine admin
Log Cleanup
Cron mezzanotte — log_cleanup.sh tronca 12 file log a 500 righe
Migrazione MySQL
Completata 7 aprile 2026 — 23 tabelle, ~290K righe, 32 file PHP convertiti
Migrazione Catdate
Completata 8 aprile 2026 — 353 siti migrati, ~95K immagini recuperate da Immich, deploy su tutte le VPS
Nginx VPS map_hash
map_hash_bucket_size 256 + map_hash_max_size 4096 su tutte le ~20 VPS
Dashboard Refresh
10 secondi (aggiornato da 30s il 9 aprile 2026)
🛠 Tech Stack
🔗 Link
📘 README
Nessun README. Usa "Copia README" per farlo generare da Claude.
⚠️ Zona Pericolosa
clicca per espandere