No mundo do marketing digital e da criação de conteúdo, muitas vezes precisamos extrair thumbnails de vídeos do YouTube — seja para ilustrar relatórios, mockups de campanhas, apresentações ou até para automações internas. Pensando nisso, criamos um script open source chamado YouTube Thumbnail Downloader, que permite baixar rapidamente imagens de capa de qualquer vídeo do YouTube.
O código é simples, direto e ideal para desenvolvedores, analistas e entusiastas que querem automatizar esse processo.
👉 O projeto completo está disponível no GitHub: adrockmkt/youtube_thumbnail_downloader
O que o script faz
Com apenas uma URL de vídeo do YouTube, o script:
Extrai o ID do vídeo a partir do link.
Monta a URL da imagem de thumbnail (padrão maxresdefault.jpg).
Faz o download da imagem.
Salva automaticamente dentro de uma pasta chamada images.
Resultado: em poucos segundos você tem a thumbnail original em alta resolução, pronta para uso.
Requisitos
O projeto roda com Python 3+ e utiliza apenas bibliotecas padrão e requests.
Basta instalar o ambiente virtual e as dependências:
# Criar ambiente virtual
python3 -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Instalar dependências
pip install -r requirements.txt
# Criar ambiente virtual
python3 -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Instalar dependências
pip install -r requirements.txt
# Criar ambiente virtual
python3 -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Instalar dependências
pip install -r requirements.txt
Exemplo de uso
Depois de clonar o repositório, basta executar:
python youtube_thumbnail_downloader.py
python youtube_thumbnail_downloader.py
python youtube_thumbnail_downloader.py
O script pedirá a URL de um vídeo, por exemplo:
Digite a URL do vídeo do YouTube: https:
Digite a URL do vídeo do YouTube: https:
Digite a URL do vídeo do YouTube: https:
Saída esperada:
Thumbnail baixada com sucesso em: images/dQw4w9WgXcQ.jpg
Thumbnail baixada com sucesso em: images/dQw4w9WgXcQ.jpg
Thumbnail baixada com sucesso em: images/dQw4w9WgXcQ.jpg
Código principal
Aqui está o núcleo do script:
import os
import re
import requests
def extract_video_id(url):
"""Extrai o ID do vídeo do YouTube a partir da URL"""
regex = r"(?:v=|\/)([0-9A-Za-z_-]{11}).*"
match = re.search(regex, url)
if match:
return match.group(1)
raise ValueError("URL inválida. Não foi possível extrair o ID do vídeo.")
def download_thumbnail(video_url, output_dir="images"):
"""Faz o download da thumbnail em alta resolução"""
video_id = extract_video_id(video_url)
thumbnail_url = f"https://img.youtube.com/vi/{video_id}/maxresdefault.jpg"
# Cria pasta se não existir
if not os.path.exists(output_dir):
os.makedirs(output_dir)
response = requests.get(thumbnail_url, stream=True)
if response.status_code == 200:
file_path = os.path.join(output_dir, f"{video_id}.jpg")
with open(file_path, "wb") as file:
for chunk in response.iter_content(1024):
file.write(chunk)
print(f"Thumbnail baixada com sucesso em: {file_path}")
else:
print("Erro: Não foi possível baixar a thumbnail.")
if __name__ == "__main__":
url = input("Digite a URL do vídeo do YouTube: ")
download_thumbnail(url)import os
import re
import requests
def extract_video_id(url):
"""Extrai o ID do vídeo do YouTube a partir da URL"""
regex = r"(?:v=|\/)([0-9A-Za-z_-]{11}).*"
match = re.search(regex, url)
if match:
return match.group(1)
raise ValueError("URL inválida. Não foi possível extrair o ID do vídeo.")
def download_thumbnail(video_url, output_dir="images"):
"""Faz o download da thumbnail em alta resolução"""
video_id = extract_video_id(video_url)
thumbnail_url = f"https://img.youtube.com/vi/{video_id}/maxresdefault.jpg"
# Cria pasta se não existir
if not os.path.exists(output_dir):
os.makedirs(output_dir)
response = requests.get(thumbnail_url, stream=True)
if response.status_code == 200:
file_path = os.path.join(output_dir, f"{video_id}.jpg")
with open(file_path, "wb") as file:
for chunk in response.iter_content(1024):
file.write(chunk)
print(f"Thumbnail baixada com sucesso em: {file_path}")
else:
print("Erro: Não foi possível baixar a thumbnail.")
if __name__ == "__main__":
url = input("Digite a URL do vídeo do YouTube: ")
download_thumbnail(url)import os
import re
import requests
def extract_video_id(url):
"""Extrai o ID do vídeo do YouTube a partir da URL"""
regex = r"(?:v=|\/)([0-9A-Za-z_-]{11}).*"
match = re.search(regex, url)
if match:
return match.group(1)
raise ValueError("URL inválida. Não foi possível extrair o ID do vídeo.")
def download_thumbnail(video_url, output_dir="images"):
"""Faz o download da thumbnail em alta resolução"""
video_id = extract_video_id(video_url)
thumbnail_url = f"https://img.youtube.com/vi/{video_id}/maxresdefault.jpg"
# Cria pasta se não existir
if not os.path.exists(output_dir):
os.makedirs(output_dir)
response = requests.get(thumbnail_url, stream=True)
if response.status_code == 200:
file_path = os.path.join(output_dir, f"{video_id}.jpg")
with open(file_path, "wb") as file:
for chunk in response.iter_content(1024):
file.write(chunk)
print(f"Thumbnail baixada com sucesso em: {file_path}")
else:
print("Erro: Não foi possível baixar a thumbnail.")
if __name__ == "__main__":
url = input("Digite a URL do vídeo do YouTube: ")
download_thumbnail(url)Casos de uso prático
Criadores de conteúdo que precisam das thumbnails para montar posts ou artes.
Agências de marketing que fazem relatórios de YouTube Ads e querem ilustrar apresentações.
Pesquisadores de mídia que analisam padrões visuais em campanhas.
Automação em dashboards internos para captura de dados visuais de vídeos.
Repositório e contribuição
O código é open source e está disponível em:
👉 GitHub – adrockmkt/youtube_thumbnail_downloader
No repositório você encontra também:
README completo com instruções.
LICENSE MIT.
Guia de Contribuição (CONTRIBUTING.md) para quem quiser melhorar o projeto.
Requisitos (requirements.txt) para instalação fácil.
Conclusão
Na Ad Rock Digital Mkt, acreditamos que scripts como esse são ferramentas poderosas para simplificar o dia a dia e abrir espaço para automações mais complexas.