Skip to content
Unverified: This page has not yet been anchored to automated code tests.

scripts/show/ — Raw Nerve automation

scripts/show/ — Raw Nerve content automation

Section titled “scripts/show/ — Raw Nerve content automation”

Vox programs that automate the recurring work of producing Raw Nerve, the Vox Foundation’s literary engineering journal. Cross-promotion is structural: every artifact the show needs is itself a Vox program shipped in this repo.

Rule: automation produces drafts; you publish. No auto-tweet, no auto-YouTube upload, no auto-email. Drafts only — then a human clicks send.

ScriptPurposeStage
script.voxWhisper transcript → 3-act outline (Acta/Documenta/Analogia/Mens)foundational
topic-suggest.voxgit log + issues + PRs → 3 ranked episode candidatesfoundational
title-workshop.voxoutline → 10 ranked title candidatesfoundational
cross-post.voxepisode MD → drafts for YouTube / X / Reddit / HN / Discord / newsletterfoundational
publish.voxepisode metadata → CITATION.cff + RSS entry + scientia ingest YAMLfoundational

Future additions (built when needed, see funding-campaign implementation plan):

  • cross-post.vox — single MD → YouTube + X + Reddit + HN + Discord drafts
  • newsletter.vox — monthly auto-digest from git log
  • community-digest.vox — Friday digest of Discord + GitHub Qs needing human attention
  • thermometer.vox — OC + GH Sponsors APIs → donation widget (build when donations exist)
  • sponsor-wall.vox — nightly auto-publish to landing page
  • tile.vox — new sponsor → PNG tile baked into next intro
  • publish.vox — vox-scientia publication record per episode
  • shorts.vox — auto-clip 60-90s shorts from main video
  • Every script ≤ 500 LoC (TOESTUB-compliant)
  • Every script has a header block describing what it does and what it depends on
  • All LLM calls go through vox mens prompt --text "..." — see note below
  • All output drafts go under ~/raw-nerve/drafts/ (recordings) or are written to a path passed via env var
  • Drafts: never auto-publish

The mens subsystem is an extracted crate; the main vox binary delegates to a separate vox-mens binary that must be installed once:

Terminal window
cargo install --path crates/vox-mens

After install, vox mens prompt --text "..." returns LLM output on stdout. The scripts here invoke that. If vox-mens is not installed, they fail at the LLM-call step with a clear error and print the prompt for manual use.

If you prefer a different LLM CLI, change the process.run("vox", ["mens", "prompt", ...]) line in each script to your preferred command.

Inputs are environment variables, not CLI args

Section titled “Inputs are environment variables, not CLI args”

Following the convention in scripts/ci/script-hygiene.vox, scripts here read their inputs from environment variables rather than argv. This keeps them simple and side-steps the still-evolving std.args API.

ScriptRequired envOptional env
script.voxRAW_NERVE_RECORDING_DIRRAW_NERVE_CTA_TYPE, RAW_NERVE_OUT, RAW_NERVE_WHISPER_OUT
topic-suggest.vox(none)RAW_NERVE_SINCE (default "7 days ago")
title-workshop.voxRAW_NERVE_OUTLINE(none)
cross-post.voxRAW_NERVE_EPISODE_MDRAW_NERVE_DRAFTS_DIR, RAW_NERVE_PLAYGROUND_URL, RAW_NERVE_YOUTUBE_URL
publish.voxRAW_NERVE_EPISODE_TITLE, RAW_NERVE_EPISODE_DATE, RAW_NERVE_EPISODE_SLUG, RAW_NERVE_EPISODE_SEGMENT, RAW_NERVE_EPISODE_ABSTRACTRAW_NERVE_EPISODE_AUTHOR, RAW_NERVE_EPISODE_YOUTUBE_URL, RAW_NERVE_EPISODE_PLAYGROUND_URL, RAW_NERVE_EPISODE_LENGTH_MIN, RAW_NERVE_DRAFTS_DIR

The Raw Nerve channel pitches itself as a publication of the Vox Foundation — every meta-tool used to produce the show is itself a Vox program in this repo. Watching the show is watching Vox run. New viewers learn the language by encountering it as the substrate of the content they’re consuming.

See: the funding-campaign design doc for the strategic frame.