Automatically generate and upload YouTube Shorts with AI-powered content creation
The YouTube Shorts automation feature enables fully automated video creation and publishing for your YouTube channel. Generate scripts, create visuals, add voiceovers, and upload—all through the CLI.
From the main menu, select YouTube Shorts Automater and create a new account:
=> Generated ID: 550e8400-e29b-41d4-a716-446655440000=> Enter a nickname for this account: TechShorts=> Enter the path to the Firefox profile: /home/user/.mozilla/firefox/abc123.default=> Enter the account niche: Technology Tips and Tricks=> Enter the account language: English
def generate_script(self) -> str: sentence_length = get_script_sentence_length() prompt = f""" Generate a script for a video in {sentence_length} sentences, depending on the subject of the video. The script is to be returned as a string with the specified number of paragraphs. Here is an example of a string: "This is an example string." Do not under any circumstance reference this prompt in your response. Get straight to the point, don't start with unnecessary things like, "welcome to this video". Obviously, the script should be related to the subject of the video. YOU MUST NOT EXCEED THE {sentence_length} SENTENCES LIMIT. MAKE SURE THE {sentence_length} SENTENCES ARE SHORT. YOU MUST NOT INCLUDE ANY TYPE OF MARKDOWN OR FORMATTING IN THE SCRIPT, NEVER USE A TITLE. YOU MUST WRITE THE SCRIPT IN THE LANGUAGE SPECIFIED IN [LANGUAGE]. Subject: {self.subject} Language: {self.language} """ completion = self.generate_response(prompt) return completion
user_input = int(question("Select an Option: "))cron_script_path = os.path.join(ROOT_DIR, "src", "cron.py")command = ["python", cron_script_path, "youtube", selected_account['id'], get_active_model()]def job(): subprocess.run(command)if user_input == 1: # Upload Once schedule.every(1).day.do(job) success("Set up CRON Job.")elif user_input == 2: # Upload Twice a day schedule.every().day.at("10:00").do(job) schedule.every().day.at("16:00").do(job) success("Set up CRON Job.")
The CRON job will continue running as long as the script is active. For production use, consider setting up a system-level cron job or systemd service.
View all uploaded videos by selecting View Uploaded Videos from the YouTube menu:
+----+---------------------+--------------------------------------------------------------+| ID | Date | Title |+----+---------------------+--------------------------------------------------------------+| 1 | 2026-03-01 14:23:45 | 10 Mind-Blowing Tech Gadgets You Need in 2026 #TechReview..|| 2 | 2026-03-02 10:15:22 | How AI Will Change Everything in 2026 #FutureTech #AI... |+----+---------------------+--------------------------------------------------------------+
Video metadata is cached locally in .mp/cache/youtube_cache.json.