claude-plugin-wordpress-manager 2.12.2 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +8 -3
- package/CHANGELOG.md +55 -0
- package/docs/GUIDE.md +240 -1
- package/docs/VALIDATION.md +341 -0
- package/docs/plans/2026-03-02-content-framework-architecture.md +612 -0
- package/docs/plans/2026-03-02-content-framework-strategic-reflections.md +228 -0
- package/docs/plans/2026-03-02-content-intelligence-phase2.md +560 -0
- package/docs/plans/2026-03-02-content-pipeline-phase1.md +456 -0
- package/docs/plans/2026-03-02-editorial-calendar-phase3.md +490 -0
- package/docs/validation/.gitkeep +0 -0
- package/docs/validation/dashboard.html +286 -0
- package/docs/validation/results.json +1705 -0
- package/package.json +12 -3
- package/scripts/run-validation.mjs +1132 -0
- package/servers/wp-rest-bridge/build/server.js +16 -5
- package/servers/wp-rest-bridge/build/tools/index.js +0 -9
- package/servers/wp-rest-bridge/build/tools/plugin-repository.js +23 -31
- package/servers/wp-rest-bridge/build/tools/schema.js +10 -2
- package/servers/wp-rest-bridge/build/tools/unified-content.js +10 -2
- package/servers/wp-rest-bridge/build/wordpress.d.ts +0 -3
- package/servers/wp-rest-bridge/build/wordpress.js +16 -98
- package/servers/wp-rest-bridge/package.json +1 -0
- package/skills/wp-analytics/SKILL.md +153 -0
- package/skills/wp-analytics/references/signals-feed-schema.md +417 -0
- package/skills/wp-content-pipeline/SKILL.md +461 -0
- package/skills/wp-content-pipeline/references/content-brief-schema.md +377 -0
- package/skills/wp-content-pipeline/references/site-config-schema.md +431 -0
- package/skills/wp-editorial-planner/SKILL.md +262 -0
- package/skills/wp-editorial-planner/references/editorial-schema.md +268 -0
|
@@ -0,0 +1,612 @@
|
|
|
1
|
+
# Content Framework — Proposta Architetturale di Dettaglio
|
|
2
|
+
|
|
3
|
+
**Data**: 2026-03-02
|
|
4
|
+
**Versione**: 1.0.0
|
|
5
|
+
**Stato**: Fase 3 Implementata — E2E Testata (2026-03-02)
|
|
6
|
+
**Prerequisito**: [Riflessioni Strategiche](2026-03-02-content-framework-strategic-reflections.md)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Sommario Esecutivo
|
|
11
|
+
|
|
12
|
+
Questo documento definisce l'architettura di dettaglio per evolvere il WordPress Manager Plugin in un Content Framework. L'implementazione si basa su **3 schema MD**, **4 nuove/estese skill**, e **zero nuovi MCP tool TypeScript**. L'intera orchestrazione vive nel CLI via prompt + file strutturati.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Fase 1: Content Pipeline Engine
|
|
17
|
+
|
|
18
|
+
### 1.1 Obiettivo
|
|
19
|
+
|
|
20
|
+
Connettere l'output delle Gen* skill (GenCorpComm, GenBrand, GenMarketing) alla pubblicazione WordPress, eliminando il gap manuale tra "contenuto generato" e "contenuto pubblicato".
|
|
21
|
+
|
|
22
|
+
### 1.2 Schema: `content-brief.schema.md`
|
|
23
|
+
|
|
24
|
+
Questo schema definisce il formato di scambio tra Gen* e WordPress. È un file Markdown con frontmatter YAML che Claude legge per decidere come pubblicare.
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
---
|
|
28
|
+
# Content Brief Schema v1.0
|
|
29
|
+
brief_id: "BRF-2026-001"
|
|
30
|
+
created: "2026-03-15T10:00:00Z"
|
|
31
|
+
status: draft | ready | published | archived
|
|
32
|
+
|
|
33
|
+
# Source — quale Gen* skill ha prodotto il contenuto
|
|
34
|
+
source:
|
|
35
|
+
skill: gencorpcomm # gencorpcomm | genmarketing | manual
|
|
36
|
+
domain: content_marketing # dal dominio GenCorpComm
|
|
37
|
+
session_id: "abc-123" # per tracciabilità
|
|
38
|
+
|
|
39
|
+
# Target — dove pubblicare
|
|
40
|
+
target:
|
|
41
|
+
site_id: opencactus # id dal WP_SITES_CONFIG
|
|
42
|
+
content_type: post # post | page
|
|
43
|
+
status: draft # draft | publish | future
|
|
44
|
+
scheduled_date: null # ISO 8601 se status=future
|
|
45
|
+
categories: [blog, seo]
|
|
46
|
+
tags: [cactus-water, wellness]
|
|
47
|
+
|
|
48
|
+
# Content Parameters — passati a wp-content per la creazione
|
|
49
|
+
content:
|
|
50
|
+
title: ""
|
|
51
|
+
excerpt: ""
|
|
52
|
+
featured_image: null # URL o media library ID
|
|
53
|
+
author: null # WP user ID, null = default
|
|
54
|
+
|
|
55
|
+
# Distribution — canali post-pubblicazione
|
|
56
|
+
distribution:
|
|
57
|
+
channels: [] # linkedin | twitter | mailchimp | buffer
|
|
58
|
+
adapt_format: true # usare wp-content-repurposing?
|
|
59
|
+
schedule_offset_hours: 2 # pubblicare sui social N ore dopo WP
|
|
60
|
+
|
|
61
|
+
# SEO — parametri per wp-content-optimization
|
|
62
|
+
seo:
|
|
63
|
+
focus_keyword: ""
|
|
64
|
+
meta_description: ""
|
|
65
|
+
schema_type: Article # Article | HowTo | FAQPage
|
|
66
|
+
internal_links: auto # auto | manual | none
|
|
67
|
+
|
|
68
|
+
# Quality Gates
|
|
69
|
+
gates:
|
|
70
|
+
seo_score_min: 70 # minimo SEO score per publish
|
|
71
|
+
readability_min: 60 # minimo readability score
|
|
72
|
+
require_review: false # se true, resta in draft per review umana
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
# Contenuto
|
|
76
|
+
|
|
77
|
+
[Il corpo del contenuto in Markdown, generato da GenCorpComm o scritto manualmente]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Dove vive**: `.content-state/pipeline-active/{brief_id}.brief.md`
|
|
81
|
+
|
|
82
|
+
### 1.3 Schema: `site.config.md`
|
|
83
|
+
|
|
84
|
+
Configurazione persistente per sito — brand voice, canali attivi, parametri di default.
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
---
|
|
88
|
+
# Site Configuration v1.0
|
|
89
|
+
site_id: opencactus
|
|
90
|
+
site_url: "https://opencactus.com"
|
|
91
|
+
last_updated: "2026-03-02"
|
|
92
|
+
|
|
93
|
+
# Brand Voice — alimentato da GenBrand output
|
|
94
|
+
brand:
|
|
95
|
+
tone: professional_warm # dal tone_of_voice spectrum di GenCorpComm
|
|
96
|
+
language: it # lingua principale
|
|
97
|
+
style_notes: |
|
|
98
|
+
Stile divulgativo-scientifico. Evitare iperboli.
|
|
99
|
+
Preferire dati concreti a claim generici.
|
|
100
|
+
Valorizzare il territorio siciliano.
|
|
101
|
+
|
|
102
|
+
# Default Content Parameters
|
|
103
|
+
defaults:
|
|
104
|
+
content_type: post
|
|
105
|
+
status: draft
|
|
106
|
+
categories: [blog]
|
|
107
|
+
author: 1 # WP user ID
|
|
108
|
+
|
|
109
|
+
# Active Distribution Channels
|
|
110
|
+
channels:
|
|
111
|
+
linkedin:
|
|
112
|
+
enabled: true
|
|
113
|
+
profile_id: "buf-profile-123"
|
|
114
|
+
format: article # post | article
|
|
115
|
+
twitter:
|
|
116
|
+
enabled: false
|
|
117
|
+
mailchimp:
|
|
118
|
+
enabled: true
|
|
119
|
+
audience_id: "mc-aud-456"
|
|
120
|
+
segment: newsletter
|
|
121
|
+
|
|
122
|
+
# SEO Defaults
|
|
123
|
+
seo:
|
|
124
|
+
default_schema: Article
|
|
125
|
+
min_score: 70
|
|
126
|
+
auto_internal_links: true
|
|
127
|
+
|
|
128
|
+
# Content Cadence
|
|
129
|
+
cadence:
|
|
130
|
+
posts_per_week: 2
|
|
131
|
+
preferred_days: [tuesday, thursday]
|
|
132
|
+
publish_time: "09:00"
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
# Note Operative
|
|
136
|
+
|
|
137
|
+
Appunti liberi per contesto aggiuntivo che Claude legge prima di ogni operazione su questo sito.
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Dove vive**: `.content-state/{site_id}.config.md`
|
|
141
|
+
|
|
142
|
+
### 1.4 Nuova Skill: `wp-content-pipeline`
|
|
143
|
+
|
|
144
|
+
Questa skill orchestra il flusso brief → publish → distribute.
|
|
145
|
+
|
|
146
|
+
**Trigger**: "pubblica il brief", "processa i brief pronti", "pubblica da GenCorpComm"
|
|
147
|
+
|
|
148
|
+
**Workflow**:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
1. SCAN — Leggi .content-state/pipeline-active/ per brief con status=ready
|
|
152
|
+
2. CONFIG — Leggi .content-state/{site_id}.config.md per parametri sito
|
|
153
|
+
3. VALIDATE — Controlla quality gates (SEO score, readability)
|
|
154
|
+
└─ Se gates non superati → segnala all'utente, resta in draft
|
|
155
|
+
4. PUBLISH — Usa MCP tool esistenti:
|
|
156
|
+
├─ create_content (title, body, excerpt, status, categories, tags)
|
|
157
|
+
├─ sd_inject (schema.org markup dal seo.schema_type)
|
|
158
|
+
└─ assign_terms_to_content (categories + tags)
|
|
159
|
+
5. DISTRIBUTE — Se distribution.channels non vuoto:
|
|
160
|
+
├─ Invoca wp-content-repurposing per adattare formato
|
|
161
|
+
├─ li_create_post / tw_create_tweet / buf_create_update
|
|
162
|
+
└─ mc_create_campaign + mc_set_campaign_content + mc_send_campaign
|
|
163
|
+
6. UPDATE — Aggiorna brief: status=published, aggiungi post_id e post_url
|
|
164
|
+
7. ARCHIVE — Sposta brief in .content-state/pipeline-archive/
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**MCP Tool utilizzati** (tutti già esistenti):
|
|
168
|
+
- `create_content`, `update_content`, `assign_terms_to_content` (da wp-content)
|
|
169
|
+
- `sd_inject` (da wp-structured-data)
|
|
170
|
+
- `li_create_post`, `tw_create_tweet`, `buf_create_update` (da wp-social-email)
|
|
171
|
+
- `mc_create_campaign`, `mc_set_campaign_content`, `mc_send_campaign` (da wp-social-email)
|
|
172
|
+
|
|
173
|
+
**Dipendenze skill**: `wp-content`, `wp-content-optimization`, `wp-content-repurposing`, `wp-social-email`, `wp-structured-data`
|
|
174
|
+
|
|
175
|
+
### 1.5 Flusso Operativo End-to-End
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
Utente: "Genera un articolo sul cactus water per opencactus"
|
|
179
|
+
│
|
|
180
|
+
▼
|
|
181
|
+
GenCorpComm (content_marketing domain)
|
|
182
|
+
→ produce Markdown + metadata
|
|
183
|
+
│
|
|
184
|
+
▼
|
|
185
|
+
Claude scrive: .content-state/pipeline-active/BRF-2026-001.brief.md
|
|
186
|
+
→ frontmatter compilato da GenCorpComm output + site.config.md defaults
|
|
187
|
+
→ status: ready
|
|
188
|
+
│
|
|
189
|
+
▼
|
|
190
|
+
Utente: "pubblica i brief pronti"
|
|
191
|
+
│
|
|
192
|
+
▼
|
|
193
|
+
wp-content-pipeline (skill)
|
|
194
|
+
→ legge brief → valida gates → crea post WP → distribuisce → archivia
|
|
195
|
+
│
|
|
196
|
+
▼
|
|
197
|
+
Output: "Pubblicato: https://opencactus.com/cactus-water-benefici/
|
|
198
|
+
LinkedIn: schedulato in 2h
|
|
199
|
+
Newsletter: campagna creata, pronta per invio"
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Fase 2: Content Intelligence Layer
|
|
205
|
+
|
|
206
|
+
### 2.1 Obiettivo
|
|
207
|
+
|
|
208
|
+
Creare un feedback loop: WP analytics → segnali strutturati → decisioni → azioni. I dati di wp-analytics e wp-search-console alimentano GenSignal per produrre insight azionabili.
|
|
209
|
+
|
|
210
|
+
### 2.2 Schema: `signals-feed.schema.md`
|
|
211
|
+
|
|
212
|
+
Formato di scambio tra wp-analytics e GenSignal. Traduce metriche WP nel formato NormalizedEvent di GenSignal.
|
|
213
|
+
|
|
214
|
+
```yaml
|
|
215
|
+
---
|
|
216
|
+
# Signals Feed Schema v1.0
|
|
217
|
+
feed_id: "FEED-opencactus-2026-03"
|
|
218
|
+
site_id: opencactus
|
|
219
|
+
generated: "2026-03-02T12:00:00Z"
|
|
220
|
+
period: "2026-02-01..2026-02-28"
|
|
221
|
+
source_tools:
|
|
222
|
+
- ga4_report
|
|
223
|
+
- ga4_top_pages
|
|
224
|
+
- ga4_traffic_sources
|
|
225
|
+
- gsc_query_analytics
|
|
226
|
+
- pl_aggregate
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
# Normalized Events
|
|
230
|
+
|
|
231
|
+
## Traffic Signals
|
|
232
|
+
|
|
233
|
+
```yaml
|
|
234
|
+
events:
|
|
235
|
+
- entity_id: "Page:/cactus-water-benefici"
|
|
236
|
+
relation: pageviews
|
|
237
|
+
value: 3240
|
|
238
|
+
unit: count
|
|
239
|
+
ts: "2026-02-28T23:59:59Z"
|
|
240
|
+
delta_pct: +47 # variazione vs periodo precedente
|
|
241
|
+
provenance:
|
|
242
|
+
source_id: "ga4_top_pages"
|
|
243
|
+
site: opencactus
|
|
244
|
+
|
|
245
|
+
- entity_id: "Page:/cactus-water-benefici"
|
|
246
|
+
relation: avg_engagement_time
|
|
247
|
+
value: 185
|
|
248
|
+
unit: seconds
|
|
249
|
+
ts: "2026-02-28T23:59:59Z"
|
|
250
|
+
delta_pct: +12
|
|
251
|
+
provenance:
|
|
252
|
+
source_id: "ga4_report"
|
|
253
|
+
site: opencactus
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Search Signals
|
|
257
|
+
|
|
258
|
+
```yaml
|
|
259
|
+
- entity_id: "Keyword:acqua di cactus"
|
|
260
|
+
relation: search_impressions
|
|
261
|
+
value: 8500
|
|
262
|
+
unit: count
|
|
263
|
+
ts: "2026-02-28T23:59:59Z"
|
|
264
|
+
delta_pct: +120
|
|
265
|
+
provenance:
|
|
266
|
+
source_id: "gsc_query_analytics"
|
|
267
|
+
site: opencactus
|
|
268
|
+
|
|
269
|
+
- entity_id: "Keyword:acqua di cactus benefici"
|
|
270
|
+
relation: search_ctr
|
|
271
|
+
value: 4.2
|
|
272
|
+
unit: percentage
|
|
273
|
+
ts: "2026-02-28T23:59:59Z"
|
|
274
|
+
delta_pct: -8
|
|
275
|
+
provenance:
|
|
276
|
+
source_id: "gsc_query_analytics"
|
|
277
|
+
site: opencactus
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Source Signals
|
|
281
|
+
|
|
282
|
+
```yaml
|
|
283
|
+
- entity_id: "Source:linkedin"
|
|
284
|
+
relation: referral_sessions
|
|
285
|
+
value: 420
|
|
286
|
+
unit: count
|
|
287
|
+
ts: "2026-02-28T23:59:59Z"
|
|
288
|
+
delta_pct: +85
|
|
289
|
+
provenance:
|
|
290
|
+
source_id: "ga4_traffic_sources"
|
|
291
|
+
site: opencactus
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## Performance Signals
|
|
295
|
+
|
|
296
|
+
```yaml
|
|
297
|
+
- entity_id: "Site:opencactus"
|
|
298
|
+
relation: lcp
|
|
299
|
+
value: 2.1
|
|
300
|
+
unit: seconds
|
|
301
|
+
ts: "2026-02-28T23:59:59Z"
|
|
302
|
+
provenance:
|
|
303
|
+
source_id: "cwv_crux_origin"
|
|
304
|
+
site: opencactus
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
# Anomalies & Patterns
|
|
308
|
+
|
|
309
|
+
Sezione che Claude popola dopo aver analizzato i delta:
|
|
310
|
+
|
|
311
|
+
| Entity | Metric | Delta | Pattern Match | Action |
|
|
312
|
+
|--------|--------|-------|---------------|--------|
|
|
313
|
+
| Keyword:acqua di cactus | impressions | +120% | Search Intent Shift | Investigate: content cluster opportunity |
|
|
314
|
+
| Source:linkedin | referrals | +85% | Early-Adopter Surge | Scale: increase LinkedIn posting frequency |
|
|
315
|
+
| Page:/cactus-water-benefici | CTR | -8% | Hype→Utility Crossover | Optimize: refresh meta description, test titles |
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**Dove vive**: `.content-state/signals-feed.md` (sovrascritta ad ogni generazione)
|
|
319
|
+
|
|
320
|
+
### 2.3 Skill Estesa: `wp-analytics` (+ feed generation)
|
|
321
|
+
|
|
322
|
+
Estendere la skill `wp-analytics` con una sezione aggiuntiva per generare il signals feed.
|
|
323
|
+
|
|
324
|
+
**Nuovo workflow step** (aggiunto dopo i 6 step esistenti):
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
Step 7: GENERATE SIGNAL FEED
|
|
328
|
+
├─ Raccogli output da ga4_report, ga4_top_pages, ga4_traffic_sources, gsc_query_analytics
|
|
329
|
+
├─ Calcola delta % vs periodo precedente (leggi feed precedente per baseline)
|
|
330
|
+
├─ Mappa metriche → NormalizedEvent format (entity_id, relation, value, unit, ts, provenance)
|
|
331
|
+
├─ Identifica anomalie (delta > ±30% come soglia default)
|
|
332
|
+
├─ Match pattern GenSignal (Search Intent Shift, Early-Adopter Surge, etc.)
|
|
333
|
+
└─ Scrivi .content-state/signals-feed.md
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**MCP tool utilizzati** (tutti già esistenti):
|
|
337
|
+
- `ga4_report`, `ga4_top_pages`, `ga4_traffic_sources` (da wp-analytics)
|
|
338
|
+
- `gsc_query_analytics`, `gsc_list_pages` (da wp-search-console)
|
|
339
|
+
- `cwv_crux_origin` (da wp-analytics)
|
|
340
|
+
- `pl_aggregate`, `pl_breakdown` (da wp-analytics)
|
|
341
|
+
|
|
342
|
+
### 2.4 Flusso Intelligence Loop
|
|
343
|
+
|
|
344
|
+
```
|
|
345
|
+
Utente: "analizza performance opencactus ultimo mese e genera segnali"
|
|
346
|
+
│
|
|
347
|
+
▼
|
|
348
|
+
wp-analytics (skill estesa)
|
|
349
|
+
→ ga4_report + gsc_query_analytics + pl_aggregate
|
|
350
|
+
→ calcola delta vs mese precedente
|
|
351
|
+
→ genera .content-state/signals-feed.md
|
|
352
|
+
│
|
|
353
|
+
▼
|
|
354
|
+
Claude presenta: "3 anomalie rilevate:
|
|
355
|
+
1. 'acqua di cactus' impressions +120% → Search Intent Shift
|
|
356
|
+
2. LinkedIn referrals +85% → Early-Adopter Surge
|
|
357
|
+
3. CTR -8% su pagina top → possibile title fatigue"
|
|
358
|
+
│
|
|
359
|
+
▼
|
|
360
|
+
Utente: "approfondisci il segnale 1 con GenSignal"
|
|
361
|
+
│
|
|
362
|
+
▼
|
|
363
|
+
GenSignal (gensignal skill)
|
|
364
|
+
→ legge signals-feed.md come input Harvest
|
|
365
|
+
→ produce SignalCard con score, next_actions
|
|
366
|
+
│
|
|
367
|
+
▼
|
|
368
|
+
Claude: "SignalScore: 72 → ACTION_PRIORITY
|
|
369
|
+
Next actions:
|
|
370
|
+
- Creare cluster di 3 articoli su varianti keyword
|
|
371
|
+
- A/B test meta description pagina esistente"
|
|
372
|
+
│
|
|
373
|
+
▼
|
|
374
|
+
Utente: "crea i brief per il cluster"
|
|
375
|
+
│
|
|
376
|
+
▼
|
|
377
|
+
GenCorpComm → 3 file brief.md in pipeline-active/
|
|
378
|
+
→ wp-content-pipeline li pubblica quando pronti
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## Fase 3: Editorial Calendar & Content Planner
|
|
384
|
+
|
|
385
|
+
### 3.1 Obiettivo
|
|
386
|
+
|
|
387
|
+
Pianificare contenuti nel tempo con un file `.state.md` che funge da calendario editoriale, convertibile in post WP schedulati.
|
|
388
|
+
|
|
389
|
+
### 3.2 Schema: `editorial.schema.md`
|
|
390
|
+
|
|
391
|
+
```yaml
|
|
392
|
+
---
|
|
393
|
+
# Editorial Calendar Schema v1.0
|
|
394
|
+
calendar_id: "CAL-2026-03"
|
|
395
|
+
site_id: opencactus
|
|
396
|
+
period: "2026-03-01..2026-03-31"
|
|
397
|
+
created: "2026-02-28"
|
|
398
|
+
last_updated: "2026-03-02"
|
|
399
|
+
status: active # active | archived
|
|
400
|
+
|
|
401
|
+
# Monthly Goals
|
|
402
|
+
goals:
|
|
403
|
+
posts_target: 8
|
|
404
|
+
posts_published: 2
|
|
405
|
+
focus_topics: [cactus-water, sustainability, wellness]
|
|
406
|
+
seo_targets:
|
|
407
|
+
- keyword: "acqua di cactus"
|
|
408
|
+
target_position: top-5
|
|
409
|
+
- keyword: "bevanda zero calorie naturale"
|
|
410
|
+
target_position: top-10
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
# Piano Editoriale — Marzo 2026
|
|
414
|
+
|
|
415
|
+
## Settimana 1 (1-7 Mar)
|
|
416
|
+
|
|
417
|
+
| Data | Titolo | Tipo | Status | Brief ID | Post ID | Canali |
|
|
418
|
+
|------|--------|------|--------|----------|---------|--------|
|
|
419
|
+
| Mar 4 | Acqua di cactus: 5 benefici scientifici | post | published | BRF-2026-001 | 1234 | linkedin, newsletter |
|
|
420
|
+
| Mar 6 | Come il fico d'India diventa bevanda | post | published | BRF-2026-002 | 1235 | linkedin, twitter |
|
|
421
|
+
|
|
422
|
+
## Settimana 2 (8-14 Mar)
|
|
423
|
+
|
|
424
|
+
| Data | Titolo | Tipo | Status | Brief ID | Post ID | Canali |
|
|
425
|
+
|------|--------|------|--------|----------|---------|--------|
|
|
426
|
+
| Mar 11 | Zero calorie, tutto gusto: la scienza | post | ready | BRF-2026-003 | — | linkedin, newsletter |
|
|
427
|
+
| Mar 13 | Sicilia e sostenibilità: la filiera | post | draft | BRF-2026-004 | — | linkedin |
|
|
428
|
+
|
|
429
|
+
## Settimana 3 (15-21 Mar)
|
|
430
|
+
|
|
431
|
+
| Data | Titolo | Tipo | Status | Brief ID | Post ID | Canali |
|
|
432
|
+
|------|--------|------|--------|----------|---------|--------|
|
|
433
|
+
| Mar 18 | [da assegnare — topic da signals] | post | planned | — | — | — |
|
|
434
|
+
| Mar 20 | [da assegnare] | post | planned | — | — | — |
|
|
435
|
+
|
|
436
|
+
## Settimana 4 (22-31 Mar)
|
|
437
|
+
|
|
438
|
+
| Data | Titolo | Tipo | Status | Brief ID | Post ID | Canali |
|
|
439
|
+
|------|--------|------|--------|----------|---------|--------|
|
|
440
|
+
| Mar 25 | [da assegnare] | post | planned | — | — | — |
|
|
441
|
+
| Mar 27 | [da assegnare] | post | planned | — | — | — |
|
|
442
|
+
|
|
443
|
+
# Note
|
|
444
|
+
|
|
445
|
+
- Settimana 3-4: topic da definire basandosi su signals-feed.md del 15 marzo
|
|
446
|
+
- Newsletter quindicinale: raccoglie i 4 post della quindicina precedente
|
|
447
|
+
- LinkedIn: ogni post va distribuito il giorno stesso alle 09:00
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**Dove vive**: `.content-state/{YYYY-MM}-editorial.state.md`
|
|
451
|
+
|
|
452
|
+
### 3.3 Nuova Skill: `wp-editorial-planner`
|
|
453
|
+
|
|
454
|
+
Orchestra la pianificazione editoriale e la conversione piano → brief → post schedulati.
|
|
455
|
+
|
|
456
|
+
**Trigger**: "crea piano editoriale", "aggiorna calendario marzo", "schedula i post pronti"
|
|
457
|
+
|
|
458
|
+
**Workflow**:
|
|
459
|
+
|
|
460
|
+
```
|
|
461
|
+
1. PLAN — Crea/aggiorna calendario editoriale
|
|
462
|
+
├─ Leggi site.config.md per cadence e parametri
|
|
463
|
+
├─ Leggi signals-feed.md per topic suggestions (se disponibile)
|
|
464
|
+
├─ Opzionale: invoca GenMarketing per content calendar strategy
|
|
465
|
+
└─ Scrivi {YYYY-MM}-editorial.state.md
|
|
466
|
+
|
|
467
|
+
2. BRIEF — Converti entry planned/draft → brief files
|
|
468
|
+
├─ Per ogni riga con status=planned e titolo definito:
|
|
469
|
+
│ ├─ Genera content-brief usando site.config.md defaults
|
|
470
|
+
│ ├─ Se brief_id assegnato, aggiorna il brief esistente
|
|
471
|
+
│ └─ Se nessun brief_id, crea nuovo brief in pipeline-active/
|
|
472
|
+
└─ Aggiorna calendario: status planned→draft, assegna brief_id
|
|
473
|
+
|
|
474
|
+
3. SCHEDULE — Converti brief ready → post WP schedulati
|
|
475
|
+
├─ Per ogni riga con status=ready:
|
|
476
|
+
│ ├─ Chiama create_content con status=future, date=scheduled_date
|
|
477
|
+
│ ├─ Aggiorna calendario: status ready→scheduled, assegna post_id
|
|
478
|
+
│ └─ Se distribution.channels: configura scheduling social
|
|
479
|
+
└─ Report: "X post schedulati per la settimana"
|
|
480
|
+
|
|
481
|
+
4. SYNC — Sincronizza stato WP → calendario
|
|
482
|
+
├─ Per ogni post_id nel calendario:
|
|
483
|
+
│ ├─ Verifica stato su WP (list_content con filtro post_id)
|
|
484
|
+
│ └─ Se published → aggiorna calendario status=published
|
|
485
|
+
└─ Aggiorna goals.posts_published
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
**MCP Tool utilizzati** (tutti già esistenti):
|
|
489
|
+
- `create_content` con `status: future` e `date` (da wp-content)
|
|
490
|
+
- `list_content` per sync stato (da wp-content)
|
|
491
|
+
- `buf_create_update` con scheduling (da wp-social-email)
|
|
492
|
+
- `mc_create_campaign` con send_time (da wp-social-email)
|
|
493
|
+
|
|
494
|
+
### 3.4 Integrazione con Fase 1 e 2
|
|
495
|
+
|
|
496
|
+
```
|
|
497
|
+
Fase 2: Intelligence
|
|
498
|
+
signals-feed.md
|
|
499
|
+
│
|
|
500
|
+
▼ topic suggestions
|
|
501
|
+
┌────────────┐
|
|
502
|
+
│ Editorial │ ← GenMarketing (strategy)
|
|
503
|
+
│ Calendar │
|
|
504
|
+
│ .state.md │
|
|
505
|
+
└─────┬──────┘
|
|
506
|
+
│ genera brief per entry planned
|
|
507
|
+
▼
|
|
508
|
+
pipeline-active/
|
|
509
|
+
├─ BRF-001.brief.md (ready)
|
|
510
|
+
├─ BRF-002.brief.md (draft)
|
|
511
|
+
└─ BRF-003.brief.md (ready)
|
|
512
|
+
│
|
|
513
|
+
▼ Fase 1: Pipeline
|
|
514
|
+
wp-content-pipeline
|
|
515
|
+
→ publish → distribute → archive
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
---
|
|
519
|
+
|
|
520
|
+
## Directory Structure
|
|
521
|
+
|
|
522
|
+
```
|
|
523
|
+
.content-state/
|
|
524
|
+
├─ opencactus.config.md # Fase 1: config sito
|
|
525
|
+
├─ bioinagro.config.md # config per altro sito
|
|
526
|
+
├─ signals-feed.md # Fase 2: ultimo feed segnali
|
|
527
|
+
├─ 2026-03-editorial.state.md # Fase 3: calendario corrente
|
|
528
|
+
├─ 2026-02-editorial.state.md # calendario precedente (archived)
|
|
529
|
+
├─ pipeline-active/ # Fase 1: brief in lavorazione
|
|
530
|
+
│ ├─ BRF-2026-003.brief.md
|
|
531
|
+
│ └─ BRF-2026-004.brief.md
|
|
532
|
+
└─ pipeline-archive/ # brief completati
|
|
533
|
+
├─ BRF-2026-001.brief.md
|
|
534
|
+
└─ BRF-2026-002.brief.md
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
**Posizione**: dentro la directory del plugin, accanto a `skills/`, `servers/`, `docs/`.
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
## Inventory Deliverable
|
|
542
|
+
|
|
543
|
+
### Nuovi File MD Schema (6)
|
|
544
|
+
|
|
545
|
+
| File | Fase | Scopo |
|
|
546
|
+
|------|------|-------|
|
|
547
|
+
| `skills/wp-content-pipeline/references/content-brief-schema.md` | 1 | Schema del brief |
|
|
548
|
+
| `skills/wp-content-pipeline/references/site-config-schema.md` | 1 | Schema config sito |
|
|
549
|
+
| `skills/wp-content-pipeline/SKILL.md` | 1 | Skill definition |
|
|
550
|
+
| `skills/wp-analytics/references/signals-feed-schema.md` | 2 | Schema feed segnali |
|
|
551
|
+
| `skills/wp-editorial-planner/references/editorial-schema.md` | 3 | Schema calendario |
|
|
552
|
+
| `skills/wp-editorial-planner/SKILL.md` | 3 | Skill definition |
|
|
553
|
+
|
|
554
|
+
### File Modificati (1)
|
|
555
|
+
|
|
556
|
+
| File | Fase | Modifica |
|
|
557
|
+
|------|------|----------|
|
|
558
|
+
| `skills/wp-analytics/SKILL.md` | 2 | Aggiunta Step 7: Signal Feed generation |
|
|
559
|
+
|
|
560
|
+
### Nuove Directory (1)
|
|
561
|
+
|
|
562
|
+
| Directory | Scopo |
|
|
563
|
+
|-----------|-------|
|
|
564
|
+
| `.content-state/` | Stato persistente del content framework (gitignored in produzione) |
|
|
565
|
+
|
|
566
|
+
### Nessun Nuovo TypeScript
|
|
567
|
+
|
|
568
|
+
Zero file `.ts` aggiunti. Tutte le operazioni usano i 148 MCP tool esistenti orchestrati via skill prompt + file MD strutturati.
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
## Criteri di Accettazione per Fase
|
|
573
|
+
|
|
574
|
+
### Fase 1: Content Pipeline
|
|
575
|
+
|
|
576
|
+
- [x] `content-brief.schema.md` definito e documentato
|
|
577
|
+
- [x] `site.config.md` schema definito e documentato
|
|
578
|
+
- [x] `wp-content-pipeline` skill creata con workflow completo
|
|
579
|
+
- [x] Flusso end-to-end testato: brief.md → WP post (distribuzione LinkedIn skipped — wp-rest-bridge non connesso, tool AIWU usato per WP)
|
|
580
|
+
- [x] Supporto multi-sito (opencactus + almeno un altro)
|
|
581
|
+
|
|
582
|
+
### Fase 2: Content Intelligence
|
|
583
|
+
|
|
584
|
+
- [x] `signals-feed.schema.md` compatibile con GenSignal NormalizedEvent
|
|
585
|
+
- [x] `wp-analytics` estesa con Step 7 (signal feed generation)
|
|
586
|
+
- [x] Delta calculation funzionante (confronto con periodo precedente)
|
|
587
|
+
- [x] Almeno 3 GenSignal patterns riconosciuti automaticamente
|
|
588
|
+
- [ ] Flusso testato: analytics → signals-feed.md → insight azionabili
|
|
589
|
+
|
|
590
|
+
### Fase 3: Editorial Calendar
|
|
591
|
+
|
|
592
|
+
- [x] `editorial.schema.md` definito con tabelle settimanali
|
|
593
|
+
- [x] `wp-editorial-planner` skill creata con 4 workflow steps
|
|
594
|
+
- [x] Conversione calendar entry → brief automatica
|
|
595
|
+
- [x] Scheduling WP post con status=future funzionante (via wp-rest-bridge `create_content`; AIWU non supporta `post_date` — vedi Known Limitations in SKILL.md)
|
|
596
|
+
- [x] Sync bidirezionale: WP publish status → calendar update (SYNC step definito; E2E read-only verificato via AIWU `wp_get_post`)
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
## Priorità e Sequenza
|
|
601
|
+
|
|
602
|
+
```
|
|
603
|
+
Fase 1 (Content Pipeline) ← fondazione, abilita il flusso base
|
|
604
|
+
└─ Fase 2 (Intelligence) ← feedback loop, richiede Fase 1 per agire sui segnali
|
|
605
|
+
└─ Fase 3 (Calendar) ← orchestrazione temporale, usa Fase 1 + 2
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
Fase 1 è autosufficiente. Fase 2 e 3 si costruiscono incrementalmente sopra.
|
|
609
|
+
|
|
610
|
+
---
|
|
611
|
+
|
|
612
|
+
*Proposta architetturale generata come output del brainstorming strategico. Prossimo passo: approvazione utente → design document → implementation plan.*
|