May 27, 2026, 9:48 AM
This commit is contained in:
@@ -0,0 +1,625 @@
|
||||
# **Kompletny pakiet OpenClaw SKILL** w układzie **router + sub‑skills**, gotowy do skopiowania jako katalogi z `SKILL.md`.
|
||||
|
||||
Oparłem format o to, że **OpenClaw skill to katalog zawierający `SKILL.md` z YAML frontmatter + instrukcje**, a skills są ładowane m.in. z `<workspace>/skills` oraz `~/.openclaw/skills` (z priorytetem workspace > local > bundled).
|
||||
W samym pliku frontmatter typowo występują pola jak `name`, `description`, opcjonalnie `version`, `trigger`, `tools` itd. [\[docs.openclaw.ai\]](https://docs.openclaw.ai/tools/skills), [\[openclaws.io\]](https://openclaws.io/docs/tools/skills/), [\[deepwiki.com\]](https://deepwiki.com/lekt9/openclaw-foundry/5.1-skill-format-and-structure) [\[clawdocs.org\]](https://clawdocs.org/guides/skill-development/), [\[deepwiki.com\]](https://deepwiki.com/lekt9/openclaw-foundry/5.1-skill-format-and-structure)
|
||||
|
||||
Dodatkowo w QA uwzględniłem bramki SEO, które przewijają się w materiałach typu “SEO recommendations / requirements”: m.in. **duplicate content, canonicalization, pagination, structured data, IA, on‑page, performance, mobile-first**.
|
||||
|
||||
***
|
||||
|
||||
## 1) Struktura katalogów (wklej do `<workspace>/skills/`)
|
||||
|
||||
skills/
|
||||
seo-ai-router/
|
||||
SKILL.md
|
||||
artifacts/
|
||||
brief.schema.json
|
||||
research.schema.json
|
||||
outline.schema.json
|
||||
draft.schema.json
|
||||
qa.schema.json
|
||||
|
||||
seo-research/
|
||||
SKILL.md
|
||||
|
||||
seo-outline/
|
||||
SKILL.md
|
||||
|
||||
seo-writer/
|
||||
SKILL.md
|
||||
|
||||
seo-onpage/
|
||||
SKILL.md
|
||||
|
||||
seo-schema/
|
||||
SKILL.md
|
||||
|
||||
seo-qa-gates/
|
||||
SKILL.md
|
||||
|
||||
seo-publish/
|
||||
SKILL.md
|
||||
|
||||
seo-measure-refresh/
|
||||
SKILL.md
|
||||
|
||||
***
|
||||
|
||||
## 2) Router SKILL — `skills/seo-ai-router/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-ai-router
|
||||
version: 1.0.0
|
||||
description: Router i orkiestrator procesu tworzenia tresci SEO per etap customer journey (Inicjacja->Badania->Porownywanie->Transakcja->Doswiadczenie) z artefaktami JSON i bramkami QA.
|
||||
trigger: "seo pipeline|seo workflow|customer journey|inicjacja|badania|porownywanie|transakcja|doswiadczenie|checklista seo|seo machine"
|
||||
tools: [filesystem, browser, http, shell]
|
||||
---
|
||||
|
||||
# SEO AI Router (Customer Journey)
|
||||
|
||||
## Cel
|
||||
Gdy uzytkownik prosi o tresc SEO, strategie, checklisty, artykul, landing, porownanie lub material pod dowolny etap sciezki zakupowej,
|
||||
ten skill ma:
|
||||
1) wykryc etap i intencje,
|
||||
2) wygenerowac artefakty (Brief -> Research -> Outline -> Draft -> OnPage -> Schema -> QA -> Publish -> Measure),
|
||||
3) wywolac (konceptualnie) sub-skills w odpowiedniej kolejnosci.
|
||||
|
||||
## Kiedy uzywac
|
||||
Aktywuj, gdy prosba dotyczy:
|
||||
- tworzenia/planowania tresci SEO,
|
||||
- dopasowania do intencji/funnel/journey,
|
||||
- przygotowania materialu “pod AI/agentow”,
|
||||
- wdrozenia procesu content ops (research->publish->refresh).
|
||||
|
||||
## Detekcja etapu (reguly)
|
||||
- Inicjacja: definicje, "co to jest", edukacja, problem
|
||||
- Badania: rankingi, opinie, przewodniki zakupowe
|
||||
- Porownywanie: "X vs Y", alternatywy, tabele, kalkulatory
|
||||
- Transakcja: "kup", "cena", "gdzie kupic", landing/product/pricing
|
||||
- Doswiadczenie: instrukcje, KB, troubleshooting, posprzedaz
|
||||
|
||||
Jesli niejasne: przyjmij Badania jako domysl i w brief oznacz `stage_confidence: low`.
|
||||
|
||||
## Kontrakt artefaktow (pliki lub bloki w odpowiedzi)
|
||||
W kazdym kroku generuj JSON zgodny z prostym schematem:
|
||||
- `brief.json`
|
||||
- `research.json`
|
||||
- `outline.json`
|
||||
- `draft.md` (lub html)
|
||||
- `onpage.json`
|
||||
- `schema.jsonld`
|
||||
- `qa.json`
|
||||
- `publish.json`
|
||||
- `measure.json`
|
||||
|
||||
## Orkiestracja (kolejnosc sub-skills)
|
||||
1) Uruchom **seo-research**
|
||||
2) Uruchom **seo-outline**
|
||||
3) Uruchom **seo-writer**
|
||||
4) Uruchom **seo-onpage**
|
||||
5) Uruchom **seo-schema**
|
||||
6) Uruchom **seo-qa-gates**
|
||||
7) Uruchom **seo-publish**
|
||||
8) Uruchom **seo-measure-refresh**
|
||||
|
||||
## Wyjscie finalne dla uzytkownika
|
||||
Zawsze zwroc:
|
||||
- gotowy artefakt docelowy (np. artykul/landing/KB),
|
||||
- oraz komplet JSON-ow (albo “bundle” w jednej odpowiedzi),
|
||||
- oraz liste decyzji: etap, intencja, target, CTA, linkowanie wewn.
|
||||
|
||||
## Notatka o snippetach (meta)
|
||||
Pamietaj: snippet w wynikach wyszukiwania jest zwykle generowany z tresci strony, ale meta description moze zostac uzyte, gdy lepiej opisuje strone.
|
||||
Uwzglednij to w kroku seo-onpage.
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 3) Sub-skill: Research — `skills/seo-research/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-research
|
||||
version: 1.0.0
|
||||
description: Research SEO: intencja, pytania, katy, konkurencja, mapa slow kluczowych pod etap customer journey.
|
||||
trigger: "seo research|intencja|paa|faq|konkurencja|serp"
|
||||
tools: [browser, http]
|
||||
---
|
||||
|
||||
# SEO Research Agent
|
||||
|
||||
## Wejscie
|
||||
Oczekuj `brief.json`:
|
||||
- stage, persona, intent, topic, geo/lang, KPI
|
||||
|
||||
## Kroki
|
||||
1) Okresl primary intent: informational / commercial / transactional / navigational.
|
||||
2) Zbierz liste pytan (FAQ/PAA style) + obiekcje + synonimy.
|
||||
3) Zaproponuj 3-5 katow (angles) dopasowanych do etapu:
|
||||
- Inicjacja: edukacja, definicja, problem->rozwiazanie
|
||||
- Badania: metodologia, kryteria, ranking
|
||||
- Porownywanie: roznice, trade-offs, "dla kogo"
|
||||
- Transakcja: wartosc, oferta, dowody, CTA
|
||||
- Doswiadczenie: diagnoza, kroki naprawy, KB
|
||||
4) Zbuduj mapowanie: query cluster -> sekcje strony (H2/H3).
|
||||
5) Zapisz `research.json`.
|
||||
|
||||
## Output: research.json (minimal)
|
||||
{
|
||||
"stage": "...",
|
||||
"intent": "...",
|
||||
"topic": "...",
|
||||
"keyword_clusters": [
|
||||
{"cluster":"...", "queries":["..."], "notes":"..."}
|
||||
],
|
||||
"questions": ["..."],
|
||||
"objections": ["..."],
|
||||
"angles": ["..."],
|
||||
"internal_links_suggested": {
|
||||
"prev_stage": ["..."],
|
||||
"next_stage": ["..."]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 4) Sub-skill: Outline — `skills/seo-outline/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-outline
|
||||
version: 1.0.0
|
||||
description: Buduje outline H1-H3 + FAQ + plan linkowania wewnetrznego na podstawie research.
|
||||
trigger: "outline|struktura|h2|h3|plan tresci"
|
||||
tools: [filesystem]
|
||||
---
|
||||
|
||||
# SEO Outline Agent
|
||||
|
||||
## Wejscie
|
||||
`research.json`
|
||||
|
||||
## Kroki
|
||||
1) Stworz H1 zgodny z intencja.
|
||||
2) Zaprojektuj H2/H3 tak, by:
|
||||
- w pierwszych sekcjach odpowiadac “wprost” na potrzebe,
|
||||
- pokrywac klastry slow kluczowych,
|
||||
- dodac FAQ (Q/A).
|
||||
3) Dodaj sekcje “dla kogo”, “kiedy wybrac”, “alternatywy” jesli etap >= Badania.
|
||||
4) Ustal CTA i linki do poprzedniego/nastepnego etapu.
|
||||
|
||||
## Output: outline.json
|
||||
{
|
||||
"h1": "...",
|
||||
"sections": [
|
||||
{"h2":"...", "h3":["..."], "intent_note":"..."}
|
||||
],
|
||||
"faq": [{"q":"...", "a_hint":"..."}],
|
||||
"cta": {"primary":"...", "secondary":"..."},
|
||||
"internal_links": [{"anchor":"...", "target":"..."}]
|
||||
}
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 5) Sub-skill: Writer — `skills/seo-writer/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-writer
|
||||
version: 1.0.0
|
||||
description: Pisze draft na podstawie outline; dodaje TLDR, przyklady, sekcje dopasowane do etapu.
|
||||
trigger: "napisz|draft|artykul|landing|kb"
|
||||
tools: [filesystem]
|
||||
---
|
||||
|
||||
# SEO Writer Agent
|
||||
|
||||
## Wejscie
|
||||
`outline.json`
|
||||
|
||||
## Kroki
|
||||
1) Napisz wersje 1 w Markdown:
|
||||
- TLDR na gorze (2-5 zdan)
|
||||
- H2/H3 zgodnie z outline
|
||||
2) Styl:
|
||||
- Inicjacja: edukacyjnie, bez sprzedazy
|
||||
- Badania: kryteria + metodologia + rekomendacje
|
||||
- Porownywanie: trade-offs, tabela roznic (tekstowo)
|
||||
- Transakcja: wartosc, dowody, CTA
|
||||
- Doswiadczenie: szybka diagnoza + kroki
|
||||
3) Dodaj sekcje FAQ.
|
||||
4) Dodaj placeholdery do linkow wewnetrznych.
|
||||
|
||||
## Output
|
||||
- `draft.md`
|
||||
- `draft.json` (opcjonalnie): streszczenie + kluczowe tezy
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 6) Sub-skill: On-page — `skills/seo-onpage/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-onpage
|
||||
version: 1.0.0
|
||||
description: On-page SEO: title, meta description, naglowki, link text, IA, canonical/pagination checklist.
|
||||
trigger: "meta title|meta description|onpage|optymalizacja"
|
||||
tools: [filesystem]
|
||||
---
|
||||
|
||||
# SEO On-page Agent
|
||||
|
||||
## Wejscie
|
||||
`draft.md` + `research.json`
|
||||
|
||||
## Kroki
|
||||
1) Uloz Title i Meta Description:
|
||||
- unikalne,
|
||||
- zgodne z intencja,
|
||||
- streszczaja i zachecaja (meta moze byc uzyte jako snippet, gdy lepiej opisuje strone niz fragment tresci).
|
||||
2) Sprawdz zgodnosc H1/H2/H3 z klastrami.
|
||||
3) Popraw linki wewnetrzne:
|
||||
- anchor text opisowy,
|
||||
- logiczny flow prev/next stage.
|
||||
4) Zapisz `onpage.json`:
|
||||
- title, description,
|
||||
- link plan,
|
||||
- uwagi do IA.
|
||||
5) Dodaj tech-checklist:
|
||||
- duplicate content / canonical / pagination / indexing.
|
||||
|
||||
## Output: onpage.json
|
||||
{
|
||||
"title": "...",
|
||||
"meta_description": "...",
|
||||
"internal_links": [{"anchor":"...", "target":"..."}],
|
||||
"tech_notes": ["duplicate content", "canonical", "pagination", "indexing"]
|
||||
}
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 7) Sub-skill: Structured Data — `skills/seo-schema/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-schema
|
||||
version: 1.0.0
|
||||
description: Dobiera i generuje JSON-LD (FAQ/HowTo/Product/Offer/Breadcrumb) na podstawie typu strony.
|
||||
trigger: "schema|json-ld|structured data|faq schema|howto schema"
|
||||
tools: [filesystem]
|
||||
---
|
||||
|
||||
# SEO Schema Agent
|
||||
|
||||
## Wejscie
|
||||
`draft.md` + `onpage.json` + stage
|
||||
|
||||
## Kroki
|
||||
1) Dobierz typ:
|
||||
- FAQPage: gdy masz realne Q/A
|
||||
- HowTo: gdy masz kroki
|
||||
- Product/Offer: gdy to strona produktu/oferty
|
||||
- BreadcrumbList: gdy to strona w hierarchii
|
||||
2) Wygeneruj `schema.jsonld` jako JSON-LD.
|
||||
3) Dodaj notatke: structured data wspiera rich results i “zrozumienie” tresci przez wyszukiwarki.
|
||||
|
||||
## Output
|
||||
- `schema.jsonld`
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 8) Sub-skill: QA Gates — `skills/seo-qa-gates/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-qa-gates
|
||||
version: 1.0.0
|
||||
description: Bramki jakosci SEO: intencja, duplikacja/canonical/pagination, structured data, linki, mobile-first, performance.
|
||||
trigger: "qa seo|bramki|quality gates|audit"
|
||||
tools: [filesystem]
|
||||
---
|
||||
|
||||
# SEO QA Gates Agent
|
||||
|
||||
## Wejscie
|
||||
`draft.md` + `onpage.json` + `schema.jsonld`
|
||||
|
||||
## Bramki (PASS/FAIL + fixlist)
|
||||
1) Intent match: czy tresc odpowiada na intencje etapu?
|
||||
2) Meta: Title/Description unikalne i zgodne z trescia.
|
||||
3) Tech: duplicate content, canonicalization, pagination, indexing.
|
||||
4) Structured data: czy pasuje do strony i jest sensowne.
|
||||
5) Linki: opisowy anchor text + crawlable (typowy problem w audytach).
|
||||
6) Mobile-first + performance (traktuj jako release gate).
|
||||
|
||||
## Output: qa.json
|
||||
{
|
||||
"status": "pass|fail",
|
||||
"checks": [
|
||||
{"name":"intent", "status":"pass|fail", "notes":"..."},
|
||||
{"name":"meta", "status":"pass|fail", "notes":"..."},
|
||||
{"name":"tech", "status":"pass|fail", "notes":"..."},
|
||||
{"name":"schema", "status":"pass|fail", "notes":"..."},
|
||||
{"name":"links", "status":"pass|fail", "notes":"..."},
|
||||
{"name":"mobile_perf", "status":"pass|fail", "notes":"..."}
|
||||
],
|
||||
"fixlist": ["..."]
|
||||
}
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 9) Sub-skill: Publish — `skills/seo-publish/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-publish
|
||||
version: 1.0.0
|
||||
description: Przygotowanie do publikacji: URL, breadcrumbs, mapowanie do kategorii, plan indeksacji, checklist pre-publish.
|
||||
trigger: "publish|publikuj|wdroz|deploy content"
|
||||
tools: [filesystem]
|
||||
---
|
||||
|
||||
# SEO Publish Agent
|
||||
|
||||
## Wejscie
|
||||
`qa.json` + `draft.md` + `onpage.json` + `schema.jsonld`
|
||||
|
||||
## Reguly
|
||||
- Jesli QA fail: nie publikuj, zwroc fixlist.
|
||||
- Jesli QA pass:
|
||||
1) Zaproponuj slug URL (ASCII, krotki).
|
||||
2) Zapisz paczke: content + schema + meta.
|
||||
3) Zapisz `publish.json` z polami:
|
||||
- url_slug
|
||||
- breadcrumbs
|
||||
- next_refresh_hint
|
||||
|
||||
## Output: publish.json
|
||||
{
|
||||
"url_slug": "...",
|
||||
"breadcrumbs": ["...","..."],
|
||||
"publish_notes": ["..."],
|
||||
"next_refresh_hint": "..."
|
||||
}
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## 10) Sub-skill: Measure & Refresh — `skills/seo-measure-refresh/SKILL.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: seo-measure-refresh
|
||||
version: 1.0.0
|
||||
description: Pomiar i refresh: sygnaly z ruchu, CTR, nowe pytania, plan aktualizacji, retarget do kolejnego etapu.
|
||||
trigger: "measure|refresh|aktualizacja|performance review seo"
|
||||
tools: [filesystem]
|
||||
---
|
||||
|
||||
# SEO Measure & Refresh Agent
|
||||
|
||||
## Wejscie
|
||||
`publish.json` + KPI z brief
|
||||
|
||||
## Kroki
|
||||
1) Zdefiniuj “refresh triggers”:
|
||||
- spadek CTR,
|
||||
- zmiana intencji,
|
||||
- nowe pytania,
|
||||
- nowy konkurent/format SERP.
|
||||
2) Zaproponuj plan refresh:
|
||||
- update meta,
|
||||
- rozbudowa FAQ,
|
||||
- dodanie sekcji porownawczej lub CTA do kolejnego etapu.
|
||||
3) Output `measure.json`.
|
||||
|
||||
## Output: measure.json
|
||||
{
|
||||
"signals": ["..."],
|
||||
"hypotheses": ["..."],
|
||||
"refresh_actions": ["..."],
|
||||
"next_review_window": "..."
|
||||
}
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
# 11) (Opcjonalnie) Minimalne schematy JSON (router artifacts)
|
||||
|
||||
Jeśli chcesz walidować artefakty, wrzuć te pliki do `skills/seo-ai-router/artifacts/`. To są ultra-proste schematy (bez zależności).
|
||||
|
||||
### `brief.schema.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"type": "object",
|
||||
"required": ["stage", "topic", "intent"],
|
||||
"properties": {
|
||||
"stage": {"type": "string"},
|
||||
"topic": {"type": "string"},
|
||||
"intent": {"type": "string"},
|
||||
"persona": {"type": "string"},
|
||||
"kpi": {"type": "array", "items": {"type": "string"}},
|
||||
"stage_confidence": {"type": "string"}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(Pozostałe schematy mogę Ci dopisać analogicznie, ale już teraz masz “działający” pakiet — OpenClaw nie wymaga schematów, to tylko Twoje QA/porządek.)
|
||||
|
||||
***
|
||||
|
||||
## Jak tego używać (praktycznie, bez filozofii)
|
||||
|
||||
1. Skopiuj katalogi do `<workspace>/skills/` (to ma najwyższy priorytet ładowania skills). [\[docs.openclaw.ai\]](https://docs.openclaw.ai/tools/skills), [\[openclaws.io\]](https://openclaws.io/docs/tools/skills/)
|
||||
2. W rozmowie piszesz np.:
|
||||
* „Zrob mi content pod etap Porownywanie dla \[temat]”
|
||||
* „Przygotuj landing pod Transakcja dla \[produkt]”
|
||||
* „Zrob KB pod Doswiadczenie: jak naprawic \[problem]”
|
||||
|
||||
Router ma wtedy poprowadzić agentową sekwencję i zwrócić paczkę artefaktów.
|
||||
|
||||
***
|
||||
|
||||
|
||||
> Mała uwaga techniczna: w Mermaid **nie używaj słowa `end` jako tekstu w węźle flowchart** (potrafi „wywalić” parser) — lepiej `END` albo `[END]`.\
|
||||
> Dla sequenceDiagram `alt/else/loop` są wspierane wprost. [\[mermaid.ai\]](https://mermaid.ai/open-source/syntax/flowchart.html), [\[emersonbot....github.io\]](https://emersonbottero.github.io/mermaid-docs/syntax/flowchart.html) [\[docs.merma...viewer.com\]](https://docs.mermaidviewer.com/diagrams/sequence.html), [\[mermaid.ai\]](https://mermaid.ai/open-source/syntax/examples.html), [\[emersonbot....github.io\]](https://emersonbottero.github.io/mermaid-docs/syntax/sequenceDiagram.html)
|
||||
|
||||
***
|
||||
|
||||
## 1) Diagram (Flowchart): Router + artefakty + QA gates + retry loop
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
|
||||
%% =========================
|
||||
%% ENTRY
|
||||
%% =========================
|
||||
U[User request: temat + cel] --> R0[Router: detect stage + intent]
|
||||
R0 --> D1{Stage detected?}
|
||||
D1 -->|yes| BR[brief.json]
|
||||
D1 -->|no| BR_LOW[brief.json + stage_confidence=low]
|
||||
|
||||
%% =========================
|
||||
%% STAGE MAP (customer journey)
|
||||
%% =========================
|
||||
subgraph ST["Stage map"]
|
||||
S1[Inicjacja]
|
||||
S2[Badania]
|
||||
S3[Porownywanie]
|
||||
S4[Transakcja]
|
||||
S5[Doswiadczenie]
|
||||
S1 --> S2 --> S3 --> S4 --> S5
|
||||
end
|
||||
|
||||
BR --> ST
|
||||
BR_LOW --> ST
|
||||
|
||||
%% =========================
|
||||
%% PIPELINE
|
||||
%% =========================
|
||||
subgraph PL["AI Pipeline (artefakty)"]
|
||||
direction TB
|
||||
P1[seo-research] --> A1[research.json]
|
||||
A1 --> P2[seo-outline] --> A2[outline.json]
|
||||
A2 --> P3[seo-writer] --> A3[draft.md]
|
||||
A3 --> P4[seo-onpage] --> A4[onpage.json]
|
||||
A4 --> P5[seo-schema] --> A5[schema.jsonld]
|
||||
A5 --> P6[seo-qa-gates] --> A6[qa.json]
|
||||
A6 --> DEC_QA{QA status?}
|
||||
end
|
||||
|
||||
BR --> P1
|
||||
BR_LOW --> P1
|
||||
|
||||
%% =========================
|
||||
%% QA BRANCHING + FIX LOOP
|
||||
%% =========================
|
||||
DEC_QA -->|pass| P7[seo-publish] --> A7[publish.json]
|
||||
DEC_QA -->|fail| FIX[Fixlist: what to change]
|
||||
FIX --> P3
|
||||
|
||||
%% =========================
|
||||
%% PUBLISH + MEASURE
|
||||
%% =========================
|
||||
A7 --> P8[seo-measure-refresh] --> A8[measure.json]
|
||||
A8 --> DEC_REFRESH{Refresh needed?}
|
||||
DEC_REFRESH -->|yes| P1
|
||||
DEC_REFRESH -->|no| OUT[Output bundle: content + JSON artifacts]
|
||||
|
||||
%% =========================
|
||||
%% QA GATES DETAILS (what QA checks)
|
||||
%% =========================
|
||||
subgraph QA["QA Gates (co sprawdzamy)"]
|
||||
direction TB
|
||||
Q1[Intent match: etap vs tresc]
|
||||
Q2[Meta: title + description unique]
|
||||
Q3[Tech: duplicate/canonical/pagination/indexing]
|
||||
Q4[Structured data: FAQ/HowTo/Product when fits]
|
||||
Q5[Links: opisowe + crawlable]
|
||||
Q6[Mobile-first + performance]
|
||||
end
|
||||
|
||||
P6 --> QA
|
||||
```
|
||||
|
||||
Dlaczego to jest „bardziej szczegółowe”:
|
||||
|
||||
* Masz **artefakty jako węzły** (`brief.json`, `research.json`, `outline.json`, `draft.md`, `onpage.json`, `schema.jsonld`, `qa.json`, `publish.json`, `measure.json`)
|
||||
* Jest **gałąź QA pass/fail** oraz **pętla naprawcza** (wracasz do `seo-writer` i przechodzisz dalej)
|
||||
* Jest **pętla refresh** po pomiarach (wraca do research, jeśli trzeba)
|
||||
* Jest osobny subgraph „QA Gates” opisujący *co* sprawdzasz (zgodne z tym, co przewija się w checklistach SEO: duplicate/canonical/pagination/structured data/perf/mobile etc.).
|
||||
## 2) Diagram (Sequence): Router + sub‑skills + alt/loop/opt + artefakty
|
||||
|
||||
Ten wariant jest „bardziej operacyjny” — pokazuje kto (który agent) co produkuje i kiedy następuje retry.
|
||||
|
||||
``` mermaid
|
||||
sequenceDiagram
|
||||
autonumber
|
||||
|
||||
participant U as User
|
||||
participant HQ as Orchestrator
|
||||
participant R as seo-research
|
||||
participant O as seo-outline
|
||||
participant W as seo-writer
|
||||
participant S as seo-onpage
|
||||
participant SC as seo-schema
|
||||
participant Q as seo-qa-gates
|
||||
participant PB as seo-publish
|
||||
participant M as seo-measure-refresh
|
||||
|
||||
U->>HQ: Request (topic, goal, stage optional)
|
||||
HQ->>HQ: Detect stage + intent
|
||||
HQ-->>U: Plan preview (stage, intent, artifacts list)
|
||||
|
||||
HQ->>R: brief.json
|
||||
R-->>HQ: research.json
|
||||
|
||||
HQ->>O: research.json
|
||||
O-->>HQ: outline.json
|
||||
|
||||
HQ->>W: outline.json
|
||||
W-->>HQ: draft.md
|
||||
|
||||
HQ->>S: draft.md + research.json
|
||||
S-->>HQ: onpage.json (title, meta, links)
|
||||
|
||||
HQ->>SC: draft.md + onpage.json
|
||||
SC-->>HQ: schema.jsonld
|
||||
|
||||
loop QA until pass
|
||||
HQ->>Q: draft.md + onpage.json + schema.jsonld
|
||||
Q-->>HQ: qa.json (pass/fail + fixlist)
|
||||
|
||||
alt QA fail
|
||||
HQ->>W: fixlist + outline.json
|
||||
W-->>HQ: draft.md (revised)
|
||||
HQ->>S: draft.md update
|
||||
S-->>HQ: onpage.json update
|
||||
HQ->>SC: schema update if needed
|
||||
SC-->>HQ: schema.jsonld
|
||||
else QA pass
|
||||
HQ->>PB: content bundle
|
||||
PB-->>HQ: publish.json (slug, notes)
|
||||
end
|
||||
end
|
||||
|
||||
opt Measure and refresh
|
||||
HQ->>M: publish.json + KPI
|
||||
M-->>HQ: measure.json (signals + refresh plan)
|
||||
end
|
||||
|
||||
HQ-->>U: Final bundle (content + JSON artifacts)
|
||||
```
|
||||
|
||||
`loop`, `alt/else`, `opt` są natywnie wspierane w Mermaid sequenceDiagram (to standardowy sposób na pokazanie retry i warunków). [\[docs.merma...viewer.com\]](https://docs.mermaidviewer.com/diagrams/sequence.html), [\[mermaid.ai\]](https://mermaid.ai/open-source/syntax/examples.html), [\[emersonbot....github.io\]](https://emersonbottero.github.io/mermaid-docs/syntax/sequenceDiagram.html)
|
||||
|
||||
***
|
||||
Reference in New Issue
Block a user