You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: document content queue system — decisions, trade-offs, limitations
Adds Social Content Queue section to CLAUDE.md covering:
- Architecture (queue file, post script, cron)
- 4 design decisions with rationale and trade-offs
- Voice validation rules
- Known limitations (no retry, no threads, JSON not DB, uptime dep)
- Remaining work checklist
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
node scripts/daily-post.js --add "text" --category thesis # Append new post
461
+
```
462
+
463
+
### Design Decisions
464
+
465
+
**D1: Thesis-only auto-scheduling**
466
+
-**Decision:** Only sovereignty thesis / vision / philosophy posts are auto-scheduled. All product announcements, technical content, and build-in-public posts are manual and founder-driven.
467
+
-**Rationale:** Account data showed 3 authentic posts (509-1,394 views) vastly outperformed 556 automated ones (0-57 views). Automated product posts risk being poorly timed or contradicting the founder's manual narrative. Technical depth is reserved for long-form X articles, benchmarks, demos, and videos.
468
+
-**Trade-off:** Slower product content cadence, but higher quality and timing control.
469
+
470
+
**D2: Milestone-aligned sequencing**
471
+
-**Decision:** 30 posts are sequenced in 4 weekly arcs that prime the audience for upcoming product milestones.
472
+
-**Rationale:** Thesis posts build narrative context so that manual product drops land on prepared ground.
**D3: Content lives in sovren-website, not mr-haven**
476
+
-**Decision:** Brand-level social content and posting infrastructure lives in this repo.
477
+
-**Rationale:**`@sovren_software` is the umbrella brand. `mr-haven` is one product underneath it. Brand assets belong at the brand level.
478
+
479
+
**D4: Credentials via secrets.env, not dotenv**
480
+
-**Decision:** Cron sources `~/.claude/secrets.env` directly. No dotenv package for credential loading.
481
+
-**Rationale:** Twitter API credentials (`TWITTER_API_KEY`, `TWITTER_API_SECRET`, `TWITTER_ACCESS_TOKEN`, `TWITTER_ACCESS_SECRET`) are already available via direnv in interactive sessions and via secrets.env for cron. Adding dotenv would duplicate existing infrastructure.
482
+
483
+
### Voice Rules (enforced by daily-post.js)
484
+
485
+
- Under 280 characters
486
+
- No emojis (regex check)
487
+
- No exclamation marks
488
+
- No hype words (excited, amazing, incredible, revolutionary, game-changing, LFG, wagmi)
489
+
- Declarative, terse, no hedging
490
+
491
+
### Known Limitations
492
+
493
+
-**No retry on failure.** If the Twitter API is down at 10 AM ET, the post is skipped until the next cron run (tomorrow). The post remains "pending" and will be picked up the next day.
494
+
-**No thread support.** Each post is standalone. Threading requires the reply API (Pro tier, available but not wired).
495
+
-**Queue is JSON, not a database.** Fine for 30-60 posts. If the queue grows past ~200 posts, consider SQLite.
496
+
-**Cron depends on machine uptime.** If the-first is off at 14:00 UTC, the post is missed. No catch-up mechanism.
497
+
-**No analytics feedback loop.** The script does not read engagement data. Weekly manual review via X Analytics is needed to adjust content.
0 commit comments