Last updated: January 28, 2026
Primary User Persona
A technical professional who wants to share expertise and projects with a professional LinkedIn audience. Goals include educating their network, showcasing open-source contributions, building a professional brand through consistent content, and automating the posting workflow.
Pain Points
- Manual posting is time-consuming
- Hard to maintain a consistent posting schedule
- Difficulty linking GitHub projects with rich previews
- No programmatic way to manage LinkedIn content
- Want to post when projects are ready, not when manually available
Phase 1 — Essential Posting
US-1: Create Text Post
As a technical professional, I want to create a LinkedIn post with text content so that I can share insights and updates with my network.
- Accepts text commentary (up to ~3000 characters)
- Supports hashtags and mentions
- Configurable visibility (PUBLIC, CONNECTIONS, LOGGED_IN)
- Returns post URN and confirmation
US-2: Create Post with Link
As a developer, I want to create a LinkedIn post with a link to my project so that my network can discover and explore my work.
- Accepts commentary + URL
- Optional custom title and description
- LinkedIn renders rich link preview
US-3: Retrieve My Posts
As a content creator, I want to retrieve my recent LinkedIn posts so that I can review what I've shared.
- Paginated results (limit, offset)
- Returns post URN, commentary, timestamp, visibility
US-4: Delete Post
As a content manager, I want to delete a LinkedIn post by its URN so that I can remove outdated content.
- Accepts post URN
- Idempotent (deleting already-deleted post does not error)
Phase 2 — Content Management
US-5: Update Existing Post
As a content curator, I want to edit an existing LinkedIn post so that I can correct mistakes or update information.
- Update commentary, call-to-action labels, and landing page URL
US-6: Create Post with Image
As a visual storyteller, I want to create a LinkedIn post with an image so that I can share screenshots, diagrams, or visual content.
- Accepts local image path (PNG, JPG, GIF)
- Uploads via Images API, creates post with image URN
- Supports alt text for accessibility
Phase 2.5 — Social Interactions
Add Comment
Comment on any post (max 1250 characters).
Add Reaction
React to posts with LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, or ENTERTAINMENT.
Phase 3 — Scheduling
LinkedIn API does not support native scheduling. A custom solution was built using SQLite and node-cron.
US-8: Schedule Post for Future
As a busy professional, I want to schedule a LinkedIn post for a specific date/time so that I can maintain consistent posting.
- Stores scheduled posts in local SQLite database
- Scheduler daemon checks every minute and publishes due posts
- Retry logic (3 attempts max)
- Cancel, list, and inspect scheduled posts
Phase 4 — Rich Media
Poll Posts
Create polls with 2-4 options, durations from 1 to 14 days.
Document Posts
Upload PDFs, PPTs, and DOCs (up to 100 MB / 300 pages).
Video Posts
Upload MP4, MOV, AVI, and more (up to 200 MB for personal accounts).
Multi-Image Posts
Upload 2-20 images per post with optional alt text.
Phase 5 — Integrations (Planned)
Draft Management
Save and manage draft posts locally (LinkedIn API does not support drafts).
GitHub Integration
Auto-post from GitHub releases and pull requests.
Technical Constraints
- No native post scheduling via LinkedIn API
- No draft API
- Rate limits are undocumented (exponential backoff used)
- Analytics for personal posts are unknown/undocumented
- Access tokens expire after 60 days (refresh mechanism implemented)
- Carousel posts require sponsored accounts only