Quirks and Defaults
This page captures behavior that is useful in practice but easy to miss if you only skim the flag list.
Base Command
The base command used for every interaction is:
reddit-2-video
That executable name is the entrypoint for:
- the default generation command
flushinstall
Flag Negation
Flags can generally be turned off with the --no-... form.
Examples:
reddit-2-video --no-post-confirmation
reddit-2-video --no-nsfw
reddit-2-video --no-verbose
This is especially useful when you want to override a default-enabled flag such as --nsfw.
Current Command Notes
There are three top-level commands:
reddit-2-videoreddit-2-video flushreddit-2-video install
The default command is the one that generates videos. flush manages visited-log state. install is a setup/bootstrap command.
Common Interactions and Contradictions
Some options affect or override each other:
Content selection
--subredditis required for the default command and can be either a subreddit name or a full Reddit post URL.- If
--subredditis a direct Reddit post URL and--type postis used,--countis ignored and a warning is logged. - If
--subredditis a direct Reddit post URL and--type multiis used, the command is invalid. --repeatis only used for subreddit-based generation. A direct post link resolves to one post.
End cards
--end-card-lengthis not strictly necessary unless you are using an image, as the duration can be inferred from the file itself. If provided, it will override the inferred duration.- If end-card duration cannot be inferred from a gif/video, the duration falls back to
5sand logs a warning.
Output and working files
--overridecontrols whether existing output files are replaced automatically.
Unimplemented behavior
--spoilercurrently exists but is not implemented; generation continues with a warning.
Voices and Lexicons
Voice and lexicon behavior is driven by checked-in config files rather than a hardcoded docs list.
Voices
Voices are loaded from:
defaults/voice.config.json
Important details:
--voicepicks a voice by name from that config file.- voices can be marked as
disabledwhich removes it from being selected when voice alternation is enabled. - enabling or disabling
--nttswill affect whether neural tts is selected during alternation or manual selection. - if the requested voice is missing or incompatible, the app falls back and logs a warning
Lexicons
Lexicons are configured in:
defaults/lexicons/lexemes.config.json
The shipped lexicon files currently include:
censor.xmlabbreviations.xml
These control transformations such as censorship or abbreviation expansion during synthesis flows. You can add more lexicon files, following the AWS Polly format and including them in the lexemes config file. All listed lexicon files will be loaded into AWS polly and applied during text synthesis.
The defaults/ Directory
The defaults/ directory is the built-in asset/config bundle the app expects at runtime.
Current shipped files include:
defaults/default.ass: subtitle styling/template basedefaults/fonts/verdana.ttf: bundled font assetdefaults/voice.config.json: voice registry and capability metadatadefaults/lexicons/lexemes.config.json: lexicon registrydefaults/lexicons/censor.xml: censorship lexicondefaults/lexicons/abbreviations.xml: abbreviation expansion lexicondefaults/silence.mp3: silence filler/empty-noise assetdefaults/n_Dv4JMiwK8.mp4: background video asset (downloaded on first pass)
Background Video Download and Reuse
The background video only needs to be downloaded once per YouTube video id.
When a background video is needed, the app downloads it into defaults/ using the YouTube video id as the filename. If that file already exists, later runs skip the download step and reuse the cached file instead.
That means:
- the first run may download the background source video
- later runs reuse the same cached source file from
defaults/ - each generation still creates its own working clip for the current output
So the source download is reused, while the per-run cut video is still regenerated for each generation.
Output Defaults
Some defaults are worth remembering:
- default output basename is
final - default file type is
mp4 - default framerate is
45 - default delay between TTS clips is
1s - default comment count threshold is
8
Always treat the generated CLI Reference as the source of truth for current defaults, because older wiki material may describe behavior from previous iterations of the project.
Last reviewed: 2026-04-07