May 17, 2026, 11:40 PM
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
**Checklistę treści SEO dla każdego etapu**
|
||||
|
||||
z Twojego modelu (Inicjacja → Badania → Porównywanie → Transakcja → Doświadczenie). Jest to *content checklist* (co tworzyć + jak to ułożyć na stronie), z domieszką kluczowych elementów on‑page/technicznych, które wg wewnętrznych materiałów obejmują m.in. **title, meta description, indeksację, duplikację/canonical, paginację, structured data, architekturę informacji, mobile‑first i performance**.
|
||||
W praktyce bazuje to na dopasowaniu treści do intencji (informacyjna / nawigacyjna / komercyjna / transakcyjna). [\[semrush.com\]](https://www.semrush.com/blog/types-of-keywords-commercial-informational-navigational-transactional/)
|
||||
|
||||
***
|
||||
|
||||
## 0) Wspólna „checklista bazowa” (dla KAŻDEJ treści, niezależnie od etapu)
|
||||
|
||||
* [ ] Zdefiniuj **intencję** strony (informacyjna / komercyjna / transakcyjna / nawigacyjna). [\[semrush.com\]](https://www.semrush.com/blog/types-of-keywords-commercial-informational-navigational-transactional/)
|
||||
* [ ] Ustal **1 temat główny + klaster pytań** (PAA/FAQ) i zrób mapę H2/H3.
|
||||
* [ ] Napisz unikalny **Page Title** i **Meta description** (Google może użyć opisu jako snippetu; opis ma streszczać i zachęcać) [\[developers...google.com\]](https://developers.google.com/search/docs/appearance/snippet)
|
||||
* [ ] Zaplanuj **internal linking** (do treści z poprzedniego etapu + następnego etapu).
|
||||
* [ ] Dodaj **structured data** tam, gdzie ma sens (FAQ/HowTo/Product/Review itp.) i przetestuj walidacją. [\[umarcomm.umn.edu\]](https://umarcomm.umn.edu/blog/2025/10/03/how-use-structured-data-stand-out-google)
|
||||
* [ ] Dopilnuj podstaw: **duplicate content / canonicalizacja / paginacja** (jeśli dotyczy).
|
||||
* [ ] UX/SEO: linki z **opisowym tekstem** i crawlable (to typowy błąd w audytach).
|
||||
* [ ] Mobile‑first i performance jako warunek „publish” (wewnętrznie opisywane jako wymóg/standard).
|
||||
***
|
||||
|
||||
# 1) INICJACJA (Awareness / Informacyjne)
|
||||
|
||||
**Cel SEO:** złapać szeroki popyt, „problem‑aware” i edukację (dużo długiego ogona).
|
||||
**Dominujące zapytania:** „co to jest…”, „jak działa…”, „dlaczego…”, „jak wybrać…”.
|
||||
|
||||
### Checklist: co publikować
|
||||
|
||||
* [ ] **Poradniki „co to jest / jak działa”** (definicje + przykłady zastosowań).
|
||||
* [ ] **Artykuły problemowe** („Jak rozwiązać \[problem]?”) + sekcja „najczęstsze błędy”.
|
||||
* [ ] **Glossary / słownik pojęć** (krótkie definicje → linki do poradników).
|
||||
* [ ] **Checklisty startowe** („Jak zacząć z \[kategoria] w 30 min”).
|
||||
* [ ] **FAQ/kompendium** (pod PAA i szybkie odpowiedzi).
|
||||
* [ ] **Infografika/wideo** wspierające (łatwe do udostępniania). (Praktyka „awareness content” jako przewodniki/edukacja pojawia się w opisach lejka). [\[hashmeta.com\]](https://hashmeta.com/blog/how-to-create-content-for-each-stage-of-the-search-funnel/), [\[searchengi...ournal.com\]](https://www.searchenginejournal.com/write-content-sales-funnel-stage/258359/)
|
||||
|
||||
### Checklist: jak ułożyć stronę (on‑page)
|
||||
|
||||
* [ ] Pierwsze 2–3 akapity odpowiadają wprost na pytanie („TL;DR”).
|
||||
* [ ] H2 = pytania użytkownika („Jak…”, „Czy…”, „Ile…”, „Kiedy…”).
|
||||
* [ ] Sekcja „Co dalej?” → link do **Badania** (rankingi / przewodnik zakupowy).
|
||||
* [ ] Dodaj **FAQ schema** (jeśli masz wyraźne Q/A). [\[umarcomm.umn.edu\]](https://umarcomm.umn.edu/blog/2025/10/03/how-use-structured-data-stand-out-google)
|
||||
|
||||
### KPI (orientacyjnie)
|
||||
|
||||
* [ ] Impressions + CTR na frazach informacyjnych
|
||||
* [ ] Udział w ruchu non‑brand (widoczność)
|
||||
|
||||
***
|
||||
|
||||
# 2) BADANIA (Consideration / „komercyjna analiza”)
|
||||
|
||||
**Cel SEO:** pomóc w wyborze opcji, zbudować zaufanie, „shortlist”.
|
||||
**Dominujące zapytania:** „najlepszy…”, „ranking…”, „opinie…”, „polecane…”.
|
||||
|
||||
### Checklist: co publikować
|
||||
|
||||
* [ ] **Rankingi / listy TOP** („Najlepsze \[kategoria] 2026”).
|
||||
* [ ] **Przewodniki zakupowe** („na co zwrócić uwagę przy wyborze…”).
|
||||
* [ ] **Recenzje ogólne kategorii** („które typy / warianty są dla kogo”).
|
||||
* [ ] **Porównania segmentów** („budżetowe vs premium”, „dla X vs dla Y”).
|
||||
* [ ] **Checklisty kryteriów** (do pobrania / do skopiowania).
|
||||
* [ ] **Case studies / zastosowania** (gdy to B2B/SaaS) – typowe dla etapu consideration. [\[hashmeta.com\]](https://hashmeta.com/blog/how-to-create-content-for-each-stage-of-the-search-funnel/), [\[searchengi...ournal.com\]](https://www.searchenginejournal.com/write-content-sales-funnel-stage/258359/)
|
||||
|
||||
### Checklist: jak ułożyć stronę (on‑page)
|
||||
|
||||
* [ ] Wyraźne kryteria oceny (sekcja „Metodologia rankingu”).
|
||||
* [ ] Tabela porównawcza + „dla kogo” przy każdym wariancie.
|
||||
* [ ] Linki do **Porównywanie** (porównania 1:1) oraz do stron produktowych (Transakcja).
|
||||
* [ ] Jeśli są elementy recenzji/ocen → rozważ właściwe structured data (np. Review/Rating tam, gdzie zgodne z zasadami i masz realne dane). [\[umarcomm.umn.edu\]](https://umarcomm.umn.edu/blog/2025/10/03/how-use-structured-data-stand-out-google)
|
||||
|
||||
### KPI
|
||||
|
||||
* [ ] Ruch na frazach „best/ranking/opinie”
|
||||
* [ ] Przejścia do porównań i stron produktowych
|
||||
|
||||
***
|
||||
|
||||
# 3) PORÓWNYWANIE (Commercial Investigation / „X vs Y”)
|
||||
|
||||
**Cel SEO:** domknąć decyzję poprzez konkret: funkcje, koszty, ograniczenia, ryzyka.
|
||||
**Dominujące zapytania:** „X vs Y”, „różnice”, „który lepszy”, „alternatywy”.
|
||||
|
||||
### Checklist: co publikować
|
||||
|
||||
* [ ] **Porównania 1:1** (X vs Y) + werdykt dla różnych profili użytkowników.
|
||||
* [ ] **„Alternatywy dla X”** (z powodami migracji/wyboru).
|
||||
* [ ] **„Najczęstsze pytania przed zakupem”** (koszty, gwarancje, kompatybilność).
|
||||
* [ ] **Kalkulatory / konfiguratory** („ile to kosztuje przy moim scenariuszu”).
|
||||
* [ ] **Dema / walkthrough** (wideo + transkrypcja na stronie).
|
||||
* [ ] „Mid-funnel” treści typu porównania / case studies są wskazywane jako typowe w tej fazie lejka. [\[hashmeta.com\]](https://hashmeta.com/blog/how-to-create-content-for-each-stage-of-the-search-funnel/), [\[searchengi...ournal.com\]](https://www.searchenginejournal.com/write-content-sales-funnel-stage/258359/)
|
||||
|
||||
### Checklist: jak ułożyć stronę (on‑page)
|
||||
|
||||
* [ ] Stała sekcja: „Różnice w skrócie” + potem szczegóły.
|
||||
* [ ] Tabela: funkcje / koszty / ograniczenia / dla kogo.
|
||||
* [ ] Widoczne CTA „Sprawdź cenę / dostępność” → **Transakcja**.
|
||||
* [ ] FAQ z obiekcjami („Czy X działa z…”, „Czy Y ma…”) + schema. [\[umarcomm.umn.edu\]](https://umarcomm.umn.edu/blog/2025/10/03/how-use-structured-data-stand-out-google)
|
||||
|
||||
### KPI
|
||||
|
||||
* [ ] CTR na frazach „vs / alternatywy”
|
||||
* [ ] Kliknięcia w CTA do transakcji, scroll depth
|
||||
|
||||
***
|
||||
|
||||
# 4) TRANSAKCJA (Decision / Transactional)
|
||||
|
||||
**Cel SEO:** maksymalizować konwersję, widoczność na „kup teraz”, „cena”, „dostępność”.
|
||||
**Dominujące zapytania:** „kup”, „cena”, „promocja”, „gdzie kupić”, „dostępność”, „lokalnie”.
|
||||
|
||||
### Checklist: co publikować
|
||||
|
||||
* [ ] **Strony produktowe/landing pages** (jednoznaczny value prop + spec).
|
||||
* [ ] **Strony „cennik / pakiety”** + porównanie planów.
|
||||
* [ ] **„Gdzie kupić / dostępność / lokalizator”** (jeśli retail).
|
||||
* [ ] **Promocje** (jeśli uzasadnione) – najlepiej jako evergreen „jak działają rabaty” + aktualizacje.
|
||||
* [ ] **Strony kategorii** z filtrami (ale dopilnuj paginacji/canonical).
|
||||
### Checklist: jak ułożyć stronę (on‑page + techniczne minimum)
|
||||
|
||||
* [ ] Title i opis „transakcyjny” (jasno: co, dla kogo, korzyść) – snippety mogą być generowane z treści i/lub meta description. [\[developers...google.com\]](https://developers.google.com/search/docs/appearance/snippet)
|
||||
* [ ] **Structured data** (Product/Offer/Breadcrumb – zależnie od typu strony) i test walidacją. [\[umarcomm.umn.edu\]](https://umarcomm.umn.edu/blog/2025/10/03/how-use-structured-data-stand-out-google)
|
||||
* [ ] Linki „dodaj do koszyka / kontakt / demo” są crawlable i mają opisowy tekst (typowy problem w audytach).
|
||||
* [ ] Mobile‑first i performance jako warunek publikacji (wymóg w ujęciu „SEO templates + performance budgets”).
|
||||
|
||||
### KPI
|
||||
|
||||
* [ ] CR (conversion rate), revenue/leads z organic
|
||||
* [ ] Widoczność na frazy „cena/kup/dostępność”
|
||||
|
||||
***
|
||||
|
||||
# 5) DOŚWIADCZENIE (Retention / Post‑purchase)
|
||||
|
||||
**Cel SEO:** wsparcie po zakupie + redukcja ticketów + upsell/cross‑sell + lojalność.
|
||||
**Dominujące zapytania:** „jak używać”, „problem z…”, „instrukcja”, „serwis”, „akcesoria”.
|
||||
|
||||
### Checklist: co publikować
|
||||
|
||||
* [ ] **Centrum pomocy / Knowledge Base** (artykuły 1 problem = 1 strona).
|
||||
* [ ] **Instrukcje / How‑to** (krok po kroku) + grafiki + wideo + transkrypcja.
|
||||
* [ ] **Troubleshooting** („błąd X”, „nie działa Y”) z jasnymi krokami.
|
||||
* [ ] **FAQ posprzedażowe** (gwarancja, zwroty, serwis).
|
||||
* [ ] **Akcesoria / rozszerzenia / „co jeszcze warto”** (cross‑sell).
|
||||
* [ ] Ten etap w lejku bywa opisywany jako retention/loyalty: treści wsparciowe + pogłębiające relację. [\[searchengi...ournal.com\]](https://www.searchenginejournal.com/write-content-sales-funnel-stage/258359/), [\[blog.hubspot.com\]](https://blog.hubspot.com/marketing/content-for-every-funnel-stage)
|
||||
|
||||
### Checklist: jak ułożyć stronę (on‑page)
|
||||
|
||||
* [ ] „Szybka odpowiedź” na górze + kroki poniżej (najpierw rozwiązanie, potem tło).
|
||||
* [ ] Sekcja „Powiązane artykuły” (silne linkowanie wewnętrzne).
|
||||
* [ ] HowTo/FAQ schema tam, gdzie pasuje + walidacja. [\[umarcomm.umn.edu\]](https://umarcomm.umn.edu/blog/2025/10/03/how-use-structured-data-stand-out-google)
|
||||
* [ ] Meta description opisuje konkretny problem i efekt („Napraw… w 5 krokach”). [\[developers...google.com\]](https://developers.google.com/search/docs/appearance/snippet)
|
||||
|
||||
### KPI
|
||||
|
||||
* [ ] Ruch na frazy problemowe + spadek zgłoszeń (jeśli mierzysz)
|
||||
* [ ] Powroty użytkowników / repeat visits
|
||||
|
||||
***
|
||||
|
||||
## Bonus: szybka mapa „rodzaj wyszukiwania → format treści”
|
||||
|
||||
* **Styczne/problemowe** → poradniki, definicje, how‑to, FAQ (Inicjacja). [\[hashmeta.com\]](https://hashmeta.com/blog/how-to-create-content-for-each-stage-of-the-search-funnel/), [\[semrush.com\]](https://www.semrush.com/blog/types-of-keywords-commercial-informational-navigational-transactional/)
|
||||
* **Kategoria** → przewodniki zakupowe, rankingi (Badania). [\[hashmeta.com\]](https://hashmeta.com/blog/how-to-create-content-for-each-stage-of-the-search-funnel/), [\[semrush.com\]](https://www.semrush.com/blog/types-of-keywords-commercial-informational-navigational-transactional/)
|
||||
* **Konkurencja/porównania** → X vs Y, alternatywy, kalkulatory (Porównywanie). [\[hashmeta.com\]](https://hashmeta.com/blog/how-to-create-content-for-each-stage-of-the-search-funnel/), [\[semrush.com\]](https://www.semrush.com/blog/types-of-keywords-commercial-informational-navigational-transactional/)
|
||||
* **Transakcyjne** → product/offer/pricing, gdzie kupić (Transakcja). [\[semrush.com\]](https://www.semrush.com/blog/types-of-keywords-commercial-informational-navigational-transactional/), [\[developers...google.com\]](https://developers.google.com/search/docs/appearance/snippet)
|
||||
* **Posprzedażowe** → KB, troubleshooting, instrukcje (Doświadczenie). [\[searchengi...ournal.com\]](https://www.searchenginejournal.com/write-content-sales-funnel-stage/258359/), [\[blog.hubspot.com\]](https://blog.hubspot.com/marketing/content-for-every-funnel-stage)
|
||||
@@ -0,0 +1,311 @@
|
||||
### Diagram: Customer Journey + checklisty SEO (high‑level)
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[Inicjacja<br/>Awareness] --> B[Badania<br/>Consideration]
|
||||
B --> C[Porównywanie<br/>Evaluation]
|
||||
C --> D[Transakcja<br/>Decision]
|
||||
D --> E[Doświadczenie<br/>Retention]
|
||||
|
||||
subgraph S1["Inicjacja – SEO"]
|
||||
A1["Poradniki: co to jest / jak działa"]
|
||||
A2["Treści problemowe"]
|
||||
A3["FAQ / Glossary"]
|
||||
A4["Checklisty startowe"]
|
||||
end
|
||||
|
||||
subgraph S2["Badania – SEO"]
|
||||
B1["Rankingi TOP"]
|
||||
B2["Przewodniki zakupowe"]
|
||||
B3["Opinie / Recenzje"]
|
||||
B4["Case studies"]
|
||||
end
|
||||
|
||||
subgraph S3["Porównywanie – SEO"]
|
||||
C1["X vs Y"]
|
||||
C2["Alternatywy"]
|
||||
C3["Tabele porównawcze"]
|
||||
C4["Kalkulatory"]
|
||||
end
|
||||
|
||||
subgraph S4["Transakcja – SEO"]
|
||||
D1["Strony produktowe"]
|
||||
D2["Cenniki / Pakiety"]
|
||||
D3["Gdzie kupić"]
|
||||
D4["Landing pages"]
|
||||
end
|
||||
|
||||
subgraph S5["Doświadczenie – SEO"]
|
||||
E1["Instrukcje How-To"]
|
||||
E2["Troubleshooting"]
|
||||
E3["Knowledge Base"]
|
||||
E4["Cross-sell / Up-sell"]
|
||||
end
|
||||
|
||||
A --> A1
|
||||
A --> A2
|
||||
A --> A3
|
||||
A --> A4
|
||||
|
||||
B --> B1
|
||||
B --> B2
|
||||
B --> B3
|
||||
B --> B4
|
||||
|
||||
C --> C1
|
||||
C --> C2
|
||||
C --> C3
|
||||
C --> C4
|
||||
|
||||
D --> D1
|
||||
D --> D2
|
||||
D --> D3
|
||||
D --> D4
|
||||
|
||||
E --> E1
|
||||
E --> E2
|
||||
E --> E3
|
||||
E --> E4
|
||||
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
### Wariant alternatywny (jeśli chcesz **czystszy diagram pod README / GitHub**)
|
||||
|
||||
Bez `<br/>`, tylko ASCII — **najmniej awaryjna wersja**:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
Inicjacja --> Badania --> Porownywanie --> Transakcja --> Doswiadczenie
|
||||
|
||||
Inicjacja --> I1["Poradniki"]
|
||||
Inicjacja --> I2["FAQ"]
|
||||
Inicjacja --> I3["Problemy"]
|
||||
|
||||
Badania --> B1["Rankingi"]
|
||||
Badania --> B2["Przewodniki"]
|
||||
Badania --> B3["Opinie"]
|
||||
|
||||
Porownywanie --> P1["X vs Y"]
|
||||
Porownywanie --> P2["Alternatywy"]
|
||||
|
||||
Transakcja --> T1["Produkt"]
|
||||
Transakcja --> T2["Cena"]
|
||||
Transakcja --> T3["Kup teraz"]
|
||||
|
||||
Doswiadczenie --> D1["Instrukcje"]
|
||||
Doswiadczenie --> D2["Pomoc"]
|
||||
```
|
||||
|
||||
## Diagram Mermaid: AI Content Ops dla SEO (per etap)
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
%% =========================
|
||||
%% AI SEO CONTENT OPS PIPELINE
|
||||
%% =========================
|
||||
|
||||
subgraph G["Globalne bramki QA (AI) - obowiazkowe dla kazdej strony"]
|
||||
G1["Meta: Title + Description (unikalne, zgodne z intencja)"]
|
||||
G2["On-page: H1/H2, odpowiedz na intencje, linkowanie wewn."]
|
||||
G3["Tech: indexing, duplicate content, canonical, pagination"]
|
||||
G4["Structured Data: FAQ/HowTo/Product/Review (gdy pasuje)"]
|
||||
G5["UX: link text opisowy + crawlable"]
|
||||
G6["Mobile-first + performance budzet"]
|
||||
end
|
||||
|
||||
subgraph P["AI Pipeline (jedna iteracja)"]
|
||||
P0["Brief: etap + persona + intencja + KPI"]
|
||||
P1["Research: SERP intents + PAA/FAQ + konkurencja"]
|
||||
P2["Plan: outline H2/H3 + mapa linkow (prev/next etap)"]
|
||||
P3["Draft: wersja 1 (z sekcja TLDR)"]
|
||||
P4["On-page pass: meta + naglowki + internal links"]
|
||||
P5["Schema pass: dobierz i wygeneruj JSON-LD"]
|
||||
P6["QA pass: zgodnosc z bramkami G1-G6"]
|
||||
P7["Publish: URL + breadcrumbs + monitoring"]
|
||||
P8["Measure: GSC/GA sygnaly + refresh plan"]
|
||||
P0 --> P1 --> P2 --> P3 --> P4 --> P5 --> P6 --> P7 --> P8
|
||||
end
|
||||
|
||||
%% =========================
|
||||
%% CUSTOMER JOURNEY STAGES
|
||||
%% =========================
|
||||
subgraph J["Customer Journey - etapy i AI deliverables"]
|
||||
A["Inicjacja (Awareness)"]
|
||||
B["Badania (Consideration)"]
|
||||
C["Porownywanie (Evaluation)"]
|
||||
D["Transakcja (Decision)"]
|
||||
E["Doswiadczenie (Retention)"]
|
||||
|
||||
A --> B --> C --> D --> E
|
||||
end
|
||||
|
||||
%% =========================
|
||||
%% PER-STAGE CONTENT OUTPUTS
|
||||
%% =========================
|
||||
subgraph OA["AI Output: Inicjacja"]
|
||||
A1["Content types: definicje, poradniki, problem->rozwiazanie, FAQ/glossary"]
|
||||
A2["Prompt focus: wyjasnij prosto, nie sprzedawaj, edukuj"]
|
||||
A3["Schema: FAQ / HowTo (jesli krok po kroku)"]
|
||||
end
|
||||
|
||||
subgraph OB["AI Output: Badania"]
|
||||
B1["Content types: rankingi, przewodniki zakupowe, recenzje, case studies"]
|
||||
B2["Prompt focus: kryteria wyboru, metodologia, rekomendacje dla person"]
|
||||
B3["Schema: FAQ; (opcjonalnie) Review gdy masz realne dane"]
|
||||
end
|
||||
|
||||
subgraph OC["AI Output: Porownywanie"]
|
||||
C1["Content types: X vs Y, alternatywy, tabele, kalkulatory, demo/walkthrough"]
|
||||
C2["Prompt focus: roznice, trade-offs, dla kogo co, obiekcje"]
|
||||
C3["Schema: FAQ; (opcjonalnie) HowTo dla konfiguracji"]
|
||||
end
|
||||
|
||||
subgraph OD["AI Output: Transakcja"]
|
||||
D1["Content types: product/landing, pricing, gdzie kupic, kategorie z filtrami"]
|
||||
D2["Prompt focus: jasne value prop, CTA, dostepnosc, warunki"]
|
||||
D3["Schema: Product/Offer/Breadcrumb (gdy dotyczy)"]
|
||||
end
|
||||
|
||||
subgraph OE["AI Output: Doswiadczenie"]
|
||||
E1["Content types: KB, instrukcje, troubleshooting, akcesoria/upsell"]
|
||||
E2["Prompt focus: szybka diagnoza, kroki naprawy, linki do powiazanych"]
|
||||
E3["Schema: HowTo / FAQ"]
|
||||
end
|
||||
|
||||
%% =========================
|
||||
%% WIRING PIPELINE TO STAGES
|
||||
%% =========================
|
||||
A -. "AI iteracja P0-P8" .-> P0
|
||||
B -. "AI iteracja P0-P8" .-> P0
|
||||
C -. "AI iteracja P0-P8" .-> P0
|
||||
D -. "AI iteracja P0-P8" .-> P0
|
||||
E -. "AI iteracja P0-P8" .-> P0
|
||||
|
||||
A --> OA
|
||||
B --> OB
|
||||
C --> OC
|
||||
D --> OD
|
||||
E --> OE
|
||||
|
||||
%% QA gates referenced by pipeline
|
||||
P6 --> G1
|
||||
P6 --> G2
|
||||
P6 --> G3
|
||||
P6 --> G4
|
||||
P6 --> G5
|
||||
P6 --> G6
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## Co dokładnie jest “AI‑ready” w tym diagramie (krótko i konkretnie)
|
||||
|
||||
1. **Jednolity pipeline P0–P8** (agent robi zawsze te same kroki), a etap (A–E) jedynie **zmienia brief i outputy**.
|
||||
2. Masz wprost wpisane bramki jakości, które w materiałach wewnętrznych przewijają się jako SEO must‑have (duplicate/canonical/pagination/structured data/IA/perf/mobile).
|
||||
Diagram jest:
|
||||
|
||||
* ✅ parsowalny
|
||||
* ✅ bez znaków problematycznych
|
||||
* ✅ nadaje się do README / dokumentacji systemowej
|
||||
* ✅ logicznie spójny z poprzednim diagramem (pipeline + QA gates)
|
||||
|
||||
***
|
||||
|
||||
## Diagram 2: AI Agent Router (Sequence Diagram)
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
autonumber
|
||||
|
||||
participant HQ as HQ / Orchestrator
|
||||
participant R as ResearchAgent
|
||||
participant O as OutlineAgent
|
||||
participant W as WriterAgent
|
||||
participant S as SEOAgent
|
||||
participant C as SchemaAgent
|
||||
participant Q as QAAgent
|
||||
participant P as PublisherAgent
|
||||
participant A as AnalystAgent
|
||||
|
||||
%% ===== BRIEF =====
|
||||
HQ->>R: Brief JSON (stage, persona, intent, keywords, KPI)
|
||||
|
||||
%% ===== RESEARCH =====
|
||||
R->>R: SERP analysis + PAA + competitors
|
||||
R-->>HQ: Research JSON (intents, gaps, angles)
|
||||
|
||||
%% ===== OUTLINE =====
|
||||
HQ->>O: Research JSON
|
||||
O->>O: Build outline (H1-H3, sections, FAQs)
|
||||
O-->>HQ: Outline JSON
|
||||
|
||||
%% ===== WRITING =====
|
||||
HQ->>W: Outline JSON + tone rules
|
||||
W->>W: Draft content (TLDR, sections, internal links)
|
||||
W-->>HQ: Draft MD/HTML
|
||||
|
||||
%% ===== ON-PAGE SEO =====
|
||||
HQ->>S: Draft + keyword map
|
||||
S->>S: Optimize titles, meta, headings, links
|
||||
S-->>HQ: SEO-ready content
|
||||
|
||||
%% ===== STRUCTURED DATA =====
|
||||
HQ->>C: SEO-ready content
|
||||
C->>C: Generate JSON-LD (FAQ, HowTo, Product)
|
||||
C-->>HQ: Content + Schema
|
||||
|
||||
%% ===== QUALITY GATES =====
|
||||
HQ->>Q: Content + Schema
|
||||
Q->>Q: QA checks (intent, dup, canonical, mobile, perf)
|
||||
Q-->>HQ: QA report (pass / fix list)
|
||||
|
||||
%% ===== PUBLISH =====
|
||||
HQ->>P: Approved content
|
||||
P->>P: Publish + index + breadcrumbs
|
||||
P-->>HQ: URL + publish metadata
|
||||
|
||||
%% ===== MEASURE & FEEDBACK =====
|
||||
HQ->>A: URL + KPI
|
||||
A->>A: Analyze GSC/GA signals
|
||||
A-->>HQ: Insights + refresh recommendations
|
||||
```
|
||||
***
|
||||
|
||||
## Jak to czytać (krótko, systemowo)
|
||||
|
||||
### 1. HQ / Orchestrator
|
||||
|
||||
* jedyny „świadomy” agent
|
||||
* zna **etap customer journey**
|
||||
* decyduje **kiedy iterować, a kiedy publikować**
|
||||
|
||||
### 2. Agenci są **wąsko wyspecjalizowani**
|
||||
|
||||
* Research ≠ Outline ≠ Writing ≠ SEO ≠ Schema ≠ QA
|
||||
* zero mieszania odpowiedzialności
|
||||
|
||||
### 3. Artefakty są jawne
|
||||
|
||||
* **JSON** → decyzje
|
||||
* **MD / HTML** → treść
|
||||
* **JSON‑LD** → struktura
|
||||
* **QA report** → bramka decyzyjna
|
||||
|
||||
To dokładnie pasuje do Twojego podejścia:
|
||||
|
||||
> *deterministyczne, audytowalne, reproducible workflows*
|
||||
|
||||
***
|
||||
|
||||
## Bonus: mapowanie agentów na etapy (mental model)
|
||||
|
||||
| Etap | Najważniejszy agent |
|
||||
| ------------- | ------------------- |
|
||||
| Inicjacja | Research + Writer |
|
||||
| Badania | Outline + Writer |
|
||||
| Porównywanie | Writer + SEO |
|
||||
| Transakcja | SEO + Schema |
|
||||
| Doświadczenie | QA + Analyst |
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
Poniżej masz **konkretny, README‑ready opis HOOK‑a typu `command‑logger`**, dopasowany do Twojego stylu operacyjnego (OpenClaw / org‑mode / „plaintext productivity”). To **opis projektowy + kontrakt**, nie marketing.
|
||||
|
||||
***
|
||||
|
||||
# HOOK: `command-logger`
|
||||
|
||||
## Cel
|
||||
|
||||
`command-logger` to **globalny hook obserwacyjny**, który **rejestruje każde polecenie / wywołanie SKILL‑a** wraz z kontekstem wykonania, **bez wpływu na logikę biznesową**.
|
||||
Jego jedyną odpowiedzialnością jest **audit trail** i **rekonstrukcja przebiegu pracy**.
|
||||
|
||||
> To jest odpowiednik `bash history + strace + journalctl`, ale na poziomie **AI / SKILL routera**.
|
||||
|
||||
***
|
||||
|
||||
## Miejsce w architekturze
|
||||
|
||||
* typ: **HOOK (side‑effect only)**
|
||||
* moment: **BEFORE + AFTER execution**
|
||||
* zasięg: **router + wszystkie sub‑skills**
|
||||
* brak modyfikacji danych wejściowych/wyjściowych
|
||||
|
||||
<!---->
|
||||
|
||||
User → Router
|
||||
↳ HOOK: command-logger (BEFORE)
|
||||
→ Skill / Sub-skill
|
||||
↳ HOOK: command-logger (AFTER)
|
||||
|
||||
***
|
||||
|
||||
## Co jest logowane (kontrakt)
|
||||
|
||||
### 1. Metadane techniczne
|
||||
|
||||
* `timestamp_start`
|
||||
* `timestamp_end`
|
||||
* `duration_ms`
|
||||
* `session_id`
|
||||
* `trace_id`
|
||||
* `parent_trace_id`
|
||||
* `host` / `agent_id`
|
||||
|
||||
### 2. Kontekst wykonania
|
||||
|
||||
* `actor` (user / system / agent)
|
||||
* `skill_name`
|
||||
* `skill_version`
|
||||
* `hook_phase` (`before` | `after`)
|
||||
* `stage` (np. Inicjacja / Badania / Transakcja)
|
||||
* `intent` (jeśli wykryty przez router)
|
||||
|
||||
### 3. Dane operacyjne (bezpieczne)
|
||||
|
||||
* `command` – **skrót/identyfikator**, nie pełny prompt
|
||||
* `input_fingerprint` (hash / checksum)
|
||||
* `output_fingerprint`
|
||||
* `status` (`ok` | `error`)
|
||||
* `error_type` (jeśli wystąpił)
|
||||
|
||||
> **Zasada**: logujemy **fakty o operacji**, nie jej treść semantyczną.
|
||||
|
||||
***
|
||||
|
||||
## Format zapisu (org‑mode friendly)
|
||||
|
||||
### Jeden plik = jeden strumień pracy
|
||||
|
||||
`command-log.org`
|
||||
|
||||
```org
|
||||
* 2026-03-16 09:12:04 | router
|
||||
:PROPERTIES:
|
||||
:session: 9f3a…
|
||||
:trace: r-001
|
||||
:phase: before
|
||||
:actor: user
|
||||
:stage: Badania
|
||||
:intent: seo-research
|
||||
:END:
|
||||
Command: route → seo-research
|
||||
Input: sha256:8ac7…
|
||||
```
|
||||
|
||||
```org
|
||||
* 2026-03-16 09:12:18 | seo-research
|
||||
:PROPERTIES:
|
||||
:session: 9f3a…
|
||||
:trace: r-001
|
||||
:parent: r-000
|
||||
:phase: after
|
||||
:status: ok
|
||||
:duration_ms: 14231
|
||||
:END:
|
||||
Output: sha256:91bd…
|
||||
```
|
||||
|
||||
✅ spełnia:
|
||||
|
||||
* plaintext
|
||||
* diff‑friendly
|
||||
* audytowalne
|
||||
* nadaje się do grep / ripgrep / org‑agenda
|
||||
|
||||
***
|
||||
|
||||
## Zasady projektowe (ważne)
|
||||
|
||||
### ✅ Co `command-logger` MOŻE
|
||||
|
||||
* rejestrować
|
||||
* tagować
|
||||
* agregować
|
||||
* eksportować (np. do Splunk / JSONL)
|
||||
|
||||
### ❌ Czego NIE MOŻE
|
||||
|
||||
* zmieniać inputu
|
||||
* zmieniać outputu
|
||||
* blokować wykonania
|
||||
* podejmować decyzji
|
||||
|
||||
> Jeśli HOOK zaczyna „myśleć” → to **nie jest już hook**, tylko policy‑engine.
|
||||
|
||||
***
|
||||
|
||||
## Przykładowa definicja (konceptualna)
|
||||
|
||||
```yaml
|
||||
hook:
|
||||
name: command-logger
|
||||
type: observer
|
||||
phases: [before, after]
|
||||
scope: global
|
||||
output:
|
||||
format: org
|
||||
file: command-log.org
|
||||
privacy:
|
||||
log_payload: false
|
||||
use_fingerprints: true
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
## Typowe use‑case’y
|
||||
|
||||
* ✅ **rekonstrukcja dnia pracy** („co robiłem i dlaczego”)
|
||||
* ✅ **debug AI** (gdzie poszło nie tak)
|
||||
* ✅ **time audit** pod książkę o produktywności
|
||||
* ✅ **compliance / audit trail**
|
||||
* ✅ **trening systemu** (analiza sekwencji, nie treści)
|
||||
|
||||
***
|
||||
|
||||
## Anty‑wzorce
|
||||
|
||||
❌ logowanie pełnych promptów
|
||||
❌ logowanie danych wrażliwych
|
||||
❌ zależność innych SKILL‑i od loggera
|
||||
❌ brak identyfikatorów sesji / trace
|
||||
|
||||
***
|
||||
|
||||
## TL;DR (jednym zdaniem)
|
||||
|
||||
> **`command-logger` to czarny skrzynkowy rejestr zdarzeń**, który zapisuje *że coś się stało, kiedy, gdzie i z jakim skutkiem* — **bez ingerencji w to, co i dlaczego**.
|
||||
|
||||
***
|
||||
|
||||
Jeśli chcesz, w kolejnym kroku mogę:
|
||||
|
||||
* dodać **diagram Mermaid tylko dla HOOK‑ów**
|
||||
* rozpisać **drugiego hooka**: `decision-logger` (tylko dla routera)
|
||||
* albo przygotować **OpenClaw SKILL: hooks/command-logger** (router + middleware)
|
||||
@@ -0,0 +1,244 @@
|
||||
Poniżej masz **opracowanie merytoryczne** tego materiału – tak, żeby dało się go użyć **do prezentacji, strategii marketingowej, opisu customer journey albo jako rozdział w dokumencie/README**. Trzymam się sensu grafiki, ale rozwijam ją o kontekst i praktyczne wnioski.
|
||||
|
||||
***
|
||||
|
||||
## 1. Czym jest ten model?
|
||||
|
||||
Materiał przedstawia **ścieżkę decyzyjną klienta (Customer Journey)** w procesie zakupowym – od pierwszego kontaktu z potrzebą aż po doświadczenie po zakupie – oraz **rodzaje wyszukiwań**, które użytkownik wykonuje na różnych etapach.
|
||||
|
||||
To połączenie:
|
||||
|
||||
* **etapów decyzyjnych użytkownika**
|
||||
* **intencji wyszukiwania (search intent)**
|
||||
|
||||
Kluczowa idea:
|
||||
👉 *użytkownik w różnych momentach zadaje różne pytania i oczekuje innego typu odpowiedzi / treści*.
|
||||
|
||||
***
|
||||
|
||||
## 2. Etapy ścieżki klienta (górna część diagramu)
|
||||
|
||||
### 2.1 Inicjacja
|
||||
|
||||
**Cel użytkownika:**
|
||||
Uzyskanie podstawowych informacji i zrozumienie problemu lub potrzeby zakupowej.
|
||||
|
||||
**Charakterystyka:**
|
||||
|
||||
* użytkownik dopiero uświadamia sobie potrzebę
|
||||
* nie zna jeszcze marek ani konkretnych produktów
|
||||
* szuka ogólnej wiedzy
|
||||
|
||||
**Typowe pytania:**
|
||||
|
||||
* „co to jest…”
|
||||
* „jak działa…”
|
||||
* „czy warto…”
|
||||
* „jak wybrać…”
|
||||
|
||||
**Przykładowe treści:**
|
||||
|
||||
* artykuły edukacyjne
|
||||
* poradniki „dla początkujących”
|
||||
* wpisy blogowe
|
||||
* wideo wyjaśniające
|
||||
|
||||
👉 **To etap budowania świadomości, nie sprzedaży.**
|
||||
|
||||
***
|
||||
|
||||
### 2.2 Badania
|
||||
|
||||
**Cel użytkownika:**
|
||||
Poznanie dostępnych opcji, rekomendacji i wstępna selekcja produktów.
|
||||
|
||||
**Charakterystyka:**
|
||||
|
||||
* użytkownik zna już kategorię produktu
|
||||
* zaczyna rozpoznawać marki
|
||||
* sprawdza opinie i rankingi
|
||||
|
||||
**Typowe pytania:**
|
||||
|
||||
* „najlepszy …”
|
||||
* „ranking …”
|
||||
* „opinie …”
|
||||
* „polecane …”
|
||||
|
||||
**Przykładowe treści:**
|
||||
|
||||
* rankingi i zestawienia
|
||||
* recenzje
|
||||
* poradniki zakupowe
|
||||
* artykuły „top 10”
|
||||
|
||||
👉 **To etap wpływu i zaufania.**
|
||||
|
||||
***
|
||||
|
||||
### 2.3 Porównywanie
|
||||
|
||||
**Cel użytkownika:**
|
||||
Dogłębne porównanie konkretnych opcji przed podjęciem decyzji.
|
||||
|
||||
**Charakterystyka:**
|
||||
|
||||
* użytkownik ma shortlistę produktów
|
||||
* porównuje parametry, funkcje i cenę
|
||||
* analizuje „za i przeciw”
|
||||
|
||||
**Typowe pytania:**
|
||||
|
||||
* „X vs Y”
|
||||
* „różnice między…”
|
||||
* „czy X ma funkcję…”
|
||||
* „który lepszy…”
|
||||
|
||||
**Przykładowe treści:**
|
||||
|
||||
* porównania 1:1
|
||||
* tabele porównawcze
|
||||
* szczegółowe recenzje
|
||||
* case studies
|
||||
|
||||
👉 **To etap racjonalizacji decyzji.**
|
||||
|
||||
***
|
||||
|
||||
### 2.4 Transakcja
|
||||
|
||||
**Cel użytkownika:**
|
||||
Zakup produktu w najlepszych możliwych warunkach.
|
||||
|
||||
**Charakterystyka:**
|
||||
|
||||
* decyzja jest prawie podjęta
|
||||
* liczy się dostępność, cena, szybkość
|
||||
* użytkownik porównuje sklepy, nie produkt
|
||||
|
||||
**Typowe pytania:**
|
||||
|
||||
* „gdzie kupić…”
|
||||
* „cena …”
|
||||
* „promocja …”
|
||||
* „dostępność …”
|
||||
|
||||
**Przykładowe treści:**
|
||||
|
||||
* strony produktowe
|
||||
* oferty cenowe
|
||||
* landing pages
|
||||
* lokalizatory sklepów
|
||||
|
||||
👉 **To etap konwersji.**
|
||||
|
||||
***
|
||||
|
||||
### 2.5 Doświadczenie
|
||||
|
||||
**Cel użytkownika:**
|
||||
Korzystanie z produktu i kontakt z marką po zakupie.
|
||||
|
||||
**Charakterystyka:**
|
||||
|
||||
* użytkownik jest już klientem
|
||||
* potrzebuje wsparcia lub inspiracji
|
||||
* może wrócić po kolejne zakupy
|
||||
|
||||
**Typowe pytania:**
|
||||
|
||||
* „jak używać…”
|
||||
* „problem z…”
|
||||
* „akcesoria do…”
|
||||
* „serwis / gwarancja”
|
||||
|
||||
**Przykładowe treści:**
|
||||
|
||||
* FAQ
|
||||
* instrukcje
|
||||
* helpdesk / support
|
||||
* cross‑sell i up‑sell
|
||||
|
||||
👉 **To etap lojalności i retencji.**
|
||||
|
||||
***
|
||||
|
||||
## 3. Rodzaje wyszukiwań (dolna część diagramu)
|
||||
|
||||
Te paski pokazują, **jakie typy zapytań dominują na różnych etapach**.
|
||||
|
||||
### 3.1 Wyszukiwanie marki
|
||||
|
||||
* zapytania zawierające nazwę marki
|
||||
* występują na wielu etapach, ale nasilają się od badań do transakcji
|
||||
* świadczą o **rozpoznawalności i zaufaniu**
|
||||
|
||||
👉 Przykład: „Dell laptop”, „Samsung opinie”
|
||||
|
||||
***
|
||||
|
||||
### 3.2 Wyszukiwanie kategorii
|
||||
|
||||
* ogólne zapytania produktowe
|
||||
* dominują na etapie inicjacji i badań
|
||||
* użytkownik jeszcze nie wybrał marki
|
||||
|
||||
👉 Przykład: „laptop do pracy”, „monitor 27 cali”
|
||||
|
||||
***
|
||||
|
||||
### 3.3 Wyszukiwanie styczne (problemowe / tematyczne)
|
||||
|
||||
* zapytania związane z potrzebą lub problemem
|
||||
* często bardzo szerokie
|
||||
* kluczowe na początku ścieżki
|
||||
|
||||
👉 Przykład: „jak przyspieszyć pracę”, „sprzęt do home office”
|
||||
|
||||
***
|
||||
|
||||
### 3.4 Wyszukiwanie konkurencyjnych marek
|
||||
|
||||
* zapytania porównawcze między markami
|
||||
* dominują na etapie porównywania
|
||||
* użytkownik jest blisko decyzji
|
||||
|
||||
👉 Przykład: „Dell vs Lenovo”, „iPhone czy Samsung”
|
||||
|
||||
***
|
||||
|
||||
## 4. Najważniejsze wnioski praktyczne
|
||||
|
||||
### 1️⃣ Jedna treść ≠ jeden użytkownik
|
||||
|
||||
Każdy etap wymaga **innego typu treści i innego języka**.
|
||||
|
||||
### 2️⃣ Sprzedaż za wcześnie nie działa
|
||||
|
||||
Treści transakcyjne na etapie inicjacji są ignorowane.
|
||||
|
||||
### 3️⃣ SEO = intencja, nie słowa kluczowe
|
||||
|
||||
To **intencja użytkownika** decyduje, czy treść zadziała.
|
||||
|
||||
### 4️⃣ Doświadczenie po zakupie to część lejka
|
||||
|
||||
Obsługa, wiedza i wsparcie generują:
|
||||
|
||||
* powroty
|
||||
* rekomendacje
|
||||
* kolejne zakupy
|
||||
|
||||
***
|
||||
|
||||
## 5. Jak możesz to dalej wykorzystać?
|
||||
|
||||
Jeśli chcesz, mogę:
|
||||
|
||||
* ✅ przerobić to na **tekst do prezentacji (slajdy)**
|
||||
* ✅ rozpisać **checklistę treści SEO dla każdego etapu**
|
||||
* ✅ przygotować **wersję techniczną (np. pod AI / Copilota / agentów)**
|
||||
* ✅ zamienić to w **org‑mode / markdown / README**
|
||||
* ✅ narysować **diagram w Mermaid (bez błędów parsera)**
|
||||
|
||||
Powiedz tylko **do czego dokładnie** ma to służyć (marketing, SEO, strategia produktu, dokumentacja, AI-agent).
|
||||
@@ -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