Files
DBAdmin/inbox/PaperClip/0_paperclip_all_tasks.md
T
2026-05-18 06:40:19 +00:00

1553 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PaperClip Multi-Blog: Wszystkie zadania w jednym pliku
Ten plik zbiera w jednym miejscu komplet zadań dla wieloblogowego systemu PaperClip. Możesz traktować go jako backlog operacyjny, specyfikację agentów, prompt book albo materiał wejściowy do rozbicia na `agents/`, `prompts/`, `schemas/` i `workflows/`.
## Stałe założenia systemu
- **Blog personalny**: główny blog spajający narrację autora, doświadczenie, projekty i miesięczne podsumowania.
- **Blogi niszowe**: osobne przestrzenie dla baz danych, AI/automatyzacji, web/CMS/monetyzacji oraz knowledge management.
- **Architektura treści**: hub-and-spoke, czyli 5 głównych hubów i powiązane spokei.
- **Parametryzacja**: każdy task powinien przyjmować `blog_id`, `hub_id`, `spoke_id` i `content_item_id`.
- **Publikacja**: treści mogą być automatyzowane, ale finalne zatwierdzenie wymaga human gate.
- **Jakość**: brak publikacji bez wkładu autora, QA SEO, linkowania wewnętrznego i decyzji o AI disclosure.
## Globalne zmienne
```yaml
content_item_id: "{content_item_id}"
blog_id: "{blog_id}"
blog_domain: "{blog_domain}"
hub_id: "{hub_id}"
hub_name: "{hub_name}"
hub_url: "{hub_url}"
spoke_id: "{spoke_id}"
working_title: "{working_title}"
primary_keyword: "{primary_keyword}"
secondary_keywords: "{secondary_keywords}"
search_intent: "{search_intent}"
funnel_stage: "{funnel_stage}"
content_type: "{content_type}"
target_audience: "{target_audience}"
author_name: "Paweł Domański"
author_angle: "{author_angle}"
cms_target: "{cms_target}"
primary_cta: "{primary_cta}"
cross_link_to_blog: "{cross_link_to_blog}"
publication_date: "{publication_date}"
distribution_channels: "{distribution_channels}"
language: "pl-PL"
country: "PL"
```
## Rejestr blogów
| blog_id | Rola | Ton | Główne CTA |
|---|---|---|---|
| `personal` | Blog osobisty i centralny hub zaufania | osobisty, ekspercki, konkretny | newsletter, konsultacja, case study |
| `dbadmin` | Bazy danych, HA, backup, troubleshooting | techniczny, precyzyjny, checklistowy | audyt DBA, checklista, konsultacja |
| `ai_automation` | AI, LLM, agenci, PaperClip/OpenClaw | techniczny maker, architektoniczny | demo pipeline, repo, newsletter |
| `web_monetization` | CMS, web stack, SEO, monetyzacja | praktyczny, decyzyjny | szablony, audyt strony, mini-kurs |
| `knowledge_productivity` | Org-mode, PKM, dokumentacja, produktywność | spokojny, systemowy, praktyczny | template vault, workflow pack |
## Huby
| hub_id | Hub | Primary blog |
|---|---|---|
| `H1` | AI/LLM i automatyzacja agentowa | `ai_automation` |
| `H2` | Bazy danych, HA i troubleshooting | `dbadmin` |
| `H3` | Self-hosted web stack i CMS | `web_monetization` |
| `H4` | Knowledge management i produktywność techniczna | `knowledge_productivity` |
| `H5` | Marka osobista technicznego eksperta | `personal` |
## Master prompt systemowy
```text
Jesteś PaperClip Content Machine, systemem agentowym do tworzenia, kontroli, publikacji i optymalizacji treści w wieloblogowej sieci eksperckiej Pawła Domańskiego.
Twoim celem jest tworzyć treści, które:
1. pokazują realne doświadczenie autora w DBA, CMS, DevOps, self-hosted infrastructure, AI/LLM i automatyzacji,
2. budują topical authority przez strukturę hub-and-spoke,
3. wzmacniają blog personalny jako centralną warstwę zaufania,
4. rozwijają blogi niszowe przez praktyczne tutoriale, checklisty, runbooki, case studies i porównania,
5. są gotowe do publikacji dopiero po human edit i QA.
Nie twórz masowej treści SEO bez wartości. Nie pisz pustych wstępów. Nie używaj tonu marketingowego typu hype. Nie wymyślaj faktów, wyników, doświadczeń ani metryk. Jeżeli czegoś brakuje, oznacz to jako `[DO UZUPEŁNIENIA]`.
```
---
# Zadania konfiguracyjne
## TASK-001: Utworzenie lub aktualizacja Blog Registry
**Cel**: utrzymać centralną konfigurację blogów dla PaperClip.
**Wejście**
```yaml
blogs:
- blog_id
- domain
- role
- audience
- tone_of_voice
- cms_target
- primary_cta
- status
```
**Prompt**
```text
Utwórz lub zaktualizuj Blog Registry dla wieloblogowego systemu PaperClip.
Dla każdego bloga zwróć:
- blog_id,
- domenę,
- rolę w systemie,
- grupę odbiorców,
- ton komunikacji,
- domyślne CTA,
- CMS target,
- status konfiguracji,
- uwagi wdrożeniowe.
Jeżeli domena lub CMS target są placeholderami, oznacz `needs_configuration`.
```
**Wynik**
```json
{
"blog_registry": [],
"missing_configuration": [],
"ready_blog_ids": []
}
```
**Done when**
- każdy blog ma `blog_id`,
- każdy blog ma CTA,
- każdy blog ma CMS target albo status `needs_configuration`.
## TASK-002: Utworzenie mapy hubów
**Cel**: zdefiniować 5 hubów i ich rolę strategiczną.
**Prompt**
```text
Utwórz mapę hubów dla PaperClip.
Dla każdego hubu podaj:
- hub_id,
- nazwę,
- primary_blog_id,
- obietnicę dla czytelnika,
- seed keywords,
- typy treści,
- reguły linkowania,
- conversion goal.
Huby muszą razem pokrywać: AI/automatyzację, bazy danych, web/CMS, knowledge management i markę osobistą.
```
**Wynik**
```json
{
"hubs": [
{
"hub_id": "H1",
"name": "",
"primary_blog_id": "",
"core_promise": "",
"seed_keywords": [],
"internal_link_rule": "",
"conversion_goal": ""
}
]
}
```
**Done when**
- istnieje 5 hubów,
- każdy hub ma primary blog,
- każdy hub ma regułę linkowania.
## TASK-003: Utworzenie mapy spoke’ów
**Cel**: zbudować listę tematów wspierających huby.
**Prompt**
```text
Na podstawie hubów utwórz mapę spoke’ów.
Dla każdego spokea podaj:
- spoke_id,
- hub_id,
- target_blog_id,
- primary_keyword,
- working_title,
- content_type,
- search_intent,
- cross_link_to_blog,
- suggested_cta.
Każdy hub powinien mieć minimum 10 spoke’ów. Tematy nie mogą się kanibalizować.
```
**Wynik**
```json
{
"spokes": [],
"cannibalization_warnings": []
}
```
**Done when**
- minimum 50 spoke’ów,
- każdy spoke ma przypisany blog,
- każdy spoke ma intencję wyszukiwania.
---
# Zadania SEO
## TASK-010: Keyword enrichment
**Cel**: wzbogacić temat o frazy, intencję i SERP.
**Prompt**
```text
Wzbogacasz temat o SEO.
Dane:
- blog_id: {blog_id}
- hub_id: {hub_id}
- spoke_id: {spoke_id}
- primary_keyword: {primary_keyword}
- working_title: {working_title}
- country: PL
- language: pl-PL
Zwróć:
- potwierdzoną intencję wyszukiwania,
- 5 fraz long-tail,
- 5 pytań czytelników,
- typy wyników SERP,
- możliwe kąty konkurencji,
- lukę informacyjną,
- ryzyko kanibalizacji,
- listę danych do pobrania z DataForSEO/GSC/SerpBear.
Nie zgaduj wolumenu ani trudności. Jeśli brak danych, ustaw `null`.
```
**Wynik**
```json
{
"primary_keyword": "",
"intent": "",
"intent_confidence": "low|medium|high",
"long_tail_keywords": [],
"reader_questions": [],
"serp_patterns": [],
"content_gap": "",
"cannibalization_risk": "low|medium|high",
"data_needed": {
"dataforseo_volume": null,
"keyword_difficulty": null,
"gsc_impressions": null,
"current_position": null
}
}
```
**Done when**
- topic ma frazy wspierające,
- topic ma intencję,
- topic ma jasną lukę informacyjną.
## TASK-011: DataForSEO/GSC task builder
**Cel**: przygotować zadania do pobrania danych SEO.
**Prompt**
```text
Przygotuj zadania DataForSEO, GSC i SerpBear dla listy keywordów.
Dane:
- keyword_rows: {keyword_rows}
- target_domains: {target_domains}
- country: PL
- language: pl
Priorytety:
- high: frazy BOFU, transactional, high business value,
- medium: primary spoke keywords,
- low: supporting keywords.
Zwróć JSON gotowy do użycia przez integracje.
```
**Wynik**
```json
{
"dataforseo_tasks": [],
"gsc_queries": [],
"serpbear_tracking": []
}
```
**Done when**
- każda ważna fraza ma przypisany typ pomiaru,
- domeny są przypisane do blogów.
## TASK-012: Wykrywanie kanibalizacji
**Cel**: uniknąć kilku wpisów odpowiadających na tę samą intencję.
**Prompt**
```text
Sprawdź ryzyko kanibalizacji.
Dane:
- proposed_topic: {working_title}
- primary_keyword: {primary_keyword}
- existing_spokes: {existing_spokes}
- existing_keywords: {existing_keywords}
Zwróć:
- poziom ryzyka,
- overlapping posts,
- rekomendację: create_new, merge, refresh_existing, change_angle lub hold,
- nowy angle, jeśli potrzebny,
- rekomendację linkowania.
```
**Wynik**
```json
{
"cannibalization_risk": "low|medium|high",
"overlapping_posts": [],
"recommended_action": "create_new|merge|refresh_existing|change_angle|hold",
"new_angle_if_needed": "",
"internal_linking_recommendation": ""
}
```
**Done when**
- jest decyzja,
- przy ryzyku medium/high temat nie trafia do draftu bez zmiany angle.
---
# Zadania briefowania
## TASK-020: Utworzenie topic card
**Cel**: zamienić pomysł lub wiersz kalendarza w kartę zadania.
**Prompt**
```text
Utwórz topic card dla PaperClip.
Dane:
- blog_id: {blog_id}
- hub_id: {hub_id}
- spoke_id: {spoke_id}
- working_title: {working_title}
- primary_keyword: {primary_keyword}
- content_type: {content_type}
- search_intent: {search_intent}
- author_note: {author_note}
Nie pisz jeszcze briefu ani draftu. Skup się na problemie czytelnika, celu biznesowym i unikalnym kącie autora.
```
**Wynik**
```json
{
"topic_card_id": "TC-{hub_id}-{spoke_id}-{yyyymmdd}",
"blog_id": "",
"hub_id": "",
"spoke_id": "",
"reader_problem": "",
"author_angle_needed": "",
"why_now": "",
"internal_link_targets": [],
"status": "idea_seed"
}
```
**Done when**
- karta ma problem czytelnika,
- karta ma author angle,
- karta ma link targets.
## TASK-021: Utworzenie content brief
**Cel**: stworzyć brief dla writer-agenta i autora.
**Prompt**
```text
Stwórz content brief.
Dane:
- topic_card: {topic_card}
- seo_enriched: {seo_enriched}
- blog_registry_entry: {blog_registry_entry}
- hub_definition: {hub_definition}
- author_angle: {author_angle}
Zwróć Markdown:
# Content Brief: {working_title}
## Metadata
- blog_id:
- hub_id:
- spoke_id:
- primary_keyword:
- secondary_keywords:
- search_intent:
- funnel_stage:
- content_type:
- recommended_schema:
- primary_cta:
## Reader problem
## Author angle
## Outline
## Internal links
## External sources needed
## SEO fields
- title_tag:
- meta_description:
- slug:
## QA checklist
Jeśli brakuje wkładu autora, oznacz `[WYMAGA WKŁADU AUTORA]`.
```
**Wynik**
```yaml
content_brief_markdown: "..."
brief_status: "brief_ready|needs_author_input"
missing_inputs: []
```
**Done when**
- brief ma outline,
- brief ma SEO fields,
- brief ma author inserts,
- brief ma linki wewnętrzne.
---
# Zadania pisania treści
## TASK-030: Draft artykułu spoke
**Cel**: stworzyć pierwszy draft posta wspierającego hub.
**Prompt**
```text
Napisz draft artykułu spoke w Markdown.
Dane:
- content_brief: {content_brief}
- blog_voice_prompt: {blog_voice_prompt}
- author_notes: {author_notes}
Wymagania:
- język polski,
- techniczny i konkretny styl,
- H1 zgodny z intencją,
- H2/H3 odpowiadające na realne pytania,
- primary keyword użyty naturalnie,
- miejsca na doświadczenie autora oznaczone `[DO UZUPEŁNIENIA PRZEZ AUTORA]`,
- miejsca na screenshoty oznaczone `[SCREENSHOT: ...]`,
- miejsca na config/code w fenced code blocks,
- CTA zgodne z blogiem,
- sekcja “Co dalej?”.
Nie wymyślaj metryk, wdrożeń, źródeł ani historii.
```
**Wynik**
```yaml
draft_markdown: "..."
missing_author_inserts: []
suggested_screenshots: []
suggested_internal_links: []
ai_disclosure_needed: "yes|no"
```
**Done when**
- draft da się czytać jako pełny artykuł,
- wszystkie braki są jawnie oznaczone,
- nie ma wymyślonych danych.
## TASK-031: Pillar page
**Cel**: stworzyć stronę hubu jako mapę tematu.
**Prompt**
```text
Utwórz pillar page dla hubu.
Dane:
- hub_id: {hub_id}
- hub_name: {hub_name}
- primary_blog_id: {primary_blog_id}
- hub_url: {hub_url}
- core_promise: {core_promise}
- seed_keywords: {seed_keywords}
- spokes: {spokes}
Struktura:
# {hub_name}
## Dla kogo jest ten hub
## Co znajdziesz w tym hubie
## Najważniejsze ścieżki
## Polecana kolejność czytania
## Wszystkie artykuły w hubie
## Jak ten hub łączy się z innymi blogami
## CTA
Pillar ma być mapą i nawigacją, nie rozwlekłym artykułem.
```
**Wynik**
```yaml
pillar_markdown: "..."
linked_spokes: []
missing_spokes: []
```
**Done when**
- pillar linkuje do wszystkich spoke’ów,
- zawiera ścieżki czytania,
- ma CTA.
## TASK-032: Personal monthly roundup
**Cel**: spiąć publikacje z blogów niszowych w osobistą narrację.
**Prompt**
```text
Stwórz miesięczny wpis roundup na blog personalny.
Dane:
- month: {month}
- published_posts: {published_posts}
- active_hubs: {active_hubs}
- lessons_learned: {lessons_learned}
- next_month_focus: {next_month_focus}
Struktura:
1. Co budowałem w tym miesiącu.
2. Najważniejsze publikacje.
3. Najciekawsze problemy techniczne.
4. Co zmieniłbym w pipeline.
5. Co planuję w kolejnym miesiącu.
6. Linki do hubów i spoke’ów.
Ton: osobisty, techniczny, konkretny, bez autopromocji.
```
**Wynik**
```yaml
roundup_markdown: "..."
linked_posts: []
next_month_actions: []
```
**Done when**
- roundup linkuje do nisz,
- pokazuje proces autora,
- wskazuje następne kroki.
---
# Zadania dla typów treści
## TASK-040: How-to article
**Prompt**
```text
Napisz artykuł typu how-to.
Struktura:
1. Problem i kontekst.
2. Kiedy użyć tego podejścia.
3. Wymagania wstępne.
4. Kroki wdrożenia.
5. Weryfikacja.
6. Typowe błędy.
7. Rollback lub alternatywa.
8. Jak zintegrować z PaperClip lub workflow autora.
Każdy krok musi zawierać warunek sukcesu albo sposób sprawdzenia.
```
**Done when**
- każdy krok jest wykonalny,
- jest weryfikacja,
- jest rollback lub alternatywa.
## TASK-041: Checklist article
**Prompt**
```text
Napisz artykuł typu checklist.
Struktura:
1. Dla kogo jest checklista.
2. Kiedy jej używać.
3. Checklista przed zmianą.
4. Checklista w trakcie zmiany.
5. Checklista po zmianie.
6. Sygnały ostrzegawcze.
7. Minimalny template do skopiowania.
Każdy punkt checklisty ma być możliwy do odhaczenia.
```
**Done when**
- punkty są konkretne,
- są warunki bezpieczeństwa,
- da się skopiować template.
## TASK-042: Runbook
**Prompt**
```text
Napisz runbook operacyjny.
Struktura:
1. Objawy.
2. Zakres wpływu.
3. Warunki bezpieczeństwa.
4. Diagnostyka.
5. Decyzje naprawcze.
6. Kroki wykonania.
7. Rollback.
8. Monitoring po zmianie.
9. Postmortem.
Nie pomijaj rollbacku. Jeśli rollback zależy od środowiska, oznacz wymagane dane.
```
**Done when**
- jest diagnoza,
- jest rollback,
- są kroki monitoringu.
## TASK-043: Comparison
**Prompt**
```text
Napisz porównanie techniczne.
Struktura:
1. Krótka rekomendacja na początku.
2. Tabela porównawcza.
3. Kiedy wybrać opcję A.
4. Kiedy wybrać opcję B.
5. Koszty utrzymania.
6. Ryzyka.
7. Reguła decyzji.
Nie kończ tekstu zdaniem “to zależy”. Podaj konkretną regułę wyboru.
```
**Done when**
- jest rekomendacja,
- jest tabela,
- jest reguła decyzji.
## TASK-044: Case study
**Prompt**
```text
Napisz case study.
Struktura:
1. Sytuacja wyjściowa.
2. Ograniczenia.
3. Decyzje.
4. Implementacja.
5. Wynik.
6. Co poszło źle.
7. Czego nie robić.
8. Checklista dla podobnego projektu.
Nie wymyślaj wyników. Jeśli brakuje metryk, wstaw `[METRYKA DO UZUPEŁNIENIA]`.
```
**Done when**
- są decyzje,
- są ograniczenia,
- jest wynik albo miejsce na metryki.
## TASK-045: Strategic essay
**Prompt**
```text
Napisz esej strategiczny na blog personalny.
Struktura:
1. Obserwacja z praktyki.
2. Dlaczego temat ma znaczenie teraz.
3. Czego nauczyło autora doświadczenie.
4. Jak to łączy się z obecnym projektem PaperClip/OpenClaw.
5. Co autor będzie testował dalej.
Ton:
- osobisty, ale nie pamiętnikowy,
- ekspercki, ale nie akademicki,
- konkretny, ale bez przesadnego żargonu.
```
**Done when**
- esej łączy doświadczenie z projektem,
- ma jasną tezę,
- kończy się konkretnym następnym krokiem.
---
# Zadania edycji i jakości
## TASK-050: Human edit checklist
**Cel**: wskazać autorowi, co musi uzupełnić przed publikacją.
**Prompt**
```text
Jesteś edytorem wspierającym autora.
Dane:
- draft_markdown: {draft_markdown}
- author_profile: {author_profile}
- blog_id: {blog_id}
Zwróć:
- miejsca wymagające doświadczenia autora,
- miejsca wymagające metryk,
- miejsca wymagające screenshotów,
- miejsca wymagające konfiguracji lub komend,
- ryzyka, jeśli autor tego nie uzupełni.
Nie poprawiaj za autora doświadczeń, których nie znasz.
```
**Wynik**
```json
{
"must_add_before_publish": [],
"optional_improvements": [],
"risk_if_skipped": "",
"publish_readiness": "not_ready|almost_ready|ready_after_minor_edit"
}
```
**Done when**
- minimum 3 konkretne author inserts dla treści eksperckiej,
- jasna decyzja readiness.
## TASK-051: SEO QA
**Cel**: sprawdzić, czy tekst nadaje się do publikacji.
**Prompt**
```text
Wykonujesz SEO i helpful-content QA.
Dane:
- edited_markdown: {edited_markdown}
- keyword_set: {keyword_set}
- content_brief: {content_brief}
- hub_architecture: {hub_architecture}
Sprawdź:
- dopasowanie do intencji,
- użycie primary keyword,
- pokrycie secondary keywords,
- title tag,
- meta description,
- linki wewnętrzne,
- link do pillar page,
- źródła zewnętrzne,
- first-hand experience,
- ryzyko thin content,
- AI disclosure.
Jeśli brakuje first-hand experience, ustaw fail.
```
**Wynik**
```json
{
"qa_status": "pass|fail|needs_revision",
"summary": "",
"checks": {},
"required_fixes": [],
"recommended_schema": "Article|HowTo|FAQPage",
"final_decision": "publish|revise|hold"
}
```
**Done when**
- final decision jest `publish`, `revise` albo `hold`,
- tekst bez first-hand experience nie przechodzi.
## TASK-052: Linkowanie wewnętrzne
**Cel**: zaprojektować linki wzmacniające hub.
**Prompt**
```text
Zaproponuj linkowanie wewnętrzne.
Dane:
- article_title: {working_title}
- blog_id: {blog_id}
- hub_id: {hub_id}
- spoke_id: {spoke_id}
- article_outline: {article_outline}
- hub_spokes: {hub_spokes}
- related_blog_posts: {related_blog_posts}
Zwróć:
- obowiązkowy link do pillar page,
- minimum jeden link do spokea w tym samym hubie,
- cross-linki do innych blogów, jeśli pomagają czytelnikowi,
- anchor text,
- miejsce linku w treści,
- linki, których należy unikać.
```
**Wynik**
```json
{
"must_link": [],
"optional_links": [],
"avoid_links": []
}
```
**Done when**
- każdy post ma link do pillar,
- każdy post ma minimum jeden link do innego spokea.
## TASK-053: AI disclosure
**Cel**: zdecydować, czy trzeba ujawnić użycie AI/automatyzacji.
**Prompt**
```text
Oceń, czy wpis wymaga ujawnienia użycia AI lub automatyzacji.
Dane:
- draft_markdown: {draft_markdown}
- generation_process: {generation_process}
- human_edit_notes: {human_edit_notes}
- blog_id: {blog_id}
Zwróć:
- disclosure_needed,
- powód,
- rekomendowany tekst,
- miejsce publikacji,
- ryzyko pominięcia.
```
**Wynik**
```json
{
"disclosure_needed": true,
"reason": "",
"recommended_disclosure_text": "",
"placement": "footer|about_this_article|not_needed",
"risk_if_omitted": "low|medium|high"
}
```
**Done when**
- jest decyzja,
- przy znaczącym użyciu AI jest gotowy tekst disclosure.
## TASK-054: Schema JSON-LD
**Cel**: dobrać i wygenerować schema.
**Prompt**
```text
Dobierz i wygeneruj schema JSON-LD.
Dane:
- final_markdown: {final_markdown}
- content_type: {content_type}
- title: {title}
- author: Paweł Domański
- publication_date: {publication_date}
- modified_date: {modified_date}
- canonical_url: {canonical_url}
- blog_domain: {blog_domain}
Zasady:
- Article dla zwykłych artykułów.
- HowTo tylko jeśli tekst zawiera realne kroki.
- FAQPage tylko jeśli tekst zawiera realne pytania i odpowiedzi.
- Schema musi odpowiadać treści.
```
**Wynik**
```json
{
"recommended_schema": "Article|HowTo|FAQPage",
"reason": "",
"json_ld": {},
"warnings": []
}
```
**Done when**
- schema pasuje do treści,
- nie ma FAQ/HowTo bez podstawy w artykule.
---
# Zadania publikacji
## TASK-060: CMS payload
**Cel**: przygotować treść do CMS.
**Prompt**
```text
Przygotuj payload do CMS.
Dane:
- final_markdown: {final_markdown}
- blog_registry_entry: {blog_registry_entry}
- seo_fields: {seo_fields}
- cms_target: {cms_target}
- publication_date: {publication_date}
Zwróć:
- title,
- slug,
- excerpt,
- meta title,
- meta description,
- canonical URL,
- tags,
- author,
- scheduled_at,
- body_markdown,
- pre-publish checklist.
Nie publikuj automatycznie bez preview URL i human approval.
```
**Wynik**
```json
{
"cms_payload": {},
"pre_publish_checklist": [],
"status": "ready_for_preview|blocked"
}
```
**Done when**
- payload jest kompletny,
- wymagane preview jest jawnie oznaczone.
## TASK-061: Preview QA
**Cel**: sprawdzić wpis przed publikacją.
**Prompt**
```text
Sprawdź preview wpisu przed publikacją.
Dane:
- preview_url: {preview_url}
- cms_payload: {cms_payload}
- final_markdown: {final_markdown}
Sprawdź:
- formatowanie,
- nagłówki,
- linki,
- obrazy i alt text,
- kod i bloki konfiguracji,
- CTA,
- schema,
- canonical,
- mobile readability.
Zwróć decyzję publish/hold.
```
**Wynik**
```json
{
"preview_status": "pass|fail",
"issues": [],
"required_fixes": [],
"final_decision": "publish|hold"
}
```
**Done when**
- preview pass,
- autor zatwierdzi publikację.
---
# Zadania dystrybucji
## TASK-070: Pakiet dystrybucyjny
**Cel**: przygotować treści na kanały po publikacji.
**Prompt**
```text
Stwórz pakiet dystrybucyjny.
Dane:
- post_url: {post_url}
- article_summary: {article_summary}
- blog_id: {blog_id}
- distribution_channels: {distribution_channels}
Zwróć:
1. LinkedIn post.
2. X thread 6-8 tweetów.
3. Newsletter note.
4. Internal promo links.
5. Propozycję dat publikacji.
Nie clickbaituj. Dopasuj ton do bloga i odbiorcy.
```
**Wynik**
```yaml
linkedin_post: ""
x_thread: []
newsletter_note: ""
internal_promo: []
schedule_suggestion: []
```
**Done when**
- każdy kanał ma wersję treści,
- CTA prowadzi do wpisu,
- ton pasuje do bloga.
## TASK-071: Postiz queue
**Cel**: przygotować payload do Postiz lub innego schedulera social.
**Prompt**
```text
Przygotuj kolejkę publikacji social.
Dane:
- distribution_pack: {distribution_pack}
- post_url: {post_url}
- channels: {channels}
- publication_date: {publication_date}
Zwróć JSON z postami, kanałami i sugerowanymi datami publikacji.
Nie wysyłaj ani nie publikuj bez potwierdzenia autora.
```
**Wynik**
```json
{
"social_queue": [],
"requires_approval": true
}
```
**Done when**
- kolejka jest gotowa,
- wymaga approval.
---
# Zadania analityki i debriefu
## TASK-080: Debrief 14/30/90 dni
**Cel**: ocenić wynik wpisu i podjąć decyzję.
**Prompt**
```text
Zrób debrief wpisu po publikacji.
Dane:
- post_url: {post_url}
- metrics_14d: {metrics_14d}
- metrics_30d: {metrics_30d}
- metrics_90d: {metrics_90d}
- gsc_queries: {gsc_queries}
- serp_rankings: {serp_rankings}
- social_metrics: {social_metrics}
Zwróć:
- performance summary,
- co zadziałało,
- co nie zadziałało,
- nowe keyword opportunities,
- poprawki linkowania,
- decyzję: keep, refresh, expand, prune albo promote,
- next spoke ideas.
Jeśli brakuje danych, wskaż dokładnie, czego brakuje.
```
**Wynik**
```json
{
"performance_summary": "",
"what_worked": [],
"what_failed": [],
"new_keyword_opportunities": [],
"internal_link_improvements": [],
"refresh_recommendation": "keep|refresh|expand|prune|promote",
"next_spoke_ideas": []
}
```
**Done when**
- jest decyzja,
- są next actions.
## TASK-081: Miesięczny audyt hubów
**Cel**: ocenić zdrowie hubów i całej strategii.
**Prompt**
```text
Przeprowadź miesięczny audyt strategii contentowej.
Dane:
- published_posts: {published_posts}
- planned_posts: {planned_posts}
- gsc_metrics: {gsc_metrics}
- serpbear_rankings: {serpbear_rankings}
- social_metrics: {social_metrics}
- author_notes: {author_notes}
Oceń:
- coverage hubów,
- internal linking,
- SEO progress,
- braki tematyczne,
- jakość pipeline,
- co przesunąć, co rozbudować, co zatrzymać.
Nie zwiększaj wolumenu publikacji, jeśli QA nie nadąża.
```
**Wynik**
```json
{
"month_summary": "",
"hub_health": [],
"best_posts": [],
"posts_to_refresh": [],
"posts_to_expand": [],
"topics_to_pause": [],
"next_month_calendar_adjustments": [],
"pipeline_improvements": []
}
```
**Done when**
- każdy hub ma ocenę,
- są korekty kalendarza,
- są usprawnienia pipeline.
---
# Zadania planowania
## TASK-090: Tygodniowy plan pracy
**Cel**: zaplanować najbliższy tydzień publikacji.
**Prompt**
```text
Zaplanuj tydzień publikacji.
Dane:
- week_number: {week_number}
- calendar_items: {calendar_items}
- current_pipeline_status: {current_pipeline_status}
- author_availability: {author_availability}
Zwróć:
1. Zadania na poniedziałek-piątek.
2. Briefy do zrobienia najpierw.
3. Teksty wymagające wkładu autora.
4. Publikacje możliwe do przesunięcia.
5. Ryzyka jakościowe.
Nie planuj więcej human edit, niż autor realnie może zrobić.
```
**Wynik**
```yaml
weekly_plan:
monday: []
tuesday: []
wednesday: []
thursday: []
friday: []
blocked_items: []
quality_risks: []
```
**Done when**
- tydzień jest wykonalny,
- blokery są jawne.
## TASK-091: Import backlogu PaperClip
**Cel**: przekształcić kalendarz publikacji w backlog.
**Prompt**
```text
Przekształć kalendarz publikacji w backlog PaperClip.
Dane:
- calendar_rows: {calendar_rows}
- blog_registry: {blog_registry}
- hub_architecture: {hub_architecture}
- spoke_map: {spoke_map}
Zwróć JSON array z polami:
- content_item_id,
- blog_id,
- hub_id,
- spoke_id,
- working_title,
- primary_keyword,
- content_type,
- search_intent,
- pipeline_stage,
- owner,
- scheduled_publish_date,
- cms_target,
- primary_cta,
- required_agents,
- human_gates.
Nie pomijaj human gates.
```
**Wynik**
```json
[
{
"content_item_id": "",
"blog_id": "",
"hub_id": "",
"spoke_id": "",
"pipeline_stage": "idea_seed",
"required_agents": [],
"human_gates": []
}
]
```
**Done when**
- każdy item ma ID,
- każdy item ma pipeline stage,
- każdy item ma human gates.
---
# Zadania pomocnicze dla agentów
## TASK-100: Blog voice selection
**Cel**: dobrać właściwy ton dla `blog_id`.
**Prompt**
```text
Na podstawie blog_id wybierz ton głosu.
blog_id: {blog_id}
Zwróć:
- voice summary,
- czego unikać,
- obowiązkowe sekcje,
- domyślne CTA.
```
**Wynik**
```json
{
"blog_id": "",
"voice_summary": "",
"avoid": [],
"required_sections": [],
"default_cta": ""
}
```
## TASK-101: Author angle generator
**Cel**: wskazać, jaki wkład autora powinien pojawić się w tekście.
**Prompt**
```text
Wygeneruj author angle dla tematu.
Dane:
- working_title: {working_title}
- blog_id: {blog_id}
- hub_id: {hub_id}
- author_profile: {author_profile}
Zwróć 5 propozycji wkładu autora:
- doświadczenie,
- decyzja techniczna,
- błąd lub pułapka,
- metryka,
- screenshot/config/code.
Nie wymyślaj gotowej treści. Zadawaj autorowi konkretne pytania.
```
**Wynik**
```json
{
"author_questions": [],
"suggested_inserts": []
}
```
## TASK-102: Technical snippet request
**Cel**: poprosić autora o brakujące komendy, konfiguracje lub screeny.
**Prompt**
```text
Przygotuj listę brakujących snippetów technicznych.
Dane:
- draft_markdown: {draft_markdown}
- content_type: {content_type}
- blog_id: {blog_id}
Zwróć:
- wymagane komendy,
- wymagane konfiguracje,
- wymagane screenshoty,
- pytania do autora,
- miejsca w artykule, gdzie należy je wkleić.
```
**Wynik**
```json
{
"required_commands": [],
"required_configs": [],
"required_screenshots": [],
"author_questions": []
}
```
---
# Minimalny prompt ręczny
Użyj tego, jeśli chcesz uruchomić proces bez całego workflow:
```text
Pracujesz w PaperClip Content Machine.
Wygeneruj {output_type} dla wpisu:
- blog_id: {blog_id}
- hub_id: {hub_id}
- spoke_id: {spoke_id}
- tytuł roboczy: {working_title}
- primary keyword: {primary_keyword}
- secondary keywords: {secondary_keywords}
- content type: {content_type}
- search intent: {search_intent}
- odbiorca: {target_audience}
- CTA: {primary_cta}
- pillar URL: {hub_url}
- cross-link: {cross_link_to_blog}
Styl:
- po polsku,
- technicznie,
- konkretnie,
- bez hype,
- z miejscami na realne doświadczenie autora.
Wynik ma zawierać:
1. Metadata.
2. Outline.
3. Draft albo brief, zależnie od `output_type`.
4. Internal links.
5. SEO title i meta description.
6. QA checklist.
7. Miejsca oznaczone `[DO UZUPEŁNIENIA PRZEZ AUTORA]`.
Nie wymyślaj metryk, doświadczeń ani źródeł. Jeżeli czegoś brakuje, zaznacz to jawnie.
```
---
# Kolejność wykonania zadań
## Bootstrap
1. `TASK-001`: Blog Registry.
2. `TASK-002`: mapa hubów.
3. `TASK-003`: mapa spoke’ów.
4. `TASK-091`: import backlogu PaperClip.
## Produkcja pojedynczego artykułu
1. `TASK-020`: topic card.
2. `TASK-010`: keyword enrichment.
3. `TASK-012`: kanibalizacja.
4. `TASK-021`: content brief.
5. `TASK-100`: dobór voice.
6. `TASK-030`: draft artykułu.
7. `TASK-101`: author angle.
8. `TASK-050`: human edit checklist.
9. `TASK-052`: linkowanie wewnętrzne.
10. `TASK-053`: AI disclosure.
11. `TASK-054`: schema JSON-LD.
12. `TASK-051`: SEO QA.
13. `TASK-060`: CMS payload.
14. `TASK-061`: preview QA.
15. `TASK-070`: pakiet dystrybucyjny.
16. `TASK-071`: kolejka social.
17. `TASK-080`: debrief 14/30/90 dni.
## Rytm tygodniowy
1. `TASK-090`: plan tygodnia.
2. Produkcja 3 głównych wpisów.
3. Dystrybucja nowych publikacji.
4. Aktualizacja statusów pipeline.
## Rytm miesięczny
1. `TASK-032`: personal monthly roundup.
2. `TASK-081`: miesięczny audyt hubów.
3. Korekta kalendarza.
4. Rozbudowa spoke’ów, które zaczynają działać.
5. Refresh wpisów, które mają impressions bez kliknięć.