1553 lines
30 KiB
Markdown
1553 lines
30 KiB
Markdown
# 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 spoke’i.
|
||
- **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 spoke’a 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 spoke’a 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 spoke’a.
|
||
|
||
## 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ęć.
|
||
|