- Paper to podcast. // weekly
- News to podcast. // daily
- Open source to podcast. // weekly
export TITLE="2025-12-15-2512.07829-One-Layer Adaptation for Visual Generation (FAE)"
echo "" > ${TITLE}.mdffmpeg -loop 1 -i assets/${TITLE}.png -i "bin/${TITLE}.m4a" -c:v libx264 -tune stillimage -c:a copy -pix_fmt yuv420p -shortest bin/${TITLE}.mp4This project includes a command-line tool to intelligently generate podcast prompts from source files.
- Ensure you have Rust and Cargo installed (
rustup). - You need a local Large Language Model (LLM) running and accessible at the specified URL (default is
http://localhost:9090/prompt). This endpoint is used to intelligently select the podcast format.
You can run the application directly using Cargo.
Pass the path to your source content file using the file-path argument. Note the -- which separates the cargo arguments from your application's arguments.
cargo run -- --file-path path/to/your/source-file.htmlExample:
cargo run -- --file-path "raw/news/${TITLE}.md"
cargo run -- --file-path "raw/learn/${TITLE}.md"
cargo run -- --file-path "raw/papers/${TITLE}.md"
cargo run -- --file-path "raw/open_sources/${TITLE}.md"The generated prompt will be saved in the ./generated_prompts directory by default.
You can specify a different directory to save the prompt files using the --output-dir flag.
cargo run -- --file-path "raw/news/${TITLE}" --output-dir ./my_promptsIf your local LLM is running on a different address, use the --llm-url flag.
cargo run -- --file-path "raw/news/${TITLE}" --llm-url http://localhost:9090/promptThe tool can also upload a video file directly to YouTube and add it to a specified playlist.
Before you can upload, you need to authorize the application to access your YouTube account.
- Create a Google Cloud Project: Go to the Google Cloud Console and create a new project.
- Enable the API: In your project, enable the "YouTube Data API v3".
- Create OAuth Credentials:
- Go to "Credentials" -> "Create Credentials" -> "OAuth client ID".
- Select "Desktop app" as the application type.
- Download the JSON file.
- Save Credentials: Rename the downloaded file to
client_secrets.jsonand place it in a configuration directory, for example:~/.config/anypod/client_secrets.json. The application will look for it there.
The first time you run an upload command, your web browser will open, asking you to log in to your Google account and grant permission. After you approve, a token.json file will be saved in the same directory as your secrets file, allowing for automatic authentication in the future.
To upload a video, provide the path to the video file and the target playlist ID.
cargo run -- \
--file-path "raw/news/${TITLE}.md" \
--video-file "bin/${TITLE}.mp4" \
--playlist-id "YOUR_YOUTUBE_PLAYLIST_ID"The application will first generate the description file locally and then proceed with the upload.
To build a release binary, run:
cargo build --releaseThe optimized executable will be located at anypod/target/release/anypod. You can then run it directly:
./target/release/anypod --file-path "raw/news/${TITLE}"