HLN Machine is a local-first, white-box AI video pipeline for turning a news source into a branded YouTube Short. It coordinates story preparation, speech generation, B-roll and A-roll production, word-level subtitles, branding, and an optional YouTube upload step.
This repository is a security-reviewed public snapshot of the private HLN development project. It starts with a clean Git history and intentionally excludes credentials, generated media, private working data, model weights, voice references, third-party search results, and machine-specific assets.
- News story — fetch source material, build the editorial context, draft the script, synthesize speech, and generate subtitle timing.
- Video — select B-roll references and drive ComfyUI workflows for image, video, and speech-to-video generation.
- Branding — render word-level subtitles and apply brand assets.
- Upload — prepare title, description, cover, and an optional YouTube Data API upload.
The design notes live in OpenDoc, the operational guides in docs, and module specifications in Spec.
- macOS or another environment adapted for the included scripts
- Python 3.10+
- FFmpeg and FFprobe on
PATH - ComfyUI
- a local OpenAI-compatible text/VLM service such as LM Studio or oMLX
- the model weights and ComfyUI custom nodes required by your workflows
- optional Index-TTS and Topaz Video AI integrations
The original deployment used a high-memory Apple Silicon workstation. Model selection and hardware sizing are left to each operator.
Several scripts expect the project to sit beside a ComfyUI checkout. Clone this
public repository using the runtime directory name HLN_Project:
cd /path/to/ComfyUI
git clone https://github.com/qoli/HLN-Public.git HLN_ProjectThe shared path module derives HLN_PROJECT_ROOT from the checkout. Set
COMFYUI_ROOT only when ComfyUI is not the parent directory.
Copy the example environment file and fill only the integrations you use:
cp .env.example .envThe scripts do not load .env automatically. Export the values through your
shell or another secret manager before running a pipeline. Never commit the
resulting .env, OAuth JSON files, voice samples, generated media, or logs.
YouTube upload requires locally created files at:
tokens/client_secret_znn.jsontokens/znn_token.json
Create these through your own Google Cloud OAuth application. No usable credentials are included in this repository.
The public snapshot also omits:
Spec/voiceReference/voiceReference.wav- ComfyUI workflow JSON and model weights
- proprietary fonts and third-party image-search results
Supply those locally and use the relevant command-line option or environment variable. Missing required assets fail the corresponding operation explicitly.
Install only the packages needed by the pipeline stages you run. A typical environment includes:
python3 -m venv .venv
source .venv/bin/activate
pip install lmstudio requests pillow faster-whisper markdownify beautifulsoup4 \
bionic-writer google-api-python-client google-auth google-auth-oauthlib \
python-dateutilCustom integrations may require additional dependencies documented beside the relevant script.
Run commands from the ComfyUI parent checkout:
cd /path/to/ComfyUI
python3 HLN_Project/Pipeline/run_build_news_story.py --help
python3 HLN_Project/Pipeline/run_build_videos.py --help
python3 HLN_Project/Pipeline/run_branding_pipeline.py --help
python3 HLN_Project/Pipeline/run_upload_youtube_short.py --helpStart with the operational runbooks:
This repository publishes the architecture and automation code, not a turnkey model or content bundle. End-to-end execution depends on external models, services, workflow JSON, licensed media, and operator-provided assets. Review the source and service terms before publishing generated news content.
Security reports are covered by SECURITY.md. The source code is released under the MIT License; third-party services, models, fonts, and media retain their own licenses.