LinkedIn Studio
AI-powered LinkedIn post generator that converts blog posts, journal entries, and topics into engagement-optimized LinkedIn content
LinkedIn Studio
The LinkedIn Studio at /admin/linkedin-studio generates copy-pasteable LinkedIn posts from your existing Arcturus-Prime content. It’s designed to turn technical blog posts, journal entries, and project updates into engagement-optimized LinkedIn content that showcases your engineering expertise without sounding salesy or AI-generated.
Why LinkedIn for Homelabs
The homelab and DevOps community is highly engaged on LinkedIn. Technical content that shows real problem-solving — debugging at 2am, architecture decisions, tool discoveries — performs well because it demonstrates hands-on expertise. LinkedIn’s algorithm now rewards dwell time (how long people read) over quick reactions, which favors detailed technical posts.
Four Input Modes
From Post
Browse all 76 blog posts and 73 journal entries, sorted by date. Select one and the AI generates a LinkedIn post from it. The full post content is loaded server-side and fed to the AI model — you don’t need to copy-paste anything.
Use the search bar to filter by title. Click a post to select it (highlighted with a blue border), then hit Generate.
From Scratch
Free-form text input for when you want to write about something that isn’t already a blog post. Enter a topic, paste notes, or describe what you want to share. The AI shapes it into LinkedIn format with proper hooks, structure, and hashtags.
Suggestions (Ideas)
Click “Scan for Posts” and the AI reviews your recent posts and journal entries to recommend the 5-8 best individual candidates for LinkedIn. Each suggestion includes:
- Score — How LinkedIn-worthy the content is (0-100)
- Suggested style — Which post format would work best
- Reason — Why this would resonate on LinkedIn
- Draft hook — A suggested opening line
Click a suggestion to select it, then Generate to create the post.
For multi-post narrative arcs instead of single posts, click “Plan a Series Instead” to switch to Journey mode.
Journey
AI-planned content series that looks at your entire blog and journal catalog to plan multi-post narrative arcs. Unlike Suggestions (which ranks individual posts), Journey mode thinks about the bigger story — what sequence of posts builds an audience, what threads connect multiple entries, what hasn’t been told yet.
Step 1: Plan — Click “Plan Content Series.” The AI receives metadata + 200-character excerpts from all entries plus your published history, and returns 5-8 post ideas. Each references 1-3 source posts to combine into one narrative, with a theme tag, suggested style, and narrative description.
Step 2: Generate — Click a plan item to select it (sets the source slugs and style), then hit Generate. The API loads the full body of the referenced sources (capped at 6K chars each) and generates a LinkedIn post that weaves them together.
The plan considers:
- Chronological milestones — First server, first cluster, first automation
- Thematic threads — Networking evolution, storage journey, build swarm arc
- Origin story angles — Why homelab, what problem started it all
- Achievements vs. struggles — Impressive numbers alongside relatable debugging
- Published history — What stories have already been told (avoids repeats)
The Journey tab also shows a Published History sidebar at the bottom — the last 10 posts marked as published, with dates and LinkedIn URLs.
Five Post Styles
| Style | Best For | Structure |
|---|---|---|
| Problem → Solution | Debugging stories, things you fixed | Hook → Context → Fix → Result → Takeaway → Question |
| Lessons Learned | Reflective insights from experience | Hook → What happened → 3 lessons → Reflection → Question |
| Tool Showcase | Specific tech you discovered or built | Hook → What it is → Why you chose it → Benefits → Limitation → Question |
| Architecture Decision | Trade-offs, tech choices | Hook → Options → Choice → Trade-offs → Hindsight → Question |
| Project Update | What’s new, what you shipped | Hook → Context → What you built → Why it matters → What’s next → Question |
Tone Options
- Casual — Natural, first-person, debugging-at-midnight voice (default, matches Arcturus-Prime style)
- Professional — Slightly more polished, still authentic, good for employer visibility
- Technical — Heavier on specifics, commands, and architecture details
Output Preview
The right panel shows your generated LinkedIn post with several preview sections:
Hook Preview
The first 210 characters are highlighted separately — this is the “See more” cutoff on LinkedIn. If the hook doesn’t grab attention in this space, people won’t click to read the rest.
Full Post
The complete post text with proper line breaks. LinkedIn posts render on mobile, so generous whitespace is important.
Character Count Bar
Visual indicator with markers at key thresholds:
- Gray (< 1,300): Short — may underperform
- Green (1,300-1,900): Sweet spot — best engagement
- Yellow (1,900-2,500): Getting long but still fine
- Red (> 2,500): Too long — consider shortening
Hashtags
3-5 relevant hashtags from the DevOps/homelab ecosystem: #homelab, #selfhosted, #devops, #linux, #docker, #kubernetes, #proxmox, #infrastructure, #automation, #networking, #sre.
First Comment
The Arcturus-Prime.com link and extra context go here, not in the main post. External links in the post body reduce LinkedIn reach by ~60%. Post the main text first, then immediately add this as your first comment.
Refine Buttons
After generating, five quick-action buttons let you iterate:
- Shorten — Cut to under 1,500 characters, punchier
- Expand — Add technical detail, specific numbers and commands
- Better Hook — Rewrite the opening lines to be more scroll-stopping
- More Human — Make it more conversational, less polished
- Career Focus — Emphasize professional skills and expertise (good for employer visibility)
Amplify with Claude
Below the refine buttons, the Amplify with Claude button sends the current draft through Claude Sonnet 4.6 regardless of which model was used for the initial generation. This is the recommended workflow: draft cheap with a free model (Gemini Flash), then amplify with Claude for a quality pass that tightens language, sharpens the hook, and adds authenticity.
Copy to LinkedIn
Three buttons in the output panel header:
- Copy post (clipboard icon) — Copies the full post text + hashtags
- Copy first comment (comment icon) — Copies the first comment text
- Mark as Published (bookmark icon) — Saves the post to history (see below)
Paste directly into LinkedIn. The line breaks are preserved.
Post History
After posting to LinkedIn, click the bookmark icon in the output header to mark it as published. You’ll be prompted for the optional LinkedIn post URL (paste it after posting). The post metadata is saved to data/linkedin-posts.json:
- Full post text (for dedup reference)
- Hashtags, source slugs, collections, style, model, character count
- LinkedIn URL (if provided)
- Theme tag
This history feeds back into Journey mode and Suggestions — the AI sees what’s been published and avoids suggesting the same topics. History is visible in the Journey tab sidebar showing the last 10 published posts with dates and links.
Identity Sanitization
All generated output is automatically run through the Galactic Identity System (identity_map.json, 148 patterns). Real hostnames, IPs, usernames, and infrastructure details are replaced with their fictional equivalents before display. You never need to manually sanitize LinkedIn posts.
LinkedIn Best Practices (Built In)
The AI prompts encode these research-backed practices:
- No external links in body — Put links in first comment
- Hook-first writing — Bold statement or vulnerability in first 2 lines
- Line breaks for mobile — Dense text gets skipped on phones
- Genuine questions — Not engagement bait, real discussion starters
- Specifics over generics — Exact numbers, tech names, real outcomes
- 3-5 hashtags max — More reduces reach
Model Selector
The top bar model selector offers 9 models across 4 price tiers:
| Tier | Models | Cost |
|---|---|---|
| Free | Gemini 2.0 Flash, Llama 3.3 70B, DeepSeek R1 | $0 |
| Budget | Gemini 2.5 Flash, DeepSeek V3 | ~$0.15-0.30/M tokens |
| Mid | Claude Haiku 4.5, Gemini 2.5 Pro | ~$1-2/M tokens |
| Premium | Claude Sonnet 4.6, Claude Opus 4.6 | ~$3-5/M tokens |
Provider-aware routing sends requests directly to Anthropic, Google, Groq, or NVIDIA APIs when keys are configured, bypassing OpenRouter’s markup. Falls back to OpenRouter for any model.
The Amplify with Claude button always uses Claude Sonnet regardless of the selected model — it’s a quality pass on top of a cheaper draft.
API
POST /api/admin/linkedin-post with these actions:
- generate — Create a LinkedIn post from content, slug, or freeform input
- suggest — AI scans recent content for LinkedIn-worthy candidates
- refine — Iterate on a generated post with specific instructions
- journey — Plan a multi-post content series from the full content catalog
- journey-generate — Generate a post from multiple source entries with a narrative angle
- save-published — Save a post to the published history tracker
- get-history — Load the published post history
Related
- Content Lab (
/admin/content-lab) — Full blog post and journal generation - Probe Studio (
/admin/probe-studio) — Content analysis and coaching - Voice Engine (
src/lib/voice-engine.ts) — Shared AI calling infrastructure