Content Studio
Unified AI content creation platform with voice authenticity scoring, RAG fact-checking, and multi-platform publishing — the front door to the MyVoice pipeline
Content Studio
Content Studio is ArgoBox’s unified content creation interface. It combines a word processor, AI content generation, real-time voice authenticity scoring, RAG-powered fact checking, and multi-platform preview into a single 3-column workspace.
URL: /admin/content-studio
Architecture
┌──────────┬─────────────────────────────┬──────────────┐
│ SOURCES │ EDITOR │ ANALYSIS │
│ │ │ │
│ RAG │ Write │ Markdown │ AI Gen │ Voice Ring │
│ Search │ │ Fact Check │
│ Context │ [Editor Body] │ Preview │
│ Queue │ │ Actions │
│ Existing │ chars • words • status │ │
└──────────┴─────────────────────────────┴──────────────┘
3-Column Layout
Source Panel (left, 280px)
- RAG search across Knowledge (103K chunks), Private (304K), Vaults (294K)
- Expandable results with full text and “Use” button
- Context Queue — selected RAG results injected into AI generation
- Existing content browser (all posts + journals, filterable)
Editor (center)
- Write tab — Contenteditable rich text editor with toolbar (bold, italic, code, H1-H3, lists, quote, undo/redo) and keyboard shortcuts (Ctrl+B, Ctrl+I)
- Markdown tab — Raw markdown textarea with sync to rich text
- AI Generate tab — Topic/transcript → AI content generation with streaming
- Metadata bar: title, description (SEO), date, tags
- Real-time character and word count
Analysis Panel (right, 300px)
- Voice authenticity ring (SVG circular gauge, 0-100)
- 4-metric breakdown with color-coded bars
- Flagged sentences with fix suggestions
- RAG fact checking with relevance scores
- Platform preview (Blog, Journal, LinkedIn, Reddit)
- Save Draft / Publish buttons
AI Content Generation
The AI Generate tab streams content via /api/admin/content-gen:
- User enters topic, transcript, command output, or daily summary prompt
- RAG context from Context Queue is injected automatically
- System searches RAG for related existing content (avoids duplication)
- Voice profile + verified facts + denied claims assembled into system prompt
- Content streams from selected model (Gemini Flash/Pro, Claude Sonnet/Opus)
- User clicks “Accept” → content loads into editor for review and editing
Input Modes
| Mode | Use Case | What AI Does |
|---|---|---|
| Topic | Blog post about a subject | RAG search for fresh angle, avoid repeating existing posts |
| Transcript | Paste a session log or conversation | Extract narrative arc, commands, errors, breakthroughs |
| Command | Paste terminal output | Wrap in narrative context with voice personality |
| Daily | End-of-day journal | Synthesize git commits, session notes, RAG results |
Voice Authenticity Scoring
Endpoint: POST /api/argonaut/voice-score
Scores content against Daniel’s verified voice patterns (extracted from 2,577 conversations, 9.6M words).
Scoring Algorithm (4 weighted metrics)
| Metric | Weight | Target | How It’s Measured |
|---|---|---|---|
| Sentence Length | 20% | 13.2 words avg | 100 - abs(avgLen - 13.2) * 10 |
| Banned Patterns | 35% | 0 found | -15 points per AI phrase detected |
| First Person | 20% | 80%+ “I/my” | Ratio of I/me/my vs we/our/us |
| Casual Tone | 25% | 60%+ casual | Fragments + contractions vs semicolons + passive |
Banned Patterns (15+)
Phrases that AI uses but Daniel doesn’t:
- “Let me explain”, “Here is the code”, “I’ll help you”
- “As an AI”, “I apologize”, “It’s important to note”
- “In conclusion”, “Successfully”, “Utilize”, “Leverage”
- “Implement a solution”, “Based on the above”, “Moving forward”
- Green checkmarks, numbered “Lessons Learned” lists
Each detected pattern shows the specific line, text, and a suggestion for what to write instead.
RAG Fact Checking
Endpoint: GET /api/argonaut/search?q=<keywords>&limit=5
Extracts proper nouns, years, and technical terms from content, then searches the RAG knowledge base for related context. Shows:
- Matching knowledge chunks with text preview
- Relevance scores (0-100%)
- Source collection (docs, blog, conversation-archive, etc.)
Loading Existing Content
Clicking any post or journal entry in the Source Panel loads it via GET /api/admin/content-body?type=post&slug=xxx:
- Populates title, description, tags, date
- Loads full markdown body into editor
- Switches to Write tab
Platform Preview
Shows how content will render on different platforms:
- Blog — Full heading, narrative text, argobox.com URL
- Journal — Purple badge, italic mood, timestamp feel
- LinkedIn — Truncated text, hashtags (#infrastructure #homelab #devops)
- Reddit — r/homelab subreddit style, casual formatting
Data Flow
User Input (topic/transcript)
↓
[Content Studio UI]
↓ POST /api/admin/content-gen
[RAG Search] → top 5 related chunks (minScore: 0.25)
↓
[Voice Profile Build] → identity rules + hardware facts + voice patterns
↓
[Facts Injection] → verified facts + denied claims guardrails
↓
[System Prompt Assembly] → template + voice + facts + RAG + instructions
↓
[LLM Streaming] → SSE response (provider-routed: Anthropic/Google/OpenRouter)
↓
[Content Studio] → streams into AI Generate tab
↓
[Accept] → loads into Write tab for editing
↓
[Voice Check + Fact Check] → real-time analysis
↓
[Publish] → writes to src/content/posts/ or src/content/journal/
Design System
- Theme: Dark (#060a14 base) with glass morphism panels
- Accents: Cyan (#06b6d4) for interactive elements, purple (#8b5cf6) for AI/generation
- Fonts: Orbitron for labels/headers, Inter for body, Fira Code for data/mono
- Effects: Animated grid background, scan-line during generation, glow on hover
- Responsive: Collapses to single column on mobile (<1024px)
Key Files
| File | Purpose |
|---|---|
src/pages/admin/content-studio.astro | Main UI (1400+ lines) |
src/config/admin-nav.ts | Nav entry (Content group, featured+AI badge) |
src/pages/api/admin/content-gen.ts | Streaming content generation |
src/pages/api/admin/content-body.ts | Load existing content by slug |
src/pages/api/argonaut/voice-score.ts | Voice authenticity scoring |
src/pages/api/argonaut/search.ts | RAG search |
src/lib/voice-engine.ts | scoreVoiceAuthenticity() algorithm |
src/lib/voice-profile.ts | System prompt builder with voice rules |
src/lib/facts-loader.ts | Verified facts + denied claims |
src/lib/myvoice-client.ts | MyVoice Studio API client |
Related Systems
- MyVoice Studio — Voice profile authoring and training
- RAG Pipeline — How content gets indexed for search
- Content Generation — Content-gen API details