PostHelper 1.2.1
dotnet tool install --global PostHelper --version 1.2.1
dotnet new tool-manifest
dotnet tool install --local PostHelper --version 1.2.1
#tool dotnet:?package=PostHelper&version=1.2.1
nuke :add-package PostHelper --version 1.2.1
π PostHelper CLI
Improve your tweets and social media posts with AI powered by the GitHub Copilot SDK.
β¨ Features
- π¨ Interactive UI - Beautiful ASCII art header, status display, and menu-driven workflow
- π― Multiple Styles - Professional, Friendly, or Hype modes
- π Emoji Control - Low, Default, or High emoji levels
- π± Multi-Platform Support - Smart character limits for Twitter (280), Bluesky (300), Mastodon (500), Threads (500), LinkedIn (3000), Facebook (63206), or Custom
- π€ Smart Model Selection - Auto-selects efficient models (gpt-5-mini, gpt-4.1)
- π Clipboard Support - Copy improved tweets directly to clipboard
- π Session History - View all improvements with platform and length info
- π₯ Dual Mode - Interactive UI or CLI for scripting/piping
- βοΈ Settings Persistence - Remember your preferred platform and custom lengths
- π URL-to-Tweet - Draft tweets from blog posts and articles with content preview and optional URL inclusion
π Prerequisites
- .NET 10.0 SDK or later
- GitHub Copilot CLI installed and authenticated
Installing GitHub Copilot CLI
# Windows (WinGet)
winget install GitHub.Copilot
# macOS/Linux (Homebrew)
brew install copilot-cli
# All platforms (npm)
npm install -g @github/copilot
Then authenticate:
copilot
# Type /login and follow the prompts
π Installation
As a .NET Tool (Recommended)
dotnet tool install -g PostHelper
From Source
git clone https://github.com/jamesmontemagno/post-helper-cli.git
cd post-helper-cli
dotnet build
π Usage
π§° dnx in .NET 10 (run without installing)
.NET 10 includes dotnet dnx (and on Windows a dnx shim) to execute a .NET tool package from NuGet without permanently installing itβthink of it like npx, but for .NET tools.
For PostHelper, this means you can do:
dnx PostHelper
That will restore/run the PostHelper tool package and launch the interactive UI.
Passing arguments to the tool
dnx has its own options (like --version, --source, etc.). To pass arguments through to the tool itself, use --:
# Show PostHelper help (forwarded)
dnx PostHelper -- -h
# Improve a tweet in one shot
dnx PostHelper -- "Check out my new blog post!" --style Friendly --emoji Default
Pinning a version
You can specify a version using @:
dnx PostHelper@1.2.3
If youβd rather install it permanently, use the .NET tool install approach below.
Interactive Mode (Recommended)
Simply run without arguments for the full interactive experience:
post-helper
This launches the interactive UI with:
- ASCII art header and Copilot status check
- Auto-selected efficient model (gpt-5-mini or gpt-4.1)
- Menu to enter tweets, change style/emoji, view history
- Side-by-side comparison of original vs improved
- One-click copy to clipboard
CLI Mode
For scripting and piping, use arguments:
# With tweet as argument
post-helper "Check out my new blog post!"
# Pipe from stdin
echo "Check out my new blog post!" | post-helper
URL-to-Tweet Mode
Draft tweets directly from blog posts and articles:
Interactive Mode
Simply run post-helper and select "π Draft from URL":
- Enter the URL of your blog post or article
- System fetches and shows a content preview
- Confirm if you want the URL included in the tweet
- AI drafts a tweet from the content
- Option to improve the draft further with your current style/emoji settings
CLI Mode
# Draft a tweet from a URL
post-helper --url "https://example.com/blog-post"
# With style and emoji options
post-helper --url "https://myblog.com/article" --style Friendly --emoji High
# Specify model
post-helper --url "https://example.com/post" --model gpt-4o
# Pipe to clipboard
post-helper --url "https://example.com/blog" | pbcopy
The AI will:
- Fetch and extract the article content
- Show you a preview of what was extracted
- Ask if you want the URL included in the tweet
- Draft a compelling tweet that captures the key points
- Automatically save to history for later reference
Style Options
# Professional style (default)
post-helper "Check out my new blog post!" --style Professional
# Friendly style
post-helper "Check out my new blog post!" --style Friendly
# Hype style
post-helper "Check out my new blog post!" --style Hype
Emoji Levels
# Low emojis (0-1)
post-helper "Check out my new blog post!" --emoji Low
# Default emojis (1-3)
post-helper "Check out my new blog post!" --emoji Default
# High emojis (3-5)
post-helper "Check out my new blog post!" --emoji High
Platform Selection
In interactive mode, select your platform to set character limits:
- π Twitter - 280 characters
- π¦ Bluesky - 300 characters
- π Mastodon - 500 characters
- π± Threads - 500 characters
- πΌ LinkedIn - 3000 characters
- π Facebook - 63206 characters
- βοΈ Custom - Set your own limit
The app remembers your preferred platform and custom lengths between sessions.
Model Selection
# Specify model directly
post-helper "Check out my new blog post!" --model gpt-4o
# Interactive model picker (default when --model not specified)
post-helper "Check out my new blog post!"
Combined Options
post-helper "Just shipped a new feature!" --style Hype --emoji High --model gpt-4o
Piping Output
# Pipe improved tweet to clipboard (macOS)
post-helper "Check out my new blog post!" | pbcopy
# Pipe improved tweet to clipboard (Windows)
post-helper "Check out my new blog post!" | clip
π§ CLI Options
| Option | Short | Description | Default |
|---|---|---|---|
--style |
-s |
Style/tone (Professional, Friendly, Hype) | Professional |
--emoji |
-e |
Emoji level (Low, Default, High) | Default |
--model |
-m |
AI model to use | Auto (gpt-5-mini) |
--url |
-u |
URL to fetch and draft a tweet from | None |
π Environment Variables
| Variable | Description |
|---|---|
GH_TOKEN |
GitHub token with Copilot access (optional, uses CLI auth otherwise) |
Optional .env for local development
If you prefer, you can set GH_TOKEN via an environment file in your shell/session (donβt commit it):
- Create a file named
.envin the repo root - Add:
GH_TOKEN=...
How you load .env depends on your shell and tooling. The app also works without it if youβre already authenticated with the GitHub Copilot CLI.
ποΈ .NET 10 commands (from source)
These are the modern equivalents youβd use instead of any dnx-style instructions.
Build
dotnet build
Run (project)
dotnet run --project .\PostHelper.Cli\PostHelper.Cli.csproj
Run with arguments
dotnet run --project .\PostHelper.Cli\PostHelper.Cli.csproj -- "Check out my new blog post!" --style Friendly --emoji Default
Pack & install as a local tool (optional)
dotnet pack -c Release
dotnet tool install --global --add-source .\PostHelper.Cli\bin\Release PostHelper
π¦ Dependencies
- GitHub.Copilot.SDK - Official Copilot SDK
- Refractored.GitHub.Copilot.SDK.Helpers - CLI checker and model selection
- Spectre.Console - Beautiful console UI
- TextCopy - Cross-platform clipboard
π License
MIT License - see LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.