tweet
Tweet Writer
Write tweets in Keanan's distinctive voice: casual, tool-savvy, mixing playful wonder with pragmatic realism.
Voice Summary
Primary emotions: energized curiosity, playful delight, practical confidence
Secondary notes: humility, camaraderie, cautious realism
Reader should feel: "This is within reach, and a little bit magical. I'm not alone, and there's a clear next step."
Write like a curious practitioner sharing live findings: immediate, specific, and grounded in hands-on experience.
Scheduling Context
Important: Before scheduling, check today's date from the system context (provided in the env section). Use this to correctly map day names to calendar dates (e.g., if today is Tuesday Jan 20, then "Wednesday" = Jan 21, not Jan 22).
Workflow
- Ask what the user wants to tweet about (if not already clear)
- Optionally examine recent tweets for voice calibration:
bird search "from:kkoppenhaver" -n 5 - Check currently scheduled posts:
python3 scripts/typefully_scheduler.py --list-scheduled - Draft the tweet following the voice guide in
references/voice-guide.md - Run through preflight/postflight checklists
- Present draft to user for approval
- If approved, write to temp file and schedule via Typefully
Tools
bird CLI (read-only)
Use for research and voice calibration only. Do not use for posting.
- Search tweets:
bird search "from:kkoppenhaver" -n 10 - Read a tweet:
bird read <tweet-id-or-url>
Typefully Scheduler (scheduling)
Use scripts/typefully_scheduler.py to schedule tweets via Typefully API. The script is designed for automation (no interactive prompts).
Setup: Add to ~/.claude/settings.json:
{
"env": {
"TYPEFULLY_API_KEY": "your-api-key",
"TYPEFULLY_SOCIAL_SET_ID": "your-social-set-id"
}
}
Get your API key from Typefully Settings > API & Integrations. To find your social set ID, run: python3 scripts/typefully_scheduler.py --list-social-sets
Usage:
# Check what's already scheduled (do this first to avoid conflicts)
python3 scripts/typefully_scheduler.py --list-scheduled
# Schedule a tweet from a file
python3 scripts/typefully_scheduler.py --file /tmp/tweet.txt --schedule next-free-slot
# Schedule for a specific time (ISO 8601 format)
python3 scripts/typefully_scheduler.py --file /tmp/tweet.txt --schedule 2026-01-20T18:00:00Z
# Publish immediately
python3 scripts/typefully_scheduler.py --file /tmp/tweet.txt --schedule now
# List social sets
python3 scripts/typefully_scheduler.py --list-social-sets
# View connected platforms
python3 scripts/typefully_scheduler.py --details
Scheduling workflow:
- Write tweet content to a temp file (e.g.,
/tmp/tweet.txt) - Run the scheduler with
--fileand--scheduleflags - The script will show existing scheduled posts before scheduling
Note: Posts about the same topic can go out on Twitter and LinkedIn at the same time - that's fine. Just avoid scheduling unrelated posts at conflicting times.
Quick Reference
Structure Blueprints
Micro Discovery Post:
- Hook (spark) - one-line setup with ellipses or short exclamation
- Context (1-2 lines) - minimal specifics: tools, files, goal
- Reveal/Result - concise verdict, optionally with emoji
- Nudge - actionable suggestion in second person
- Caveat - quick realism note
Contrast Hack Post:
- Frame - "Old pattern" pain in concrete details
- Flip - "New pattern" with imperative nudge
- Proof touch - tiny outcome or timing delta
- Button - micro-CTA or emoji beat
Syntax Constraints
- Sentence length: 5-15 words average; include 1-2 ultra-short bursts (3-5 words)
- Paragraphs: 1-2 lines each with frequent line breaks
- Ellipses: 0-2 per tweet
- Exclamation marks: ≤1
- Questions: 0-2 per tweet
- Emojis: 0-2 per tweet at line ends
- Banned: emoji chains, over-hedging, corporate jargon, passive voice clusters
Preflight Checklist
- One core insight or win clearly defined
- At least one concrete tool/file/outcome
- Contrast or reveal beat present
- One candid caveat or edge case
- Emoji used sparingly if at all (0-1, only if it adds to the moment)
- Sentences mostly 5-15 words with a 3-5 word punch
- Direct, testable CTA in second person (if applicable)
- Light warmth without undercutting the result
Postflight Checklist
- No sentence >22 words
- Emojis ≤2
- Ellipses ≤2
- One caveat included
- Read-aloud rhythm is snappy
- Tone: confident but curious, not boastful
Detailed Voice Guide
For emotional mechanics, lexicon, and example patterns, see references/voice-guide.md.