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?