Plan: Content Management Pipeline
Vision
A personal content management pipeline where ideas flow from raw thought to published post, powered by pal-e-docs kanban, LinkedIn SDK, and MCP scheduling. DORA Elite applied to content: measure posting frequency, lead time from idea to publish, and never lose a thought.
Projects & Repos Touched
| Project/Repo | Platform | Role in this plan |
|---|---|---|
| Posts (pal-e-docs project) | pal-e-docs | Content storage, kanban board, revision history |
| linkedin-sdk | Forgejo | Python SDK for LinkedIn API v202510 (posting engine) |
| linkedin-mcp-scheduler | Forgejo | MCP server for scheduling posts via conversational AI |
| linkedin-scheduler-remote | Forgejo | Remote MCP connector for Claude.ai (Streamable HTTP) |
Context
Three LinkedIn repos exist on Forgejo, all published to PyPI, but all stuck on feature branches (not main). None are deployed or configured as MCP servers. The Posts project has a board (
board-posts) with 3 drafts in backlog. OAuth credentials are configured at ~/secrets/linkedin/credentials.env. The pipeline is: draft in pal-e-docs → kanban → schedule via MCP → SDK posts to LinkedIn API.What's already done:
- [x] Posts project + board + project page created
- [x] 3 post drafts in backlog (Draper gratitude, What Is a Platform, Hallucinations)
- [x] linkedin-sdk published to PyPI (v0.1.2)
- [x] linkedin-mcp-scheduler published to PyPI (v0.1.2)
- [x] linkedin-scheduler-remote published to PyPI (v0.2.0)
- [x] OAuth credentials configured
- [ ] Repos on main branch
- [ ] SDK validated (can actually post)
- [ ] MCP server deployed
- [ ] MCP configured in Claude Code
- [ ] First post published
Previous Plan
None. First plan for the Posts project.
Depends On
None. LinkedIn SDK and OAuth are independent of platform plans.
Decisions Made
| Decision | Rationale |
|---|---|
| Posts project is private (<code>is_public: false</code> on all notes) | Drafts are personal content. Auth enforcement is aspirational until pal-e-docs gets Keycloak integration — Tailscale perimeter is the current wall. |
| Board columns map to content pipeline (backlog → done) | 7 board columns cover 8 statuses. "scheduled" and "posted" share <code>done</code> with labels. |
| LinkedIn first, multi-platform later | SDK and MCP exist for LinkedIn. Extend to blog/email/X in future phases. |
| Local MCP before k8s deploy | Get the pipeline working locally first. k8s deploy is Phase 5 (linkedin-scheduler-remote fix). |
Phases
Phase 1: Repo hygiene + SDK validation (COMPLETED)
- Goal: All 3 LinkedIn repos on main with clean branches. Validate SDK can actually post to LinkedIn.
- Owner: agent-dev
- Repos: linkedin-sdk, linkedin-mcp-scheduler, linkedin-scheduler-remote
- Steps:
Phase 2: Define offering (NOT STARTED)
- Goal: Define Lucas's services list, CTA link, and professional positioning. Fill in the
[add link here]and[services]placeholders across all drafts. - Owner: main session (Lucas + Betty Sue)
- Steps:
Phase 3: Polish & publish first post (IN PROGRESS)
- Goal: Move "What Is a Platform?" through the full kanban pipeline to published on LinkedIn.
- Owner: main session
- Steps:
Phase 4: MCP scheduler local deployment (NOT STARTED)
- Goal: linkedin-mcp-scheduler running locally and configured as MCP server in Claude Code.
- Owner: agent-dev
- Repo: linkedin-mcp-scheduler
- Steps:
Phase 5: Fix linkedin-scheduler-remote k8s deploy (NOT STARTED)
- Goal: Fix the ImagePullBackOff, get the remote MCP connector running in k8s for Claude.ai access.
- Owner: agent-dev
- Repo: linkedin-scheduler-remote
- Steps:
Phase 6: Pipeline integration — pal-e-docs → MCP (NOT STARTED)
- Goal: MCP scheduler reads post content from pal-e-docs notes. Board items auto-move when posts are scheduled/published.
- Owner: agent-dev
- Steps:
Key Files
| Phase | File | Repo | Change |
|---|---|---|---|
| 1 | various | all 3 linkedin repos | Merge feature branches to main |
| 4 | <code>~/.claude/settings.json</code> | claude-custom | Add linkedin-mcp-scheduler MCP config |
| 5 | <code>k8s/deployment.yaml</code> | linkedin-scheduler-remote | Fix image reference |
Verification
- [ ] All 3 repos on main, CI green
- [ ] SDK can create and delete a test post on LinkedIn
- [ ] Services list and CTA link finalized
- [ ] First post published on LinkedIn
- [ ] MCP scheduler configured in Claude Code, can schedule posts
- [ ] linkedin-scheduler-remote pod Running in k8s
- [ ] End-to-end: pal-e-docs note → MCP schedule → LinkedIn publish → board auto-moves
Next Plan Seeds
- Multi-platform posting (blog, email, X) — extend beyond LinkedIn
- Custom board columns for pal-e-docs — support 8+ statuses natively
- Content analytics — track engagement metrics back into pal-e-docs
- Personal project template — template-personal-page for Remember/Posts style projects
- pal-e-docs auth integration — Keycloak for per-user private notes
Related
project-posts— project pageboard-posts— content pipeline kanbanplan-pal-e-platform— Keycloak deployment (auth dependency)plan-2026-03-08-tryout-prep— Phase 5 (Keycloak realm, OIDC pattern)