[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72052":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},72052,"podcastfy","souzatharsis\u002Fpodcastfy","souzatharsis","An Open Source Python alternative to NotebookLM's podcast feature: Transforming Multimodal Content into Captivating Multilingual Audio Conversations with GenAI","https:\u002F\u002Fwww.podcastfy.ai",null,"Python",6354,736,50,86,0,10,26,78,30,39.6,"Apache License 2.0",false,"main",true,[27,28,29,30,31,32],"elevenlabs","gemini","genai","notebooklm","openai","podcast","2026-06-12 02:02:57","\u003Cdiv align=\"center\">\n\u003Ca name=\"readme-top\">\u003C\u002Fa>\n\nLike this project? Consider supporting it by checking out our new O'Reilly book \n\n[LLMs: The Hard Parts](https:\u002F\u002Fa.co\u002Fd\u002F04ZCeM2b).\n\n\u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F12965\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftrendshift.io\u002Fapi\u002Fbadge\u002Frepositories\u002F12965\" alt=\"Podcastfy.ai | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\n# Podcastfy.ai 🎙️🤖\nAn Open Source API alternative to NotebookLM's podcast feature: Transforming Multimodal Content into Captivating Multilingual Audio Conversations with GenAI\n\n\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F5d42c106-aabe-44c1-8498-e9c53545ba40\n\n\n\n[Paper](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Fblob\u002Fmain\u002Fpaper\u002Fpaper.pdf) |\n[Python Package](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Fblob\u002F59563ee105a0d1dbb46744e0ff084471670dd725\u002Fpodcastfy.ipynb) |\n[CLI](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Fblob\u002F59563ee105a0d1dbb46744e0ff084471670dd725\u002Fusage\u002Fcli.md) |\n[Web App](https:\u002F\u002Fopenpod.fly.dev\u002F) |\n[Feedback](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Fissues)\n\n[![Open In Colab](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fsouzatharsis\u002Fpodcastfy\u002Fblob\u002Fmain\u002Fpodcastfy.ipynb)\n[![PyPi Status](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fpodcastfy)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fpodcastfy\u002F)\n![PyPI Downloads](https:\u002F\u002Fstatic.pepy.tech\u002Fbadge\u002Fpodcastfy)\n[![Issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-raw\u002Fsouzatharsis\u002Fpodcastfy)](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Fissues)\n[![Pytest](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Factions\u002Fworkflows\u002Fpython-app.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Factions\u002Fworkflows\u002Fpython-app.yml)\n[![Docker](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Factions\u002Fworkflows\u002Fdocker-publish.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Factions\u002Fworkflows\u002Fdocker-publish.yml)\n[![Documentation Status](https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fpodcastfy\u002Fbadge\u002F?version=latest)](https:\u002F\u002Fpodcastfy.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0)\n![GitHub Repo stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fsouzatharsis\u002Fpodcastfy)\n\u003C\u002Fdiv>\n\nPodcastfy is an open-source Python package that transforms multi-modal content (text, images) into engaging, multi-lingual audio conversations using GenAI. Input content includes websites, PDFs, images, YouTube videos, as well as user provided topics.\n\nUnlike closed-source UI-based tools focused primarily on research synthesis (e.g. NotebookLM ❤️), Podcastfy focuses on open source, programmatic and bespoke generation of engaging, conversational content from a multitude of multi-modal sources, enabling customization and scale.\n\n## Testimonials 💬\n\n> \"Love that you casually built an open source version of the most popular product Google built in the last decade\"\n\n> \"Loving this initiative and the best I have seen so far especially for a 'non-techie' user.\"\n\n> \"Your library was very straightforward to work with. You did Amazing work brother 🙏\"\n\n> \"I think it's awesome that you were inspired\u002Frecognize how hard it is to beat NotebookLM's quality, but you did an *incredible* job with this! It sounds incredible, and it's open-source! Thank you for being amazing!\"\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=souzatharsis\u002Fpodcastfy&type=Date&theme=dark)](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=souzatharsis\u002Fpodcastfy&type=Date&theme=dark)\n\n## Audio Examples 🔊\nThis sample collection was generated using this [Python Notebook](usage\u002Fexamples.ipynb).\n\n### Images\nSample 1: Senecio, 1922 (Paul Klee) and Connection of Civilizations (2017) by Gheorghe Virtosu\n***\n\u003Cimg src=\"data\u002Fimages\u002FSenecio.jpeg\" alt=\"Senecio, 1922 (Paul Klee)\" width=\"20%\" height=\"auto\"> \u003Cimg src=\"data\u002Fimages\u002Fconnection.jpg\" alt=\"Connection of Civilizations (2017) by Gheorghe Virtosu \" width=\"21.5%\" height=\"auto\">\n\u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fa4134a0d-138c-4ab4-bc70-0f53b3507e6b\">\u003C\u002Fvideo>  \n***\nSample 2: The Great Wave off Kanagawa, 1831 (Hokusai) and Takiyasha the Witch and the Skeleton Spectre, c. 1844 (Kuniyoshi)\n***\n \u003Cimg src=\"data\u002Fimages\u002Fjapan_1.jpg\" alt=\"The Great Wave off Kanagawa, 1831 (Hokusai)\" width=\"20%\" height=\"auto\"> \u003Cimg src=\"data\u002Fimages\u002Fjapan2.jpg\" alt=\"Takiyasha the Witch and the Skeleton Spectre, c. 1844 (Kuniyoshi)\" width=\"21.5%\" height=\"auto\"> \n\u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Ff6aaaeeb-39d2-4dde-afaf-e2cd212e9fed\">\u003C\u002Fvideo>  \n***\nSample 3: Pop culture icon Taylor Swift and Mona Lisa, 1503 (Leonardo da Vinci)\n***\n\u003Cimg src=\"data\u002Fimages\u002Ftaylor.png\" alt=\"Taylor Swift\" width=\"28%\" height=\"auto\"> \u003Cimg src=\"data\u002Fimages\u002Fmonalisa.jpeg\" alt=\"Mona Lisa\" width=\"10.5%\" height=\"auto\">\n\u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F3b6f7075-159b-4540-946f-3f3907dffbca\">\u003C\u002Fvideo> \n\n\n### Text\n| Audio | Description  | Source |\n|-------|--|--------|\n| \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fef41a207-a204-4b60-a11e-06d66a0fbf06\">\u003C\u002Fvideo>  | Personal Website | [Website](https:\u002F\u002Fwww.souzatharsis.com) |\n| [Audio](https:\u002F\u002Fsoundcloud.com\u002Fhigh-lander123\u002Famodei?in=high-lander123\u002Fsets\u002Fpodcastfy-sample-audio-longform&si=b8dfaf4e3ddc4651835e277500384156) (`longform=True`) | Lex Fridman Podcast: 5h interview with Dario Amodei Anthropic's CEO |  [Youtube](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ugvHCXCOmm4) |\n| [Audio](https:\u002F\u002Fsoundcloud.com\u002Fhigh-lander123\u002Fbenjamin?in=high-lander123\u002Fsets\u002Fpodcastfy-sample-audio-longform&si=dca7e2eec1c94252be18b8794499959a&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing) (`longform=True`)| Benjamin Franklin's Autobiography | [Book](https:\u002F\u002Fwww.gutenberg.org\u002Fcache\u002Fepub\u002F148\u002Fpg148.txt) |\n\n### Multi-Lingual Text\n| Language | Content Type | Description | Audio | Source |\n|----------|--------------|-------------|-------|--------|\n| French | Website | Agroclimate research information | [Audio](https:\u002F\u002Faudio.com\u002Fthatupiso\u002Faudio\u002Fpodcast-fr-agro) | [Website](https:\u002F\u002Fagroclim.inrae.fr\u002F) |\n| Portuguese-BR | News Article | Election polls in São Paulo | [Audio](https:\u002F\u002Faudio.com\u002Fthatupiso\u002Faudio\u002Fpodcast-thatupiso-br) | [Website](https:\u002F\u002Fnoticias.uol.com.br\u002Feleicoes\u002F2024\u002F10\u002F03\u002Fnova-pesquisa-datafolha-quem-subiu-e-quem-caiu-na-disputa-de-sp-03-10.htm) |\n\n\n## Quickstart 💻\n\n### Prerequisites\n- Python 3.11 or higher\n- `$ pip install ffmpeg` (for audio processing)\n\n### Setup\n1. Install from PyPI\n  `$ pip install podcastfy`\n\n2. Set up your [API keys](usage\u002Fconfig.md)\n\n### Python\n```python\nfrom podcastfy.client import generate_podcast\n\naudio_file = generate_podcast(urls=[\"\u003Curl1>\", \"\u003Curl2>\"])\n```\n### CLI\n```\npython -m podcastfy.client --url \u003Curl1> --url \u003Curl2>\n```\n\n### Fastapi (Beta for urls)\n```\nContainerize podcastify and launch the api\nDockerfile_api\n\nMake requests to the api look at the notebook for a clear example\nfetch_audio(request_data, ENDPOINT, BASE_URL)\n```\n  \n## Usage 💻\n\n- [Python Package Quickstart](podcastfy.ipynb)\n\n- [How to](usage\u002Fhow-to.md)\n\n- [Python Package Reference Manual](https:\u002F\u002Fpodcastfy.readthedocs.io\u002Fen\u002Flatest\u002Fpodcastfy.html)\n\n- [CLI](usage\u002Fcli.md)\n\n## Customization 🔧\n\nPodcastfy offers a range of customization options to tailor your AI-generated podcasts:\n- Customize podcast [conversation](usage\u002Fconversation_custom.md) (e.g. format, style, voices)\n- Choose to run [Local LLMs](usage\u002Flocal_llm.md) (156+ HuggingFace models)\n- Set other [Configuration Settings](usage\u002Fconfig.md)\n\n## Features ✨\n\n- Generate conversational content from multiple sources and formats (images, text, websites, YouTube, and PDFs).\n- Generate shorts (2-5 minutes) or longform (30+ minutes) podcasts.\n- Customize transcript and audio generation (e.g., style, language, structure).\n- Generate transcripts using 100+ LLM models (OpenAI, Anthropic, Google etc).\n- Leverage local LLMs for transcript generation for increased privacy and control.\n- Integrate with advanced text-to-speech models (OpenAI, Google, ElevenLabs, and Microsoft Edge).\n- Provide multi-language support for global content creation.\n- Integrate seamlessly with CLI and Python packages for automated workflows.\n\n## Built with Podcastfy 🚀\n\n- [OpenNotebook](https:\u002F\u002Fwww.open-notebook.ai\u002F)\n- [SurfSense](https:\u002F\u002Fwww.surfsense.net\u002F)\n- [OpenPod](https:\u002F\u002Fopenpod.fly.dev\u002F)\n- [Podcast-llm](https:\u002F\u002Fgithub.com\u002Fevandempsey\u002Fpodcast-llm)\n- [Podcastfy-HuggingFace App](https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fthatupiso\u002FPodcastfy.ai_demo)\n\n\n## Updates 🚀🚀\n\n### v0.4.0+ release\n- Leverage natural conversational multi-Speaker TTS model\n- Generate short or longform podcasts\n- Generate podcasts from input topic using grounded real-time web search\n- Integrate with 100+ LLM models (OpenAI, Anthropic, Google etc) for transcript generation\n\nSee [CHANGELOG](CHANGELOG.md) for more details.\n\n\n## License\n\nThis software is licensed under [Apache 2.0](LICENSE). See [instructions](usage\u002Flicense-guide.md) if you would like to use podcastfy in your software.\n\n## Contributing 🤝\n\nWe welcome contributions! See [Guidelines](GUIDELINES.md) for more details.\n\n## Example Use Cases 🎧🎶\n\n- **Content Creators** can use `Podcastfy` to convert blog posts, articles, or multimedia content into podcast-style audio, enabling them to reach broader audiences. By transforming content into an audio format, creators can cater to users who prefer listening over reading.\n\n- **Educators** can transform lecture notes, presentations, and visual materials into audio conversations, making educational content more accessible to students with different learning preferences. This is particularly beneficial for students with visual impairments or those who have difficulty processing written information.\n\n- **Researchers** can convert research papers, visual data, and technical content into conversational audio. This makes it easier for a wider audience, including those with disabilities, to consume and understand complex scientific information. Researchers can also create audio summaries of their work to enhance accessibility.\n\n- **Accessibility Advocates** can use `Podcastfy` to promote digital accessibility by providing a tool that converts multimodal content into auditory formats. This helps individuals with visual impairments, dyslexia, or other disabilities that make it challenging to consume written or visual content.\n  \n## Contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsouzatharsis\u002Fpodcastfy\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg alt=\"contributors\" src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=souzatharsis\u002Fpodcastfy\"\u002F>\n\u003C\u002Fa>\n\n\u003Cp align=\"right\" style=\"font-size: 14px; color: #555; margin-top: 20px;\">\n    \u003Ca href=\"#readme-top\" style=\"text-decoration: none; color: #007bff; font-weight: bold;\">\n        ↑ Back to Top ↑\n    \u003C\u002Fa>\n\u003C\u002Fp>\n","Podcastfy 是一个开源的 Python 包，能够将多模态内容（如文本、图片）转化为引人入胜的多语言音频对话。其核心功能包括利用生成式人工智能技术处理多种类型的输入内容，例如网站、PDF 文件、图像和 YouTube 视频等，并支持用户自定义主题。该项目的技术特点在于强调开放源代码与程序化生成，允许高度定制化及规模化应用。适用于需要创建个性化播客或希望将复杂信息以对话形式呈现的各种场景，比如教育、媒体制作和个人知识管理等领域。",2,"2026-06-11 03:40:07","high_star"]