An awesome Discord Bot to fetch your YouTube Channel Analytics.
- Collects data on a variety of metrics, including views, revenue, subscriber growth, & more
- Can be used to analyze the performance of a channel and identify areas for improvement
- Discord Button User-Friendly UI
- Docker Support
- Developer Mode
- Efficient API Service Build Methods & Fail-Safe(s)
- Ability to Run 24/7 using Replit & Flask (Dev Mode + Build From Document)
Start every command with !
. Optional Command Input is denoted using [brackets].
Check Example Output Folder for output examples.
- MM / DD Format (MONTH/DATE, Assumes the current year) or MM / DD / YYYY:
!stats 01/01 12/01
!stats 01/01/2021 12/31/2021
Command | Description |
---|---|
!button [startDate] [endDate] |
Open Discord Button UI with all supported commands |
!stats [startDate] [endDate] |
๐ YouTube Analytics Report Card. Display Views, Watch-Time, Estimated Revenue, CPM, Ad-Impressions, & more. Defaults to current month if date range not specified. |
!getMonth [month/year] |
Return stats for a specific month. ๐ |
!lifetime |
Get lifetime stats. ๐งฎ |
!topEarnings [startDate] [endDate] [Length to Return] |
Get a list of the highest revenue earning videos on your channel. ๐ฐ |
!geo_revenue [startDate] [endDate] [Length to Return] |
Get a list of your top revenue earning countries. ๐๐ฐ |
!geoReport [startDate] [endDate] [Length to Return] |
More detailed report of views, revenue, cpm, etc by country. ๐ |
!adtype [startDate] [endDate] |
Get highest performing ad types within specified time range. ๐ฐ |
!demographics [startDate] [endDate] |
Get demographics data (age and gender) of viewers. ๐จโ๐ฉโ๐งโ๐ง |
!shares [startDate] [endDate] [Length to Return] |
Return list of top sharing methods for your videos. ๐ค |
!search [startDate] [endDate] [Length to Return] |
Return YouTube search terms resulting in the most views of your video(s). ๐ |
!os [startDate] [endDate] [Length to Return] |
Return top operating systems watching your videos (ranked by views). ๐ |
!playlist [startDate] [endDate] [Length to Return] |
Retrieve your Playlist Report. |
!everything [startDate] [endDate] |
Return everything. Call every method and output all available data. โพ๏ธ |
!refresh [token] |
Refresh API Token! |
!switch |
Switch Dev Mode On/Off. |
!help |
Send all Discord commands with explanations. ๐ฆฎ |
!ping |
Check to make sure bot is running. |
Upon invoking the !button
command, these are currently supported with a scene containing interactive buttons:
- Analytics
- Top Revenue Videos
- Top Searched Keywords
- Playlist Stats
- Geographic Data
- OS Statistics
- Traffic Source
- Shares
- Top Geographic Based Revenue
For this project, you need to enable use of Google Cloud Console YouTube Analytics/Data API for your account & create a discord bot to obtain a discord token.
Follow these well-organized steps to set up the Google Cloud Console API:
-
Create a New Project
- Visit the Google Cloud Console website and create a new project.
-
Enable APIs and Services
- Click on API & Services and select Enable APIs and Services.
-
Enable YouTube APIs
- Search for and enable both the YouTube Data API and YouTube Analytics API.
-
Configure OAuth Consent Screen
- Return to the API & Services page and click on Credentials.
- Select User Type (External), then configure the OAuth Consent Screen by adding the following YouTube Analytics related scopes:
https://www.googleapis.com/auth/youtube.readonly
https://www.googleapis.com/auth/yt-analytics-monetary.readonly
-
Complete OAuth Configuration
- Proceed with the rest of the configuration settings for OAuth.
-
Create OAuth Credentials
- Click Create Credentials, then select OAuth Credentials, followed by Desktop Application. Continue with the setup.
-
Download OAuth JSON File
- Download the JSON file and name it
CLIENT_SECRET.json
. - Place this file in the same folder as your program. You'll have the option to assign its contents to the
CLIENT_SECRET
environment variable after running the program and generating a refresh token.
- Download the JSON file and name it
-
Create API Key
- Create Credentials -> API Key.
- Copy and assign the API key to the
YOUTUBE_API_KEY
environment variable.
Now, your Google Cloud Console API is fully set up and ready to use!
Follow these organized steps to set up your Discord bot:
-
Create a Discord Application
- Visit Discord Developers and create a new application. Name it "YouTube Apprise" or choose a suitable name. Accept the terms.
-
Configure OAuth2
- Access your newly created application and go to the OAuth2 URL Generator section.
-
Select Scopes and Permissions
- Under Scopes, choose Bot and enable the required bot permissions.
- Ensure text permissions like Send Messages and Read Message History are enabled.
- Additionally, enable general permissions like View Server Insights.
- Under Scopes, choose Bot and enable the required bot permissions.
-
Generate Bot Invite Link
- Copy the generated link located beneath the Permissions section. Paste this link into your browser. Use it to add the bot to your preferred server. It's recommended to add the bot to your private Discord server to safeguard sensitive information, like revenue and CPM, accessible through bot commands.
-
(Optional) Customize Profile Picture
- Enhance your bot's appearance by uploading an appealing image in the Rich Presence section.
-
Retrieve Bot Token
- In the Bot section of your application, obtain, reset, or retrieve the bot token. Assign this token to the
DISCORD_TOKEN
environment variable.
- In the Bot section of your application, obtain, reset, or retrieve the bot token. Assign this token to the
Now, your Discord bot is ready for action!
The bot can be run using Python or Docker.
-
Clone this repository, cd into it, and install dependancies:
git clone https://github.com/Prem-ium/youtube-analytics-bot cd youtube-analytics-bot pip install -r requirements.txt
-
Configure your
.env
file (See below and example for options) -
Run the script:
python main.py
Before building the Docker container, follow these steps carefully to ensure a smooth setup. Ensure you have generated the credentials.json
file locally (unless developer mode is enabled):
-
Generate Credentials JSON File
- Run the Python script locally to generate the
credentials.json
file.
- Run the Python script locally to generate the
-
Install Docker
- Download and install Docker on your system.
-
Configure
.env
File- Configure your
.env
file with the necessary settings (see below for options).
- Configure your
-
Build the Docker Image
- To build the image yourself, navigate to the repository directory and execute the following command:
docker build -t youtube-apprise .
- To build the image yourself, navigate to the repository directory and execute the following command:
-
Start the Bot
- Start the bot within a Docker container with the following command:
docker run -it --env-file ./.env --restart unless-stopped --name youtube-apprise youtube-apprise
- Ensure that the path to your
.env
file is correctly specified.
- Start the bot within a Docker container with the following command:
-
Running the Bot
- Once started, the bot will log in and begin its tasks.
- IMPORTANT: Do NOT press
CTRL-c
as it will terminate the container and the bot. To exit the logs view, useCTRL-p
followed byCTRL-q
. This will exit the logs view without stopping the bot.
By following these steps, you'll have a Docker container named youtube-apprise
running your bot.
As always, please refer to the `.env.example' file for examples.
Environment Variable | Description |
---|---|
DISCORD_TOKEN |
Retrieve from https://discord.com/developers/applications |
YOUTUBE_API_KEY |
YouTube Data API Key (Retrieve from Google Cloud Console Credentials's Page after enabling the YouTube Data API) |
Environment Variable | Description |
---|---|
CLIENT_PATH |
Path of YouTube/Google Client Secret JSON file. Defaults to current directory (file named "CLIENT_SECRET.json") |
DEV_MODE |
Whether to use experimental features or not. MUST have CLIENT_SECRET configured. |
CLIENT_SECRET |
Contents of CLIENT_SECRET.JSON which includes refresh token value. Check .env.example for a reference. |
DISCORD_CHANNEL |
Turn on developer mode in advanced settings, right click on text channel, copy ID |
KEEP_ALIVE |
Boolean True/False value. Whether to us a Flask server or not to keep program from dying on platforms like Replit. |
As of 9/8/2024, I have disabled the Issues
privilege for the general public. For direct support on any bugs or issues, please consider sponsoring me as a GitHub Sponsor under the Silver
or Gold
tier.
If you appreciate my work and would like to show your support, there are two convenient ways to make a donation:
-
GitHub Sponsors
- Donate via GitHub Sponsors
- This is the preferred donation method as it incurs no transaction fees & different tiers offer perks.
-
Buy Me A Coffee
Your generous donations will go a long way in helping me cover the expenses associated with developing new features and promoting the project to a wider audience. I extend my heartfelt gratitude to all those who have already contributed. Thank you for your support!
This repository uses the BSD 3-Clause โNewโ or โRevisedโ License.
Please leave a ๐ if you found this project to be cool! Made possible thanks to Google's YouTube Analytics/Data APIs May your analytics skyrocket up๐