PostPilot for X

User manual

How every PostPilot feature works — where it lives, what it scores, and what it never does. Written for v0.7.

STILL LOCAL · STILL NO X LOGIN · YOU HIT SEND

Get started

Install from the Chrome Web Store. Open x.com and start a post, reply, or quote. A dark bar appears under the compose toolbar. Type. The number updates as you go.

The toolbar icon popup turns scoring on or off and opens Settings (labeled Voice Match). You do not log into X through PostPilot. You do not grant account access. PostPilot reads the composer on the page you already have open.

What it will not do

It does not post, schedule, auto-reply, or write the tweet for you. AI rewrites are suggestions you paste. A self-reply prompt is a follow-up you still send.

The compose bar

Where: under the X compose toolbar on x.com / twitter.com

Click the bar to expand the panel. Click again to collapse. The bar is a summary; the panel is the explanation.

What you see on the bar

ChipMeaning
Score badge0–100. Green ≥ 70, yellow ≥ 50, red below that.
Hook typeWhich of 20 opener patterns matched, or none.
Character countTurns green in the length sweet spot (default 280–320; Settings can change this, and Pro can learn yours).
Voice MatchPro How close this draft is to your voice fingerprint.
IssuesCount of governor errors (red) or warnings (yellow).
Now / better hourPro From your own posting-time data, once learning is ready.
Reach rangePro ~low–high impressions from similar posts of yours, with sample size. Hidden until n ≥ 8 similar posts.
Invites a reply / Reply baitBroadcast vs a real question. “Thoughts?” and similar bait is called out, not rewarded.
12/20Pro Collection funnel: how many of your posts have been learned vs the 20 needed.
N draftsHow many drafts sit in the queue.

Inside the expanded panel

  • Save draft — keeps the current text and score. Restore later from the queue in this panel.
  • Save hook Pro — appears when the score is 70+. Also auto-saves on publish at 70+.
  • Score Breakdown — the parts that add up to the badge.
  • Before you send — checklist. Warns. Never blocks send.
  • Governor list — each matched phrase or structural issue.
  • Rewrite — generate suggestion(s) and replace the compose box if you accept.
  • This week — rolling score average of posts you actually sent.

How the score is built

Where: expanded panel → Score Breakdown

The badge is a 0–100 number from local scoring. Attached images and pasted links move it. A claim that looks like fabricated research does not get a data-reveal bonus.

ComponentWhat it rewards
Hook Type /15Did an opener pattern fire, and how strong is that type?
Specificity /20Numbers, names, concrete claims — not “this is huge.”
Length /10Inside the sweet spot (default 280–320 characters, or your learned band on Pro).
Curiosity Gap /15Does the first line create an open loop worth clicking or reading?
Learned Patterns /10Pro Boosts from what actually worked on your account.
Image / link /8Media you attached in this compose box, not emoji or the parent tweet’s photo.
Reply craft /15Replies only — substance vs echoing the parent.
PenaltiesGovernor hits and other deductions. Reasons listed under the row.

A score under 60 is treated as a weak hook. The checklist will say so. You can still send.

Originals vs replies

Originals, quotes, and ambiguous compose boxes use the original-post rubric. A reply uses a separate reply-craft layer (mechanism, constraint, adding something the parent didn’t say). Reply-craft shows in the breakdown instead of silently moving the number.

Hook types

Where: compose bar label · Settings → Hooks to tune weights

PostPilot classifies the opener. One type wins. Weights are priors; Pro can shift them from your own results.

Data Reveal

Lead with specific data from tracking or research.

Contrarian

Challenge a common belief.

Curiosity Gap

Open a loop that wants resolution.

Stakes Urgency

Time pressure or real stakes.

Personal Failure

A mistake and what it taught you.

Question

A direct, specific question.

Pattern Recognition

A pattern across several observations.

Shocking Stat

A surprising number up front.

Prediction

A dated or falsifiable call.

Before After

Contrast then vs now.

Secret Reveal

Insider knowledge others skip.

Social Proof

Authority or earned results, not clout-begging.

Declarative Claim

Name the constraint or mechanism in one sentence.

Observation

Domain insight without making it about you.

Direct Challenge

Name what the reader is doing and the cost.

Stolen Thought

The thing they already know and won’t say.

Absurd Reframe

Mundane thing, dramatic stakes — a pattern interrupt.

Binary Frame

Two choices, no fake third option.

Reader Mirror

Describe their situation so they feel seen, then the insight.

Amplification

A reply that adds analysis, not “this.”

Governor

Where: bar issue count · expanded panel list · Settings → Governor

The governor is a phrase and structure checker. It flags patterns that tend to kill engagement. It does not stop you from posting.

  • Banned / blocking — treated as errors. Checklist: “blocking phrases.”
  • Weak — soft, hedgey, or empty language. Warnings.
  • AI slop — ChatGPT tells, bland templates, telltale phrasing.
  • Fabrication — “I tracked N for D days” energy without it being a real study. Those drafts do not get a data-reveal bonus.
  • Structure — length and shape issues the lists don’t cover.

You can add or remove phrases in Settings → Governor. Export/import config from the bottom of the Governor and Hooks tabs.

Before you send

Where: expanded panel → Before you send

A last look: hook ≥ 60, no blocking phrases, length in the sweet spot, image/link delta if you attached media, and (Pro) whether this hour is one of your better ones. Warns. Never greys out Post.

Reply invite

A specific question can show Invites a reply. Engagement bait (“thoughts?”, “what do you think?”, “RT if”) shows Reply bait. A statement with no question is a broadcast and stays quiet on the bar.

AI rewrites

Where: expanded panel · Settings → AI Rewrites (quota copy only)

One click sends the current draft, score context, and governor issues to PostPilot’s rewrite server (Claude). Suggestions are meant to be more engaging — stop, reply, repost — not to chase the badge. You choose whether to replace the compose box.

FreePro
Suggestions per click13, each a different hook angle
Per day340
ResetMidnight UTC
VoiceGenericCalibrated to Voice Match when a profile exists
API keyNone. PostPilot pays. No BYOK.

Quota is enforced on the server. A Free client cannot claim three variants. Failed generations are not supposed to burn a slot. There is no API key field anywhere in Settings.

Drafts and compare

Where: expanded panel → Save draft · draft list below

Save scored drafts, restore one into the compose box, delete ones you don’t need. Pick two and compare scores side by side — short vs long, question vs claim — without leaving X.

Settings

Where: extension popup → Voice Match, or chrome://extensions → PostPilot → Extension options

TabWhat it’s for
LicensePaste the LemonSqueezy key from your purchase email. Deactivate. Export/import a full backup of local data (voice, drafts, history, collected posts).
VoicePro Paste a voice profile, generate the fingerprint, coach, overrides.
PostsPro Sample posts (at least 5) used to build Voice Match. Can pull from your best collected posts.
GovernorEdit phrase lists and severity.
HooksHook-type weights and scoring knobs (sweet spot, weak threshold).
AnalyticsScore Trends on Free. Full Breakdown, CSV import, and learning controls on Pro. The tab is named Analytics; the product names are Score Trends and Full Breakdown.
AI RewritesQuota explanation only. No key to paste.

Pro is $24/mo or $240/yr. Activate once per machine (limit 5). The store install ignores any “dev Pro” flag — that toggle exists only on unpacked builds.

Voice Match

Where: Settings → Voice and Posts · compose bar badge · expanded Voice Match breakdown

Pro

Voice Match is a local fingerprint of how you write: sentence length, fragments, hook mix, formality, you vs I, niche words, and more (13 dimensions). Scoring and Pro rewrites use it so “better” still sounds like you.

  1. Add at least 5 sample posts on the Posts tab (paste, or import from collected high-performers).
  2. Optionally paste a longer voice profile markdown on the Voice tab.
  3. Generate the fingerprint. The compose bar then shows a Voice Match badge on drafts.

Nothing in the fingerprint is uploaded except a compact style digest when you, on Pro, request a rewrite.

Score Trends and the Full Breakdown

Where: Settings → Analytics · compose chips once ready

Score Trends (Free): this week’s average score, post count, trend vs last week. Built from scores of posts you sent, stored locally.

Full Breakdown (Pro): hook-type performance, length sweet spot, topics, best hours (weekday / weekend / combined), media impact, reply craft, and a short recommendation list. Derived from your own collected posts — never from a global “viral” average.

How collection works

Pro

As you browse your own profile, PostPilot reads tweet text and public engagement counts off the page. No X API. Posts younger than 24 hours wait. Posts with no impressions yet are skipped. The funnel chip (12/20) tells you why insights are empty.

Learning turns on at 20 collected posts. Until then the Full Breakdown stays dark and the compose chips for time/reach/learned boosts do not appear.

Import X Analytics CSV

Pro

X Premium: More → Analytics, or analytics.x.com. Export tweet activity (columns like Tweet id / Tweet text) — not the by-day summary. Drop the CSV on Settings → Analytics. Import skips the 24-hour wait. Profile scraping still runs afterward so new posts keep feeding in.

Other Pro surfaces

Viral Post Analyzer

Where: badges on posts in your X feed

Every feed post gets a PostPilot score and hook type. Same engine as compose, including your voice and learned boosts, so the number means the same thing in both places.

Thread scorer

Where: when you are composing a thread (multiple tweet boxes)

Each tweet in the thread is scored. The weakest link is flagged so you fix the sagging post instead of averaging the thread into one fake number.

Hook Library

Where: expanded panel · auto-save on publish at 70+

Save openers that worked. Remix when you are stuck. High-scoring posts can auto-save when you hit Post.

Self-reply prompt

Where: after you publish an original (not a reply)

One suggested follow-up, based on hook type. You paste and send it. PostPilot never posts it.

Reach range

Where: compose bar, once n is honest

A range (roughly the 25th–75th percentile of impressions on similar posts of yours) plus n= sample size. Not a single invented “14,200 people.” Hidden until there are at least 8 similar posts with impressions.

Privacy

Scoring, drafts, Voice Match, Score Trends, and the Full Breakdown stay in chrome.storage.local on this browser. Uninstalling the extension deletes them.

Two network calls you trigger:

  1. License check — key and instance id to LemonSqueezy. No post text.
  2. Rewrite — the draft you asked to rewrite, a device id (Free) or license key (Pro), and on Pro a compact style digest. Daily caps are counted on PostPilot’s server. Post content is not kept as a dataset.

Full language: privacy policy.

Store vs unpacked Chrome profiles do not share storage. Use License → Export / Import backup if you move machines or test an unpacked build.

FAQ

The bar isn’t showing

Confirm scoring is enabled in the popup. Refresh x.com after installing or updating. The overlay attaches to X’s compose toolbar; if X ships a DOM change, the bar can vanish until PostPilot updates. That is a known standing risk.

Rewrites say try again / quota

Quota copy is explicit when you are out for the day (reset midnight UTC). A generic failure is usually a stale extension after an update — reload the extension on chrome://extensions and refresh x.com. Free is 3/day, not 1.

Image attached on a text-only reply

v0.7 only scores media inside the composer attachments, not emoji images or the parent tweet’s photo. Update if you are still on an older store build.

Insights are empty

Need 20 collected posts with impressions, or a tweet-level CSV. Check the funnel: handle detected, waiting on 24h, missing impressions. Browse your own profile while logged in so the collector can see counts.

Can I cancel Pro?

Yes, anytime in LemonSqueezy. Scoring on Free keeps working. Local data stays on the device until you clear it or uninstall.

Manual for PostPilot for X v0.7.0. Scheduling is off-thesis on purpose. Something wrong or missing? Open an issue or reply to @postpilotforx.