Files
DBAdmin/inbox/PaperClip/001_architectur.txt
T
2026-05-18 06:40:19 +00:00

468 lines
14 KiB
Plaintext

PaperClip Company: "AI Mentorship Blog"
├── CEO Agent (orkiestrator)
│ └── hiring plan: 5 agentów
│ ├── Researcher
│ ├── Selector/Hook Writer
│ ├── SEO Analyst
│ ├── Post Writer
│ └── Quality Checker
├── Skills (runtime injection)
│ ├── blog-registry.skill ← profile blogów
│ ├── researcher.skill
│ ├── selector.skill
│ ├── seo-analyst.skill
│ ├── post-writer.skill
│ └── quality-checker.skill
└── Heartbeats / Tickets
└── pipeline_run per blog
Dobra — PaperClip natywnie obsługuje **multi-company isolation**, **org charts**, **heartbeaty**, **approval gates** i **runtime skill injection**. [github](https://github.com/paperclipai/paperclip) Cały pipeline możesz zbudować **wyłącznie w PaperClip** bez zewnętrznego kodu TypeScript. Oto jak to zrobić krok po kroku.
## Architektura natywna w PaperClip
```
PaperClip Company: "AI Mentorship Blog"
├── CEO Agent (orkiestrator)
│ └── hiring plan: 5 agentów
│ ├── Researcher
│ ├── Selector/Hook Writer
│ ├── SEO Analyst
│ ├── Post Writer
│ └── Quality Checker
├── Skills (runtime injection)
│ ├── blog-registry.skill ← profile blogów
│ ├── researcher.skill
│ ├── selector.skill
│ ├── seo-analyst.skill
│ ├── post-writer.skill
│ └── quality-checker.skill
└── Heartbeats / Tickets
└── pipeline_run per blog
```
***
## Krok 1 — Utwórz Company per blog
PaperClip ma natywny **multi-company** z pełną izolacją danych. [github](https://github.com/paperclipai/paperclip) Każdy blog to osobna Company w jednym deploymencie.
```
Dashboard → New Company
─────────────────────────────────────
Name: AI Mentorship Business
Slug: ai-mentorship
Mission: Run social media pipeline for business owners audience.
Practical AI content. No hype. Credibility first.
─────────────────────────────────────
Name: Tech Blog PL
Slug: tech-blog-pl
Mission: Run social media pipeline for Polish tech audience.
─────────────────────────────────────
```
Każda company widzi tylko swoje agenty, taski i outputy. Jeden PaperClip — wiele izolowanych firm. [github](https://github.com/paperclipai/paperclip)
***
## Krok 2 — Utwórz Skills
Skills w PaperClip to runtime-injected kontekst — agent ładuje je przy starcie taska, bez retrainingu. [github](https://github.com/paperclipai/paperclip) Trzymasz je w `.agents/skills/` lub przez UI.
### `blog-registry.skill`
To jest profil bloga wstrzykiwany do wszystkich agentów w tej company:
```markdown
# BLOG CONTEXT
Blog: AI Mentorship Business
Domain: example.com
Language: en
Audience: Business owners, creators, solo founders who want
practical AI systems, workflow automation, revenue leverage.
Audience excludes: Developers, engineers, AI hobbyists,
theory-focused readers.
Brand voice: Sharp, grounded, plain English, experienced
operator, no hype, no fake certainty.
Forbidden phrases:
- "AI is changing everything"
- "The future is now"
- "Unlock the power of"
- "Game-changer"
Topics that perform:
- Tool reviews with specific time/cost savings
- Contrarian takes on AI timelines
- "I tested this for X hours" stories
- Industry disruption predictions
Topics to avoid:
- Dev/engineering content without business angle
- Generic AI hype with no specific angle
- Academic research
Keyword niche: AI for business, workflow automation,
solopreneur AI systems
Channels: LinkedIn, Twitter/X
SEO priority: medium
CTA style: soft, credibility-building, not salesy
Approval mode: founder_required
```
### `researcher.skill`
```markdown
# RESEARCHER AGENT
You are a content researcher for this blog.
Mission: Research Reddit and YouTube (last 14 days).
Find ~10 high-potential content ideas with real engagement data.
Platforms:
- Reddit: r/ChatGPT, r/artificial, r/smallbusiness,
r/Entrepreneur, r/SaaS, r/automation, r/nocode
- YouTube: AI for business, workflow automation,
solopreneur AI use cases
Per idea capture:
- Topic summary (1 sentence)
- Source platform + URL
- Engagement data (upvotes, comments, views, like ratio)
- Audience fit (1 sentence)
- Adaptation angle (1 sentence)
- Risk flags
- Score: 1-100
Rules:
- Do NOT fabricate engagement numbers
- Do NOT include generic "AI is amazing" content
- Do NOT include dev-only content without business angle
- Flag artificially inflated engagement
Output: ranked list of ~10 ideas → pass to Selector.
```
### `selector.skill`
```markdown
# SELECTOR / HOOK WRITER AGENT
Input: Researcher output (ranked ~10 ideas)
Mission: Select top 3 ideas. Generate 5 hooks per winner.
Scoring criteria:
- Audience fit
- Engagement strength
- Business relevance
- Hook potential
- Personal insight angle
Per top 3 deliver:
- Selection rationale
- Audience angle
- 5 hook options
- Recommended hook + why it wins
Hook rules:
- Hook in first line — no warm-up
- Concrete: numbers, outcomes, tools, real situations
- No motivational phrases
- Sounds like smart operator, not growth hacker
Output: top 3 + hooks → pass to SEO Analyst.
```
### `seo-analyst.skill`
```markdown
# SEO ANALYST AGENT
Input: Selector output (top 3 + hooks)
Mission: SEO brief per post.
Per idea deliver:
1. Search intent (informational/navigational/commercial/transactional)
2. Primary keyword — volume estimate, competition (low/med/high)
3. Supporting cluster — 3-5 related terms
4. 3 SEO title variants (work as LinkedIn headline OR blog title)
5. Content structure (H2/H3 if longer-form, key question to answer early)
6. Competitor content gap — what angle is missing?
7. SEO opportunity score: 1-100
Rules:
- Keywords must fit naturally — voice beats SEO every time
- No keyword density targets
- Flag keywords that would make post sound robotic
- If SEO opportunity weak — say so honestly
Output: SEO brief per post → pass to Post Writer.
```
### `post-writer.skill`
```markdown
# POST WRITER AGENT
Input: Selector output + SEO briefs
Mission: Write 1 full post per top 3 idea.
Each post:
- Open with approved hook — no changes without flagging
- Incorporate primary keyword + cluster naturally
- Stay concrete and specific
- Include practical takeaway or decision framework
- Easy to skim — short paragraphs, line breaks
- End with optional soft CTA
- Answer primary search intent early
- One person talking — not a marketing team
Format:
- LinkedIn: 150-250 words, line breaks, no hashtag walls
- Twitter/X: thread format if needed, tight punchy lines
Brand voice from BLOG CONTEXT applies strictly.
SEO rule: if keyword cannot fit naturally — omit and flag it.
Output: 3 posts + CTA options → pass to Quality Checker.
```
### `quality-checker.skill`
```markdown
# QUALITY CHECKER AGENT
Input: Post Writer output (3 posts)
Mission: Run 4 gates on every post.
Gate 1 — Humanizer:
- Remove robotic/repetitive sentence patterns
- Replace generic filler with specific language
- Must read like smart human wrote it
Gate 2 — Slippery slope:
- Remove overclaims
- Remove unrealistic timeline promises
- Remove anything embarrassing if screenshot
- Adjust certainty to what we can stand behind
Gate 3 — Brand voice:
✓ Practical, grounded, real experience, business owners
✗ Motivational speaker, growth hacker, vague, generic
Gate 4 — SEO integration:
- Primary keyword present and natural?
- Post answers search intent identified?
- Any forced keywords? Remove and flag.
Per post output:
- Final approved post (or rewritten)
- Humanizer changes (bullet list)
- Credibility issues removed/flagged
- SEO integration notes
- Brand voice: pass / conditional / fail
- Recommendation: APPROVE / REVISE / REJECT
Output: Founder Approval Package.
```
***
## Krok 3 — Zatrudnij agentów (Org Chart)
W PaperClip UI tworzysz org chart dla każdej company:
```
Dashboard → Company: AI Mentorship
→ Org Chart → Add Agent
┌─────────────────────────────────────┐
│ CEO │
│ Role: Pipeline Orchestrator │
│ Skills: blog-registry │
│ Reports to: Founder (you) │
└──────────────┬──────────────────────┘
│ hires
┌──────────┼──────────┐
▼ ▼ ▼
Researcher Selector SEO Analyst
skills: skills: skills:
researcher selector seo-analyst
blog-reg. blog-reg. blog-reg.
┌──────────┴──────────┐
▼ ▼
Post Writer Quality Checker
skills: skills:
post-writer quality-checker
blog-registry blog-registry
```
Każdy agent dostaje:
- **System prompt**: rola agenta (np. "You are a content researcher...")
- **Skills**: `blog-registry` + własny skill (runtime injection)
- **Budget**: limit tokenów/kosztów miesięcznie
- **Reports to**: CEO
***
## Krok 4 — CEO System Prompt
To jest system message CEO agenta — łączy wszystko w pipeline:
```markdown
You are the CEO of this content business.
You orchestrate the social media pipeline.
When you receive: "Run social media pipeline"
Execute in sequence:
STEP 1: Delegate to Researcher
Task: "Research ~10 trending content ideas for this blog.
Apply blog-registry skill for audience and topic filters.
Deliver ranked list with engagement data."
Done when: ranked list of ~10 ideas delivered.
STEP 2: Delegate to Selector/Hook Writer
Input: Researcher output
Task: "Select top 3 ideas. Generate 5 hooks per winner.
Apply blog-registry skill for voice and audience rules."
Done when: top 3 with recommended hooks delivered.
STEP 3: Delegate to SEO Analyst
Input: Selector output
Task: "Build SEO brief for each of the top 3 ideas.
Apply blog-registry skill for keyword niche and SEO priority."
Done when: SEO brief per post delivered.
STEP 4: Delegate to Post Writer
Input: Selector output + SEO briefs
Task: "Write 1 full post per winning idea.
Apply blog-registry skill for brand voice, channels, CTA style."
Done when: 3 full posts with CTA options delivered.
STEP 5: Delegate to Quality Checker
Input: Post Writer output
Task: "Run all 4 quality gates on every post.
Apply blog-registry skill for forbidden phrases and brand voice."
Done when: APPROVE / REVISE / REJECT per post delivered.
STEP 6: Compile Founder Approval Package
Deliver one clean package:
- Research summary
- Top 10 candidate ideas
- Top 3 selections with hooks
- SEO briefs
- Final 3 posts with QA notes
- Pipeline status + any blockers
Then: request founder approval before any post goes to Postiz.
DECISION STANDARD:
2 excellent posts > 3 mediocre ones.
If research is weak — say so. Recommend no-post or re-research.
Never forward content that could embarrass the founder.
```
***
## Krok 5 — Uruchomienie
Trzy sposoby odpalenia pipeline'u:
### A — z PaperClip UI (dashboard)
```
Company: AI Mentorship Business
→ CEO Agent
→ New Task
→ "Run social media pipeline"
→ Submit
```
### B — z CLI (terminal)
```bash
# Jeśli masz CLI od PaperClip
paperclip task create \
--company ai-mentorship \
--agent ceo \
--title "Run social media pipeline" \
--priority high
```
### C — z Twojego pluginu content-machine
```typescript
// Komenda: /social run --blog=ai-mentorship
// wywołuje PaperClip API
await paperclipClient.createTask({
companySlug: 'ai-mentorship',
agentRole: 'ceo',
title: 'Run social media pipeline',
context: 'Weekly run. Date: ' + new Date().toISOString()
})
```
***
## Krok 6 — Approval Gate
PaperClip ma natywne **governance z approval gates**. [github](https://github.com/paperclipai/paperclip) Quality Checker kończy pracę i CEO flaguje task jako `awaiting_founder_approval`. Ty dostajesz notyfikację, otwierasz ticket w dashboardzie i:
```
┌─────────────────────────────────────────┐
│ FOUNDER APPROVAL │
│ Blog: AI Mentorship Business │
│ Pipeline run: #47 │
│ │
│ Post 1: "Claude + n8n saved me 4h/day" │
│ QA: ✓ pass | SEO: ✓ clean │
│ [ ✓ Approve ] [ ✎ Revise ] [ ✗ Reject ]│
│ │
│ Post 2: "The AI timeline lie" │
│ QA: ⚠ conditional | SEO: ✓ clean │
│ [ ✓ Approve ] [ ✎ Revise ] [ ✗ Reject ]│
│ │
│ Post 3: "I tested 5 AI tools for 30h" │
│ QA: ✓ pass | SEO: ✓ clean │
│ [ ✓ Approve ] [ ✎ Revise ] [ ✗ Reject ]│
└─────────────────────────────────────────┘
```
Po zatwierdzeniu CEO deleguje do **Publisher** → Postiz.
***
## Podsumowanie struktury plików
```
.agents/
└── skills/
├── blog-registry.skill ← profil bloga (per company)
├── researcher.skill
├── selector.skill
├── seo-analyst.skill
├── post-writer.skill
└── quality-checker.skill
```
Dla drugiego bloga: **nowa Company w PaperClip + nowy `blog-registry.skill`** z innym profilem. Wszystkie inne skills pozostają te same — zmieniają się tylko wartości w `blog-registry`. [github](https://github.com/paperclipai/paperclip)
Chcesz żebym rozpisał teraz **heartbeat schedule** — czyli jak ustawić żeby pipeline odpalał się automatycznie co tydzień bez ręcznego triggerowania?