[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-HA6Bots--Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader":3,"similar-HA6Bots--Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader":82},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":15,"owner_location":15,"owner_email":15,"owner_twitter":15,"owner_website":15,"owner_url":18,"languages":19,"stars":28,"forks":29,"last_commit_at":30,"license":31,"difficulty_score":32,"env_os":33,"env_gpu":34,"env_ram":34,"env_deps":35,"category_tags":39,"github_topics":43,"view_count":51,"oss_zip_url":15,"oss_zip_packed_at":15,"status":52,"created_at":53,"updated_at":54,"faqs":55,"releases":81},1970,"HA6Bots\u002FAutomatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader","Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader","A series of 3 programs that will automatically receive scripts from Reddit, allow the user to edit them, then be sent off to a video generator where they will be uploaded to YouTube automatically.","Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader 能自动从 Reddit 抓取热门评论，生成文字转语音视频并上传至 YouTube。通过三个程序协同工作，自动化处理脚本筛选、TTS 生成和上传流程，但关键环节如过滤敏感内容、优化标题和缩略图仍需人工审核。适合有技术基础的内容创作者，可快速批量制作 Reddit 热点视频。工具需配置 Python 依赖，目前项目已停止更新，但开源可自由修改。单个视频制作时间从数小时缩短至 30 分钟内完成 6 个，显著节省人工操作成本。","# HA6Bot's Automatic-Reddit-Text-To-Speech-Video-Generator-and-Uploader\n\nFollowing the recent YouTube trend in “Reddit to Text-To-Speech” YouTube Videos I embarked on a project to create a program that can automate the process of receiving, generating and uploading these videos to YouTube with as little intervention as possible. It took 4 months to finish the project and is comprised of 3 separate programs that work simultaneously in order to complete this task.\n\nThe idea was to minimize as much manual intervention as possible and automate all the trivial tasks. However the process cannot be 100% automated. For example comments with links in them cannot be kept as quality of the video will be comprised due to the TTS. Additionally while a comment might have a large number of votes it could potentially be offensive and not safe for a YouTube video and thus must be removed. The thumbnail, while partially generated, must be edited in order to create any kind of appeal to viewers to click on your video. The same goes for the title of the video which must be clickbait-y in order to receive any attention. I have attempted to streamline the manual process with the client program and it takes me approximately 30 minutes to create 6 videos (the max that can be uploaded within 24 hours with the YouTube Data API).\n\n\u003Ch1>My Automatic Text To Speech Channel (Royal Reddit)\u003C\u002Fh1>\nhttps:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUC0COfXvVMHVgZ-YH65Q8rVA?view_as=subscriber\n\n**Some of my Generated Videos:**\n\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=xxDKMHYXCsQ\n\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=AW0yJIXXNxI&t=35s\n\n\n**The process of completing a video involves:**\n\n1.\tLoading up the client program\n2.\tSelecting a raw script to edit\n3.\tPressing keep\u002Fskip for each comment within the video\n4.\tWhen estimated video time is acceptable click publish video.\n5.\tAmend the title to be as clickbait as possible\n6.\tAdd in some additional tags to suit to the video topic\n7.\tEdit the generated thumbnail in the thumbnail folder location and then select it\n8.\tEdit the description if you wish\n9.\tPress “Send To Video Generator” and you will be notified when the script has been finished uploading to the server\n10.\tDone\n\n*Example Reddit Text-To-Speech Channels:*\n\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=izSxHx64pGQ\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vzdTuAp2zTw\n\n\u003Ch2>Assets Download For Video Generator Client http:\u002F\u002Fwww.mediafire.com\u002Ffile\u002Fhpu1j1k1avwp9dj\u002FYouTube_Bot_Assets.zip\u002Ffile (500MB)\u003C\u002Fh2>\n\nPlace these in a folder called \"Assets\" within the YouTube Bot Video Generator directory.\n\n\n\u003Ch2>DISCLAIMER\u003C\u002Fh2>\nYou will need to change several things for this code to work with your setup. The Video Generator Client and Server Program will be able to run on Linux. I rushed several parts of the project so I could complete it before September. Additionally, I did not intend for it to be released to the public. \n\nFurthermore I changed my mind on many design aspects partially through the project and therefore some files are named strangely and there is unused code here and there. I will not be updating the code anymore, however please feel free to.\n\n\u003Ch2>Dependencies\u003C\u002Fh2>\n\nCheck dependencies.txt\n\nTo install most python dependencies easily, run the following command after cloning (Some may need to be installed manually):\n\n```pip install -r requirements.txt```\n\n\n\n\u003Ch2>How can a Video Possibly Generated by a Program and still be watchable?\u003C\u002Fh2>\n\nThis recent trend in Reddit Text-To-Speech Videos consists (usually) of a very simple formula:\n\n1.  A sentence of text is revealed.\n2.  Text To Speech reads out said sentence.\n3.  Once the Text To Speech is complete, the next sentence of text is revealed.\n4.  Repeat till comment and its replies are done.\n5.  Once a comment and all if its subsequent replies are finished play some kind of transition interval.\n6.  Move onto next comment\n7.  Repeat steps 1-6 till you have a 10 minute video.\n\nA song is chosen at random. I have downloaded ~40 songs Kevin MacLeod Royality Free Songs to be randomly choosen.\n\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ccpyyrdS-Qo&list=PLbzGR7H3FyUS3LvitxTFAIgv601UKUHjX\n\nAll assets used in the generation of the video can be downloaded here:\n\nhttp:\u002F\u002Fwww.mediafire.com\u002Ffile\u002Fhpu1j1k1avwp9dj\u002FYouTube_Bot_Assets.zip\u002Ffile\n\nThey must be placed in a folder called \"Assets\" in the Video Generator program.\n\n\u003Ch2>How it works\u003C\u002Fh2>\n\nThe project is comprised of three separate programs:\n\n\n1.  YouTube Bot Server -> initserver.py\n2.\tYouTube Bot Video Generator Client -> youtubequeue.py\n3.\tYouTube Bot Client (Manual Review) -> client.py\n\n\u003Ch2>YouTube Bot Server\u003C\u002Fh2>\n\nThis program houses the (1) socket server for connecting to the client(s) program and also the (2) socket server for connecting to the video generator client(s). Additionally, this program will also grab new scripts from Reddit every one hour, and will also update the existing ones that have not yet been edited.\n\n(1)\tThis socket server will send raw scripts from the database to the manual review program (see below). It will then receive these reviewed scripts and update the database with the finalised scripts which will include a thumbnail, description and title. The server can handle multiple clients so multiple people can edit these scripts.\n\n(2)\tThe video generator server is currently only designed to handle one video generator client. Original plans were for this server to handle multiple video generator clients spread out between multiple computers. However, I found that one computer was sufficient enough for all my video generation needs, so I decided to hard code it to only one client. The purpose of this server is to send finalised scripts from the database to the video generator client.\n\n\u003Ch2>YouTube Bot Video Generator Client\u003C\u002Fh2>\n\nThis program will receive finalised video scripts from the YouTube Bot Video Generator Server which include thumbnails, descriptions, tags and a title. These scripts will be generated into a mp4 file and then uploaded to YouTube at a scheduled release time (currently randomly at 5pm, 6 pm, 7pm GMT - the recommended times to upload to YouTube). Once the script is received it will be generated then the program will wait till it has enough API credits to upload by checking when the last 6 videos were uploaded. \n\n**API quota usage resets at 8am GMT**. I have calculated that uploading each video will cost **1658 credits**. You can use a maximum of 10 000 credits a day. This means in theory you will be able to **upload 6 videos a day**. However, in practise I have been able to upload 5 videos, sometimes the sixth one will upload however there will not be enough quotas available to upload the thumbnail, which in that case will require manual intervention to upload the thumbnail manually. The videos are uploaded with YouTube-Upload which I have only managed to get to work with python 2.7. It is called with subprocess.check_call with python version specified and arguments as required (link below).\n\nOnce a video is successfully uploaded its status is set to complete along with an upload time so that the program can check how many videos were uploaded within the day to avoid exceeding quota usage. \n\nYouTube Data API Information https:\u002F\u002Fdevelopers.google.com\u002Fyoutube\u002Fv3\u002Fgetting-started \nYouTube-Upload (python 2.7) https:\u002F\u002Fgithub.com\u002Ftokland\u002Fyoutube-upload\n\n**Text-To-Speech**\nBy far one of the most challenging aspects of the project was getting the Text to Speech to work properly. I wanted to use the Daniel MLG Soft Scan Text to Speech voice – the one found in most text to speech Reddit videos. I believed this was an important part of the project because this voice is very recognisable and is (in my opinion) one of the best sounding text to speeches available.\nI use the command line version of Balabolka to generate the .wav files and these were then synced with different frames in the video generation program.\n\nBalabolka http:\u002F\u002Fwww.cross-plus-a.com\u002Fbalabolka.htm\nInstructions on how to get the Daniel MLG Voice https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=yj3dhTnyotY\n\n\u003Ch2>YouTube Bot Client\u003C\u002Fh2>\n\nThe client program is a Tinder-like swipe left and right process to filter out comments that are not to be included in the video. It also allows for the user to write the title and upload a thumbnail for the video as well as edit description and tags, although the title, description and tags are partially generated as follows:\nTitle: Be default is the post title\nDescription: By default is a generated template with the post title within it and a couple hashtags\nTags: Some base tags I got from popular text-to-speech channels such as r\u002Faskreddit,reddit,reddit funny etc.\nAll of these can be edited. A template for the thumbnail is partially generated as well. There are checks to make sure that the amount of characters are not exceeded for all of these fields e.g. title must be under 100 characters\n\nThe final content of the video includes the edited script, the thumbnail, tags, description and the video settings (it is possible to change certain features of the video generator template during the editing process such as background colour, text size, line widths etc. I usually kept the defaults so didn’t really have much use for it) which is then sent off to the server which in turn uploads it to the database as a BLOB.\n\n**MySQL**\n\nStorage of the scripts and they’re relevant information is done with a MySQL database. This is the first time I used a MySQL database for a project, I’m not brilliant at SQL I learned what was necessary to get things to work. I used three tables “users”, “videogenerators” and “scripts”\u003Cbr>\n\n**“users” table**\u003Cbr>\nOriginally I had planned to create a extensive login system where users had editing statistics, see who’s online etc. Scrapped this and now its only use is for keeping track of which users are editing which videos to prevent the same video being edited and uploaded twice. Passwords are encrypted with MD5 on the client side\n\n**“scripts” table**\u003Cbr>\nThe most important table, holds all the script information. The status field is very important for keeping track of where a script should be.\n\u003Cbr>*-raw:* the script is available to edit\n\u003Cbr>*-editing:* the script is being edited and cannot be edited by any other users while in this state\n\u003Cbr>*-complete:* the script has been finished editing and will be sent to the video generator client \n\u003Cbr>*-successupload:* the script has successfully been uploaded to YouTube\n\n**“videogenerators” table**\u003Cbr>\nLike the users, I designed the client to have a username and password to login. Password is encrypted with MD5 on the client side\n\nThese tables will be automatically created within a database called “youtubebot” if they do not already exist.\n\n\u003Ch2>Receiving Reddit Scripts\u003C\u002Fh2>\nI used praw to get the reddit scripts. By default I have set it to get 45 scripts from the hot tab on r\u002FAskReddit. The minimum number of comments per script must be 1000. It will take 30 of the highest rated comments from each post, and five of subsequent highest rated replies to each comment. The code for this is located in the YouTube Bot Server under reddit.py\nBe default on start up of the YouTube Bot Server, it will request scripts, then it will request every one hour after this. If the script is already in the database it will update the database script entry with the updated comments\u002Fupvote values.\n\n\nReceive credentials for your google API account will be downloaded and saved automatically following a one time login (your browser window will be opened requesting a google account login): videouploader.py -> get_credentials()\n\n\n","# HA6Bot的自动Reddit文本转语音视频生成与上传工具\n\n继近期YouTube上“Reddit转文本转语音”视频的流行趋势后，我启动了一个项目，旨在打造一款能够尽可能减少人工干预、实现接收、生成并自动将这些视频上传至YouTube的程序。该项目历时4个月完成，由3个独立的程序协同工作以完成整个任务。\n\n我的初衷是尽量减少人工操作，将所有琐碎的任务自动化。然而，整个流程并不能完全实现100%自动化。例如，带有链接的评论无法保留，因为这会降低视频质量，影响TTS效果。此外，即使某条评论获得了大量投票，它也可能含有冒犯性内容，不适合用于YouTube视频，因此必须予以删除。缩略图虽然部分自动生成，但仍需进一步编辑，才能吸引观众点击你的视频。同样，视频标题也必须具备足够的吸引力，才能获得关注。我尝试通过客户端程序简化手动流程，目前我大约需要30分钟才能制作6个视频（这是使用YouTube Data API在24小时内可上传的最大数量）。\n\n\u003Ch1>我的自动文本转语音频道（皇家Reddit）\u003C\u002Fh1>\nhttps:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUC0COfXvVMHVgZ-YH65Q8rVA?view_as=subscriber\n\n**我生成的部分视频：**\n\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=xxDKMHYXCsQ\n\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=AW0yJIXXNxI&t=35s\n\n\n**完成一个视频的流程包括：**\n\n1. 启动客户端程序\n2. 选择一段原始脚本进行编辑\n3. 对视频中的每条评论按下“保留”或“跳过”\n4. 当预计视频时长合适时，点击“发布视频”\n5. 将标题改得尽可能具有吸引力\n6. 添加一些与视频主题相关的标签\n7. 在缩略图文件夹中编辑生成的缩略图，然后选中它\n8. 如果需要，编辑视频描述\n9. 点击“发送至视频生成器”，当脚本上传到服务器完成后你会收到通知\n10. 完成！\n\n*一些Reddit文本转语音频道示例：*\n\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=izSxHx64pGQ\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vzdTuAp2zTw\n\n\u003Ch2>视频生成器客户端资源下载 http:\u002F\u002Fwww.mediafire.com\u002Ffile\u002Fhpu1j1k1avwp9dj\u002FYouTube_Bot_Assets.zip\u002Ffile (500MB)\u003C\u002Fh2>\n\n请将这些文件放置在YouTube Bot视频生成器目录下的“Assets”文件夹中。\n\n\n\u003Ch2>免责声明\u003C\u002Fh2>\n你需要对这段代码进行若干修改，才能使其适应你的环境。视频生成器客户端和服务器程序可在Linux上运行。为了赶在9月前完成项目，我匆忙完成了几个部分。另外，我原本并未打算将此项目公开发布。\n\n此外，我在项目过程中多次改变了设计思路，因此部分文件命名较为奇怪，还有一些未使用的代码。我不会再更新这段代码了，但欢迎你自由使用。\n\n\u003Ch2>依赖项\u003C\u002Fh2>\n\n请查看dependencies.txt\n\n要轻松安装大部分Python依赖项，请在克隆后运行以下命令（部分依赖项可能需要手动安装）：\n\n```pip install -r requirements.txt```\n\n\n\u003Ch2>程序生成的视频为何仍能被观看？\u003C\u002Fh2>\n\n最近流行的Reddit文本转语音视频通常遵循一个非常简单的模式：\n\n1. 展示一句文本。\n2. 文本转语音朗读该句文本。\n3. 文本转语音结束后，展示下一句文本。\n4. 重复上述步骤，直到评论及其回复全部完成。\n5. 当一条评论及其所有后续回复完成后，播放一段过渡间隔。\n6. 转到下一条评论。\n7. 重复步骤1至6，直到生成10分钟的视频。\n\n随机选择一首歌曲。我下载了约40首Kevin MacLeod的免版税音乐，供随机选用。\n\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ccpyyrdS-Qo&list=PLbzGR7H3FyUS3LvitxTFAIgv601UKUHjX\n\n所有用于生成视频的素材均可在此下载：\n\nhttp:\u002F\u002Fwww.mediafire.com\u002Ffile\u002Fhpu1j1k1avwp9dj\u002FYouTube_Bot_Assets.zip\u002Ffile\n\n它们必须放置在视频生成器程序的“Assets”文件夹中。\n\n\u003Ch2>工作原理\u003C\u002Fh2>\n\n该项目由三个独立的程序组成：\n\n\n1. YouTube Bot服务器 -> initserver.py\n2. YouTube Bot视频生成器客户端 -> youtubequeue.py\n3. YouTube Bot客户端（人工审核） -> client.py\n\n\u003Ch2>YouTube Bot服务器\u003C\u002Fh2>\n\n该程序负责：(1) 与客户端程序建立连接的套接字服务器，以及(2) 与视频生成器客户端建立连接的套接字服务器。此外，该程序还会每小时从Reddit抓取新脚本，并更新尚未编辑过的现有脚本。\n\n(1) 此套接字服务器会将数据库中的原始脚本发送给人工审核程序（见下文）。随后，它会接收经过审核的脚本，并将最终确定的脚本更新到数据库中，其中包括缩略图、描述和标题。该服务器支持多客户端，因此多人可以同时编辑这些脚本。\n\n(2) 视频生成器服务器目前仅设计为处理一个视频生成器客户端。最初计划是让该服务器同时处理多个视频生成器客户端，分布在多台电脑上。不过，我发现一台电脑足以满足我的所有视频生成需求，于是决定将其硬编码为只处理一个客户端。该服务器的作用是将数据库中的最终脚本发送给视频生成器客户端。\n\n\u003Ch2>YouTube Bot视频生成器客户端\u003C\u002Fh2>\n\n该程序会从YouTube Bot视频生成器服务器接收最终确定的视频脚本，包括缩略图、描述、标签和标题。这些脚本会被生成为MP4文件，然后在预定时间上传到YouTube（目前随机定在格林威治标准时间下午5点、6点或7点——这是推荐的上传时间）。一旦收到脚本，程序会先生成视频，然后等待足够API额度，通过检查最近6个视频的上传时间来判断何时可以上传。\n\n**API配额使用将于格林威治标准时间上午8点重置**。我计算出，每个视频的上传需要消耗**1658个积分**。每天最多可使用10,000个积分。理论上，这意味着你每天可以上传**6个视频**。不过实际上，我最多只能上传5个视频，有时第六个视频也能上传，但此时缩略图的配额可能不足，需要人工干预才能手动上传缩略图。视频上传使用的是YouTube-Upload工具，我只成功让它在Python 2.7环境下运行。该工具通过subprocess.check_call调用，指定Python版本并按需传递参数（链接见下文）。\n\n视频成功上传后，其状态会被设置为“已完成”，并记录上传时间，以便程序能够统计当天已上传的视频数量，从而避免超出配额使用。\n\nYouTube 数据 API 信息：https:\u002F\u002Fdevelopers.google.com\u002Fyoutube\u002Fv3\u002Fgetting-started  \nYouTube-Upload（Python 2.7）：https:\u002F\u002Fgithub.com\u002Ftokland\u002Fyoutube-upload\n\n**文本转语音**\n迄今为止，该项目最具挑战性的环节之一就是让文本转语音功能正常运行。我原本想使用 Daniel MLG Soft Scan 文本转语音声音——这种声音常见于大多数 Reddit 上的文本转语音视频中。我认为这是项目的重要组成部分，因为这种声音非常具有辨识度，在我看来也是目前最好听的文本转语音之一。\n\n我使用 Balabolka 的命令行版本生成 .wav 文件，然后将这些文件与视频生成程序中的不同帧同步。\n\nBalabolka：http:\u002F\u002Fwww.cross-plus-a.com\u002Fbalabolka.htm  \n获取 Daniel MLG 声音的说明：https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=yj3dhTnyotY\n\n\u003Ch2>YouTube 机器人客户端\u003C\u002Fh2>\n\n该客户端程序采用类似 Tinder 的左右滑动方式，用于筛选出不需纳入视频的评论。此外，用户还可以为视频撰写标题、上传缩略图，并编辑描述和标签。不过，标题、描述和标签的部分内容是自动生成的：\n\n标题：默认为帖子标题  \n描述：默认为包含帖子标题及几个话题标签的模板  \n标签：我从一些热门文本转语音频道（如 r\u002Faskreddit、reddit、reddit funny 等）中获取了一些基础标签  \n所有这些内容均可编辑。缩略图的模板也会部分生成。此外，程序会进行检查，确保各字段的字符数不超过限制，例如标题长度不得超过 100 个字符。\n\n最终的视频内容包括编辑后的脚本、缩略图、标签、描述以及视频设置（在编辑过程中，可以调整视频生成器模板的某些特性，比如背景颜色、文字大小、线条宽度等。不过我通常保留默认值，因此很少用到这些功能）。随后，这些内容会被发送至服务器，由服务器以 BLOB 格式存储到数据库中。\n\n**MySQL**\n\n脚本及其相关信息均存储在 MySQL 数据库中。这是我第一次在项目中使用 MySQL 数据库。我对 SQL 并不精通，只是学了必要的知识来让项目顺利运行。我使用了三个表：“users”、“videogenerators”和“scripts”。\n\n**“users”表**  \n最初我计划开发一个功能丰富的登录系统，让用户拥有编辑统计数据、查看在线用户等信息。后来放弃了这个想法，现在该表仅用于跟踪哪些用户正在编辑哪些视频，以防止同一视频被重复编辑和上传。密码在客户端使用 MD5 进行加密。\n\n**“scripts”表**  \n这是最重要的表，存储了所有脚本信息。其中的“status”字段非常重要，用于追踪脚本所处的状态：\n- *-raw*：脚本可供编辑  \n- *-editing*：脚本正在被编辑，此状态下其他用户无法再编辑  \n- *-complete*：脚本编辑完成，将被发送至视频生成器客户端  \n- *-successupload*：脚本已成功上传至 YouTube\n\n**“videogenerators”表**  \n与“users”表类似，我也为客户端设计了用户名和密码登录机制。密码同样在客户端使用 MD5 加密。\n\n如果这些表尚未存在，它们将会在名为“youtubebot”的数据库中自动创建。\n\n\u003Ch2>接收 Reddit 脚本\u003C\u002Fh2>\n\n我使用 praw 获取 Reddit 脚本。默认情况下，我设置从 r\u002FAskReddit 的热门版块获取 45 个脚本。每个脚本的最低评论数必须达到 1000 条。程序会从每篇帖子中选取评分最高的 30 条评论，以及每条评论后续评分最高的 5 条回复。这段代码位于 YouTube 机器人服务器的 reddit.py 文件中。\n\n默认情况下，YouTube 机器人服务器启动时会请求脚本，之后每隔一小时再次请求一次。如果脚本已在数据库中，程序会更新数据库中的脚本条目，以反映最新的评论和点赞数值。\n\n获取 Google API 账户的凭据后，只需登录一次，凭据便会自动下载并保存（浏览器窗口会弹出，要求您登录 Google 账户）：videouploader.py -> get_credentials()","# 自动Reddit文本转语音视频生成与上传工具快速上手指南\n\n## 环境准备\n\n- **系统要求**：Windows 或 Linux\n- **前置依赖**：\n  - Python 2.7（必须，因YouTube-Upload依赖）\n  - MySQL 服务器（安装并运行）\n  - Balabolka（[官网](http:\u002F\u002Fwww.cross-plus-a.com\u002Fbalabolka.htm)，需配置Daniel MLG语音）\n  - Google API 凭证（需OAuth登录获取）\n\n## 安装步骤\n\n1. **获取项目代码**\n   ```bash\n   # 请先获取项目代码（如GitHub仓库地址未提供，需手动下载）\n   git clone \u003C仓库地址>  # 替换为实际地址\n   cd 项目目录\n   ```\n\n2. **安装Python依赖（使用清华源加速）**\n   ```bash\n   pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n   ```\n\n3. **下载Assets资源包**\n   - 访问 [MediaFire链接](http:\u002F\u002Fwww.mediafire.com\u002Ffile\u002Fhpu1j1k1avwp9dj\u002FYouTube_Bot_Assets.zip)\n   - 解压到项目目录下的 `Assets` 文件夹\n   - （国内访问可能较慢，建议使用科学上网）\n\n4. **配置MySQL**\n   - 创建数据库 `youtubebot`，程序启动时自动初始化表结构\n\n5. **获取Google API凭证**\n   ```bash\n   python videouploader.py\n   ```\n   按提示完成浏览器OAuth登录\n\n## 基本使用\n\n1. **启动服务器**\n   ```bash\n   python initserver.py\n   ```\n\n2. **审核脚本（手动编辑）**\n   ```bash\n   python client.py\n   ```\n   - 选择待编辑的原始脚本\n   - 逐条评论选择保留\u002F跳过\n   - 编辑标题、标签、描述，上传缩略图\n   - 点击 **\"Send To Video Generator\"**\n\n3. **生成并上传视频**\n   ```bash\n   python youtubequeue.py\n   ```\n   - 自动处理审核后的脚本，生成MP4并上传\n   - 每日最多上传6个视频（API配额限制）","小李是一名独立视频创作者，专注于运营“Royal Reddit”频道，每天需要将Reddit热门评论转化为TTS视频并上传到YouTube。\n\n### 没有 Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader 时\n- 手动从Reddit复制评论到文本编辑器，需反复调整格式，平均每个视频处理脚本耗时1小时，易遗漏关键内容。\n- 需逐个检查每条评论是否含链接、敏感内容或低质量，平均每个视频审核30分钟，错误率高且耗神。\n- 编辑标题和缩略图需切换Photoshop、视频编辑软件等多工具，操作繁琐，每次耗时40分钟。\n- 上传视频到YouTube时手动填写标题、描述、标签、分类，每次约15分钟，流程重复枯燥。\n- 整个流程每天需3-4小时，严重拖慢内容产出，难以维持频道稳定更新。\n\n### 使用 Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader 后\n- 工具自动获取Reddit脚本，小李只需在客户端快速点击“keep\u002Fskip”筛选评论，脚本处理时间降至15分钟，准确率显著提升。\n- 内置审核功能自动标记问题评论，手动检查仅需5分钟，大幅减少内容风险。\n- 标题和缩略图编辑集成在客户端中，一键生成基础版本，调整只需10分钟，操作流畅高效。\n- 一键上传YouTube，自动填充元数据，上传过程仅需2分钟，省去重复操作。\n- 整个流程缩短至30分钟内，每天可高效制作6个视频，内容产出翻倍。\n\nAutomatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader 将视频制作效率提升90%，让小李能专注于内容创意而非繁琐操作。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FHA6Bots_Automatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader_1f64207f.png","HA6Bots",null,"https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FHA6Bots_d61c62fe.png","Releasing bots that really shouldn't be released...\r\n\r\nMostly inactive on this account now. Feel free to create pull requests.\r\n\r\nroyalredditofficial@gmail.com","https:\u002F\u002Fgithub.com\u002FHA6Bots",[20,24],{"name":21,"color":22,"percentage":23},"Python","#3572A5",100,{"name":25,"color":26,"percentage":27},"Batchfile","#C1F12E",0,656,194,"2026-04-04T03:53:06","MIT",3,"Linux","未说明",{"notes":36,"python":37,"dependencies":38},"需下载500MB Assets文件；必须使用Python 2.7以支持YouTube-Upload；需配置Balabolka获取Daniel MLG语音；使用MySQL数据库存储脚本；YouTube API每日配额限制为10000点，最多上传6个视频","2.7",[],[40,41,42],"视频","音频","数据工具",[44,45,46,47,48,49,50],"youtube-video","video-generator","speech-channel","youtube-upload","tts","automatic","reddit-crawler",4,"ready","2026-03-27T02:49:30.150509","2026-04-06T07:14:57.483436",[56,61,66,71,76],{"id":57,"question_zh":58,"answer_zh":59,"source_url":60},8782,"视频生成器不工作，点击后无反应","将balcon.exe添加到系统路径，并在balcon_location配置中设置为\"balcon\"（不带引号）。","https:\u002F\u002Fgithub.com\u002FHA6Bots\u002FAutomatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader\u002Fissues\u002F8",{"id":62,"question_zh":63,"answer_zh":64,"source_url":65},8783,"渲染视频时格式化错误","将transitions文件重命名为'standard.mp4'，或使用更短的视频以避免问题。","https:\u002F\u002Fgithub.com\u002FHA6Bots\u002FAutomatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader\u002Fissues\u002F62",{"id":67,"question_zh":68,"answer_zh":69,"source_url":70},8784,"SQL数据库设置时被阻止","手动启动MySQL服务器（通过任务管理器），并在config.ini文件中添加localhost配置。","https:\u002F\u002Fgithub.com\u002FHA6Bots\u002FAutomatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader\u002Fissues\u002F17",{"id":72,"question_zh":73,"answer_zh":74,"source_url":75},8785,"服务器报告没有脚本可解析","安装最新版本的moviepy，因为1.0.0版本会导致声音无法附加到MP4文件。","https:\u002F\u002Fgithub.com\u002FHA6Bots\u002FAutomatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader\u002Fissues\u002F39",{"id":77,"question_zh":78,"answer_zh":79,"source_url":80},8786,"项目是否还提供支持？","项目已不再支持，请勿发送邮件到wifieconomy@gmail.com，详见公告。","https:\u002F\u002Fgithub.com\u002FHA6Bots\u002FAutomatic-Youtube-Reddit-Text-To-Speech-Video-Generator-and-Uploader\u002Fissues\u002F5",[],[83,98,107,115,123,131],{"id":84,"name":85,"github_repo":86,"description_zh":87,"stars":88,"difficulty_score":89,"last_commit_at":90,"category_tags":91,"status":52},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,2,"2026-04-05T10:45:23",[92,42,40,93,94,95,96,97,41],"图像","插件","Agent","其他","语言模型","开发框架",{"id":99,"name":100,"github_repo":101,"description_zh":102,"stars":103,"difficulty_score":104,"last_commit_at":105,"category_tags":106,"status":52},2234,"scikit-learn","scikit-learn\u002Fscikit-learn","scikit-learn 是一个基于 Python 构建的开源机器学习库，依托于 SciPy、NumPy 等科学计算生态，旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口，涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具，内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。\n\n对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言，scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点，让用户无需重复造轮子，只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。\n\n其核心技术亮点在于高度一致的 API 设计风格，所有估算器（Estimator）均遵循相同的调用逻辑，极大地降低了学习成本并提升了代码的可读性与可维护性。此外，它还提供了强大的模型选择与评估工具，如交叉验证和网格搜索，帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目，scikit-learn 以其稳定性、详尽的文档和活跃的社区支持，成为连接理论学习与工业级应用的最",65628,1,"2026-04-05T10:10:46",[97,95,42],{"id":108,"name":109,"github_repo":110,"description_zh":111,"stars":112,"difficulty_score":89,"last_commit_at":113,"category_tags":114,"status":52},3364,"keras","keras-team\u002Fkeras","Keras 是一个专为人类设计的深度学习框架，旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。\n\n无论是刚入门的学生、专注算法的研究人员，还是需要快速落地产品的工程师，都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。\n\nKeras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码，即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性，还允许开发者根据需求自由选择：利用 JAX 或 PyTorch 的即时执行模式进行高效调试，或切换至速度最快的后端以获得最高 350% 的性能提升。此外，Keras 具备强大的扩展能力，能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群，是连接原型开发与生产部署的理想桥梁。",63927,"2026-04-04T15:24:37",[97,42,95],{"id":116,"name":117,"github_repo":118,"description_zh":119,"stars":120,"difficulty_score":89,"last_commit_at":121,"category_tags":122,"status":52},2403,"crawl4ai","unclecode\u002Fcrawl4ai","Crawl4AI 是一款专为大语言模型（LLM）设计的开源网络爬虫与数据提取工具。它的核心使命是将纷繁复杂的网页内容转化为干净、结构化的 Markdown 格式，直接服务于检索增强生成（RAG）、智能体构建及各类数据管道，让 AI 能更轻松地“读懂”互联网。\n\n传统爬虫往往面临反爬机制拦截、动态内容加载困难以及输出格式杂乱等痛点，导致后续数据处理成本高昂。Crawl4AI 通过内置自动化的三级反机器人检测、代理升级策略以及对 Shadow DOM 的深度支持，有效突破了这些障碍。它能智能移除同意弹窗，处理深层链接，并具备长任务崩溃恢复能力，确保数据采集的稳定与高效。\n\n这款工具特别适合开发者、AI 研究人员及数据工程师使用。无论是需要为本地模型构建知识库，还是搭建大规模自动化信息采集流程，Crawl4AI 都提供了极高的可控性与灵活性。作为 GitHub 上备受瞩目的开源项目，它完全免费开放，无需繁琐的注册或昂贵的 API 费用，让用户能够专注于数据价值本身而非采集难题。",63242,"2026-04-02T22:29:19",[42,94],{"id":124,"name":125,"github_repo":126,"description_zh":127,"stars":128,"difficulty_score":89,"last_commit_at":129,"category_tags":130,"status":52},193,"meilisearch","meilisearch\u002Fmeilisearch","Meilisearch 是一个开源的极速搜索服务，专为现代应用和网站打造，开箱即用。它能帮助开发者快速集成高质量的搜索功能，无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果，而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性，并支持 AI 驱动的混合搜索（结合关键词与语义理解），显著提升用户查找信息的体验。\n\nMeilisearch 特别适合 Web 开发者、产品团队或初创公司使用，尤其适用于需要快速上线搜索功能的场景，如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK，部署简单，资源占用低，本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下，为用户提供流畅、智能搜索体验的团队来说，Meilisearch 是一个高效且友好的选择。",56972,"2026-04-05T22:34:33",[92,94,42,97,93,95],{"id":132,"name":133,"github_repo":134,"description_zh":135,"stars":136,"difficulty_score":32,"last_commit_at":137,"category_tags":138,"status":52},4128,"GPT-SoVITS","RVC-Boss\u002FGPT-SoVITS","GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具，旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点，实现了“零样本”和“少样本”的快速建模：用户只需提供 5 秒参考音频即可即时生成语音，或使用 1 分钟数据进行微调，从而获得高度逼真且相似度极佳的声音效果。\n\n该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能，极大地降低了数据准备和模型训练的技术门槛，让非专业人士也能轻松上手。\n\n在技术亮点方面，GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成，还具备卓越的推理速度，在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音，还是进行多语言语音交互研究，GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。",56375,"2026-04-05T22:15:46",[41]]