pal-e-posts — Project Page
Vision
Personal content management. A private workspace for preparing posts for LinkedIn, blogs, emails, and anywhere else thoughts become public-facing. Draft here, polish here, schedule and publish from here.
User Stories
| Role | Story | Success Metric |
|---|---|---|
| Lucas | Capture a raw idea for a post and develop it through drafts to publication-ready | Posts move through kanban from backlog to posted with clear revision history |
| Lucas | Schedule posts for optimal timing and track publication | Scheduled posts auto-publish via linkedin-mcp-scheduler. Posted items tracked with date and platform. |
| Lucas | Manage content pipeline visually across all target platforms | Board shows all posts by maturity stage. Tags identify target platform. |
Plan
Active:
plan-posts — Content Management Pipeline. 6 phases: repo hygiene, define offering, first post, MCP local, k8s deploy, pipeline integration.Board
Board:
board-posts. Content pipeline mapped to board columns:| Status | Board Column | Meaning |
|---|---|---|
| Backlog | <code>backlog</code> | Raw idea captured |
| Todo | <code>todo</code> | Worth drafting |
| Next Up | <code>next_up</code> | Actively writing |
| In Progress | <code>in_progress</code> | Editing / polishing |
| QA | <code>qa</code> | Review / proofread |
| Needs Scheduling | <code>needs_approval</code> | Approved, pick a date/time |
| Scheduled / Posted | <code>done</code> | Label: <code>status:scheduled</code> or <code>status:posted</code> |
Tag posts with target platform:
linkedin, blog, email.Status
3 drafts in backlog as of 2026-03-14. No posts published yet. LinkedIn SDK + MCP scheduler + remote connector all exist on Forgejo (all on feature branches, none deployed). OAuth credentials configured. Plan created:
plan-posts.Milestones
None yet. First milestone: first published post on LinkedIn.
Architecture
Content pipeline:
- pal-e-docs — note storage, board kanban, revision history
- linkedin-sdk — Python SDK for LinkedIn API v202510 (typed, async, PyPI published)
- linkedin-mcp-scheduler — MCP server wrapping the SDK for conversational scheduling
- linkedin-scheduler-remote — Streamable HTTP connector for Claude.ai
- OAuth — credentials at
~/secrets/linkedin/credentials.env
Flow: draft in pal-e-docs → move through kanban → schedule via MCP → SDK posts to LinkedIn API.
Repos
| Repo | Platform | Role | Status |
|---|---|---|---|
| <code>linkedin-sdk</code> | Forgejo | Python SDK for LinkedIn API v202510. PyPI: <code>ldraney-linkedin-sdk</code> | Published, on feature branch |
| <code>linkedin-mcp-scheduler</code> | Forgejo | MCP server for scheduling posts. PyPI: <code>linkedin-mcp-scheduler-ldraney</code> | Published, on feature branch |
| <code>linkedin-scheduler-remote</code> | Forgejo | Remote MCP connector for Claude.ai | Pod ImagePullBackOff, on feature branch |
Conventions
- Slug pattern:
post-{descriptive-name} - Note type:
post - Tags:
private,draftwhile drafting. Add platform tag (linkedin,blog,email) when target is known. Replacedraftwithpublishedwhen posted. - All posts
is_public: false— drafts are private by default. - Board column mapping: see Board section above.
Inbox
Query:
list_notes(project="posts", note_type="post")