{"id":17146139,"url":"https://github.com/codenamev/podcast-buddy","last_synced_at":"2025-04-13T09:32:51.624Z","repository":{"id":249413022,"uuid":"831450442","full_name":"codenamev/podcast-buddy","owner":"codenamev","description":"An AI podcast companion","archived":false,"fork":false,"pushed_at":"2025-04-03T16:05:12.000Z","size":108,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T16:49:50.418Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codenamev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-20T15:29:40.000Z","updated_at":"2025-04-04T10:09:37.000Z","dependencies_parsed_at":"2024-08-28T16:23:33.964Z","dependency_job_id":null,"html_url":"https://github.com/codenamev/podcast-buddy","commit_stats":null,"previous_names":["codenamev/podcast-buddy"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenamev%2Fpodcast-buddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenamev%2Fpodcast-buddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenamev%2Fpodcast-buddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenamev%2Fpodcast-buddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codenamev","download_url":"https://codeload.github.com/codenamev/podcast-buddy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248690938,"owners_count":21146233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T21:07:55.928Z","updated_at":"2025-04-13T09:32:51.608Z","avatar_url":"https://github.com/codenamev.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Podcast Buddy\n\nThis is a simple Ruby command-line tool that allows dropping in an AI buddy to\nyour podcast.\n\n## Installation\n\nInstall the gem and add to the application's Gemfile by executing:\n\n    $ bundle add podcast-buddy\n\nIf bundler is not being used to manage dependencies, install the gem by executing:\n\n    $ gem install podcast-buddy\n\n## Usage\n\nRun your buddy from the command-line:\n\n```bash\npodcast-buddy\n```\n\nThis will install a couple dependencies, if they don't exist:\n\n1. `git` (for cloning whisper.cpp locally)\n2. `sdl2` - Simple DirectMedia Layer; for cross-platform audio input access\n3. [whipser.cpp with streaming](https://github.com/ggerganov/whisper.cpp/tree/master/examples/stream) – For transcribing audio in near-real-time\n\nOther requirements:\n\n1. OpenAI token stored in your environment as `OPENAI_ACCESS_TOKEN`\n2. MacOS\n\n### Asking your buddy questions during recordings\n\nAt any time, you can press the `return` key and ask your buddy a question.\nOnce you see the question show up in the output, press `return` key again and\nyour Buddy will answer using the system output (via `afplay`).\n\n### Completing your pod\n\nOnce you're done, simply `ctrl-c` to wrap things up.\n\n### Session Files\n\nEach session directory contains:\n\n1. `transcript.log` - Full transcript of the discussion\n2. `summary.log` - Summarization of the discussion\n3. `topics.log` - List of topics extracted from the discussion\n4. `show-notes.md` - Generated show notes in markdown format\n5. `whisper.log` - Raw whisper transcription logs\n6. `response.mp3` - Latest AI response audio file\n\nSession files are managed by the `PodcastBuddy::Session` class. Each session maintains its own set of files in a timestamped directory (or custom named directory if specified with `--name`).\n\n### Options\n\n**debug mode**: `podcast-buddy --debug` – shows verbose logging\n**custom whisper model**: `podcast-buddy --whisper base.en` – use any of [these available models](https://github.com/ggerganov/whisper.cpp/blob/master/models/download-ggml-model.sh#L28-L49).\n**custom session**: `podcast-buddy --name \"Ruby Rogues 08-15-2024\"` – saves files to a new `tmp/Ruby Rogues 08-15-2024/` directory.\n\nNote: Both `podcast-buddy` and `podcast_buddy` commands are available and work identically.\n\n### Configuration\n\nConfigure PodcastBuddy globally:\n\n```ruby\nPodcastBuddy.configure do |config|\n  # Basic settings\n  config.whisper_model = \"base.en\"  # Choose whisper model\n  config.root = \"path/to/files\"     # Set root directory for files\n  config.logger = Logger.new($stdout, level: Logger::DEBUG)\n  config.openai_client = OpenAI::Client.new(access_token: ENV[\"OPENAI_ACCESS_TOKEN\"]) # Optional: custom OpenAI client\n  \n  # AI Prompts (optional)\n  config.topic_extraction_system_prompt = \"Custom prompt for topic extraction...\"\n  config.topic_extraction_user_prompt = \"Custom prompt for user topics...\"\n  config.discussion_system_prompt = \"Custom prompt for discussion...\"\n  config.discussion_user_prompt = \"Custom prompt for user discussion...\"\nend\n```\n\nThe AI prompts are used to customize how PodcastBuddy interacts during the recording:\n\n- `topic_extraction_system_prompt`: Guides how topics are extracted from discussions\n- `topic_extraction_user_prompt`: Template for processing user's discussion into topics\n- `discussion_system_prompt`: Sets the AI's role and behavior during discussions\n- `discussion_user_prompt`: Template for processing ongoing discussions\n\nDefault prompts are provided but can be customized for specific needs.\n\n### Sessions\n\nPodcastBuddy organizes recordings into sessions. Each session has its own directory containing all related files.\n\nTo start a named session:\n\n```bash\npodcast-buddy --name \"My Awesome Podcast Episode 1\"\n```\n\nThis creates a new directory at `tmp/My Awesome Podcast Episode 1/` containing all session files. If no name is provided, a timestamped directory is created automatically.\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.\n\nTo install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/codenamev/podcast-buddy. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/codenamev/podcast-buddy/blob/main/CODE_OF_CONDUCT.md).\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\n## Code of Conduct\n\nEveryone interacting in the PodcastBuddy project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/codenamev/podcast-buddy/blob/main/CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodenamev%2Fpodcast-buddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodenamev%2Fpodcast-buddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodenamev%2Fpodcast-buddy/lists"}