Web launcher and host CLI¶
The transcriptx console script (transcriptx.cli:main) dispatches allowlisted host automation commands, then launches the Streamlit web application when no command is given (same as python -m transcriptx.web). Interactive workspaces (Corrections, Speaker ID review, Charts/Ask) stay in the GUI.
transcriptx --help lists the allowlist. With no command, launcher flags are --host and --port.
Web launcher help (python -m transcriptx.web --help):
usage: transcriptx [-h] [--host HOST] [--port PORT]
TranscriptX — launch the web interface
options:
-h, --help show this help message and exit
--host HOST Host to bind to (default: 127.0.0.1)
--port PORT Port to listen on (default: 8501)
For scripting beyond the allowlist, use the Python API directly. Contract: public surfaces §1.7.
From a clean venv, install analysis and chart extras before expecting a full Balanced run (for example pip install -e ".[visualization]" or .[full] from this repository). Core-only pip install -e . can complete runs with many modules skipped or failed when speakers are still diarized labels and when matplotlib is missing. See Installation.
Import¶
transcriptx import path/to/raw.json
transcriptx import a.json b.json --overwrite
python -m transcriptx.import_transcript path/to/raw.json
from pathlib import Path
from transcriptx.app.models.requests import AnalysisRequest
from transcriptx.app.workflows.analysis import run_analysis
from transcriptx.io.managed_import_workflow import run_managed_import_workflow
imported = run_managed_import_workflow(
Path("path/to/raw_transcript.json"),
overwrite=False,
)
result = run_analysis(AnalysisRequest(
transcript_path=imported.json_path,
mode="quick", # pipeline mode: "quick" or "full"
analysis_preset="balanced", # optional UI preset: quick | balanced | thorough | custom
modules=["stats"], # None = recommended modules
include_unidentified_speakers=False,
))
print("success:", result.success)
print("errors:", result.errors)
Analyze (single managed transcript)¶
transcriptx analyze --path /path/to/library/foo.json --preset balanced
transcriptx analyze --path foo.json --mode quick --modules stats --allow-unnamed-speakers
python -m transcriptx.analyze --path foo.json --preset quick
Batch and group analysis remain Python API only (run_batch_analysis, run_group_analysis). For library-wide catch-up, use analyze-backlog / analyze-modules below. Overnight composition: overnight-host.md.
Analyze backlog (unanalyzed + filters)¶
transcriptx analyze-backlog --preset thorough --dry-run
transcriptx analyze-backlog --preset thorough --mode full \
--require-complete-speakers --require-named-speaker Glen
python -m transcriptx.analyze_backlog --dry-run --max 5
Skips transcripts that already have analysis outputs. Optional --require-named-speaker NAME (repeatable, case-insensitive) further narrows the set. See overnight-host.md.
Analyze modules (library catch-up)¶
transcriptx analyze-modules --dry-run --max 5
transcriptx analyze-modules --modules transcript_output,llm_summary --allow-unnamed-speakers
python -m transcriptx.analyze_modules --modules transcript_output,llm_summary
Default modules are human-readable transcripts (transcript_output) and llm_summary. Speakers need not be identified. Skips a transcript when the newest committed run already lists every requested module in modules_run. See overnight-host.md.
Cleanup analysis runs¶
transcriptx cleanup-runs --mode delete-old --keep-human-readable --keep-llm-summaries --dry-run
transcriptx cleanup-runs --mode delete-old --keep-human-readable --keep-llm-summaries --yes
python -m transcriptx.cleanup_runs --mode delete-old --yes
delete-old keeps the newest run per transcript/group. Retain flags salvage readable transcripts, reports, and LLM summaries into {subject}/.retained/{run_id}/ before deleting the rest of an older run. Non-interactive confirm: --yes or TRANSCRIPTX_CLEANUP_YES=1.
Admit originals¶
transcriptx admit-originals (same as python -m transcriptx.admit_originals) admits raw files already under transcripts/originals/ (or another host dest) through admit_and_register. inbox-watch --admit invokes this helper.
transcriptx admit-originals \
--dir /path/to/transcripts/originals \
--transcripts-root /path/to/transcripts
Optional --auto-name / --auto-link (and --no-auto-*) run speaker auto-identify after each successful admit. --auto-name with no link flag defaults auto-link on. Identify failure does not fail admit. Operator guide: auto-identify.md.
Rename¶
transcriptx rename --path /path/to/library/old.json --stem clearer_name
transcriptx rename --path old.json --stem clearer_name --dry-run
python -m transcriptx.rename_managed --path old.json --stem clearer_name
Backup¶
transcriptx backup create
transcriptx backup create --dest /safe/ws.zip --force
transcriptx backup verify /safe/ws.zip
transcriptx backup restore /safe/ws.zip --dry-run
python -m transcriptx.backup create
scripts/workspace_backup.py remains a thin shim for source checkouts. Normative rules: workspace-backup.md.
Auto-identify speakers (host helper)¶
transcriptx identify-speakers (same as python -m transcriptx.identify_speakers) fuses local voice match with in-transcript names and can write speaker-map names and/or auto_identified profile links. It is distinct from the Python API identify_speakers below (that API is the Speaker Identification workspace rename path).
transcriptx identify-speakers --path FILE.json --auto-name --auto-link
transcriptx identify-speakers --all-unnamed --dry-run
Flags override {config_dir}/identify.json for that run. --dry-run prints decisions and writes nothing. Host USB path: inbox-watch --auto-name.
Warm assistive LLM suggestion caches¶
transcriptx warm-suggestions (or python -m transcriptx.warm_suggestions) precomputes assistive speaker name and rename suggestion caches for managed transcripts (confirm-to-apply in the GUI; does not rename files or write speaker maps). See llm-suggestion-batch.md.
transcriptx warm-suggestions --all
transcriptx warm-suggestions --speaker-names --dry-run
transcriptx warm-suggestions --rename --force --path FILE.json
from transcriptx.app.models.requests import WarmSuggestionsRequest
from transcriptx.app.workflows import run_warm_suggestions
run_warm_suggestions(WarmSuggestionsRequest(warm_all=True))
Speaker Identification¶
from transcriptx.app.models.requests import SpeakerIdentificationRequest
from transcriptx.app.workflows.speaker import identify_speakers
from pathlib import Path
result = identify_speakers(SpeakerIdentificationRequest(
transcript_paths=[Path("transcript.json")],
skip_rename=True,
))
Batch Analysis¶
from pathlib import Path
from transcriptx.app.models.requests import BatchAnalysisRequest
from transcriptx.app.workflows.batch import run_batch_analysis
result = run_batch_analysis(BatchAnalysisRequest(
transcript_paths=[Path("a.json"), Path("b.json")],
analysis_mode="quick",
selected_modules=["stats"],
))
print(result.success, result.message, result.errors)
Starting the Web Interface Programmatically¶
transcriptx # default: http://127.0.0.1:8501
transcriptx --host 0.0.0.0 # bind all interfaces (Docker)
transcriptx --port 8502 # custom port
python -m transcriptx.web # equivalent