Por Hyan Dias Tavares • Out 24, 2022
YOUTUBE
EXTRAÇÃO
API
DADOS
O YouTube é uma plataforma de streaming que permite a criação e consumo de conteúdos em vídeos. Diferente de uma Netflix, os próprios usuários criam os conteúdos, e os mesmos são monetizados conforme o consumo de seus vídeos.
Criada em 2005 por Chad Hurley, Jawed Karin e Steve Chen, que por curiosidade também eram fundadores do Paypal. Tinham a ideia de criar uma ferramenta que fosse fácil de compartilhar os vídeos, já que os e-mails (ferramenta usada na época) eram complicados, pois havia um limite de tamanho do envio do vídeo, para assistir tinha que fazer o download (sua internet tinha que ser boa) e era complexo a distribuição (os e-mails iam para caixa de spam).
Não precisa dizer que o YouTube cresceu rapidamente, chamando a atenção de grandes marcas, até o Google comprar a plataforma por US$ 1,65 bilhões.
Hoje o YouTube conta com 2,56 bilhões de usuários ativos, o serviço é responsável por 20,4% do tráfego mundial de internet móvel, segundo a pesquisa da The Mobile Internet Phenomena Report, realizada pela Sandvine.
Vale lembrar que o mercado de streaming, é uma oportunidade a ser explorada pelos times de marketing, sendo que em 2020 movimentou US$ 67 bilhões e se prevê que o mercado global poderá ultrapassar US$ 126 bilhões em receita até 2026.
E por todos esses fatores é fundamental investir em técnicas para automatizar a coleta de dados dessa ferramenta, para que possa gerar inteligência de mercado e estratégica.
O próprio YouTube disponibiliza uma área (dashboard) para observar as principais métricas e desempenho do seu canal. Basta acessar sua conta e ir ao “YouTube Studio”. Essa opção você encontra clicando no ícone (logo) do seu canal no canto superior direito.
Após isso, acesse o campo “Estatística”, você já encontrará alguns dados do seu canal, configurado para os últimos 30 dias. Para explorar o máximo desses dados, clique na opção “Modo avançado”.
Irá abrir uma nova janela, na qual terá as tabelas de dados para vários tipos de filtros, como origem do tráfego, cidades, idade, gênero, playlist e vários outros. Isso ajuda muito a entender o perfil do seu público.
Uma forma simples de extrair os dados é selecionar seu filtro e clicar no link de download, no caso, você pode escolher exportar para planilhas do Google ou um arquivo .csv.
Vale frisar que esse tipo de extração acontece em uma única viagem (clique), formando uma única fonte, ou seja, não é possível medir os dados em real time, necessitando toda vida que você clique para extrair os dados atualizados.
Para responder essa pergunta devemos entender se o seu canal é uma ferramenta de atração ou engajamento do seu público alvo dentro do seu funil de marketing, pois se a resposta for NÃO, minha sugestão não é automatizar essa tarefa, já que dará trabalho e seus dados serão ineficazes para conectar as ações de campanhas. Acredito que o próprio dashboard do YouTube irá te suprir bem para esta necessidade específica.
Se você faz campanhas de marketing ou conecta alguma ação de vendas e customer experience (CX) aos vídeos que você produz no YouTube. Essa automatização é importante para você.
Imagine você ter que medir o desempenho de múltiplas campanhas.
Exemplo: você usa seus vídeos no YouTube como topo de funil, para atrair novos clientes, impulsionando via google ads, além de engajar os próprios seguidores atuais em canais como Facebook e LinkedIn. E ao final do vídeo ainda tem call to action que irá te levar para uma página de captura de lead, que será uma fonte de dados para o CRM da sua empresa, para enfim você medir o volume de vendas.
Como você irá medir qual das campanhas realmente foi a mais eficiente? Qual vídeo converteu mais? Será que o vídeo que converteu menos, não foi o que trouxe mais vendas? E muitas outras perguntas. E não é lógico você ficar extraindo dados em planilhas toda vez ou deixar para terminar a campanha para ver qual foi o melhor. Você estará perdendo dinheiro.
E isso foi o que me motivou a escrever esse artigo, quero mostrar como extrair os dados do YouTube utilizando a sua API. Usaremos algumas técnicas com Python, mas prometo que será bem simples de executar, é só seguir o passo a passo.
O próprio YouTube desenvolveu a API, na qual permite a incorporação de funções executadas no próprio site do YouTube, possibilitando extrair dados.
Para você que não sabe direito o que é uma API (Application Programming Interface), é uma interface que possibilita a comunicação (troca de informação) por uma série de padrões e protocolos. Isso nos permite desenvolver nossos próprios softwares e aplicativos que podem se conectar a outra ferramenta.
Um exemplo é o Instagram, quando você posta um story e vai adicionar o restaurante onde você está, utilizando o arroba da localização, já aparece a opção da sua atual localização, pois ela se conectou com a API do Google Map ou algo similar e puxou os dados, para agilizar sua transcrição.
Para seguirmos com o tema, vou deixar aqui a Documentação da API do Youtube, sugiro você ler e conhecer um pouco, pois irei tratar neste artigo de uma forma sucinta, se quiser se aprofundar, buscar extrair alguma feature diferente, todas as respostas vão estar na documentação.
O primeiro fato a se entender é que existem duas formas de se credenciar na API, para que o YouTube nos forneça o acesso.
Para ambas as opções de credenciamento é necessário acessar a plataforma do Google API. Se você não tem cadastro ainda, sugiro entrar e criar sua conta.
Talvez você necessite aumentar sua cota de projetos no Google API. Para isso é só entrar no formulário e responder honestamente todas as informações, dentro de 1 semana, vão te retornar com um parecer.
O primeiro passo é ativar a API do YouTube Data API v3. Você pode acessar o link ou fazer uma busca, no próprio buscador da Google API.
Após ativar, você irá clicar no menu da esquerda, passar o mouse sobre a opção “APIs e serviços” e selecionar a opção “Credenciais”.
OBS: Se você entrar e não estiver aparecendo nada, pode ser que você precise criar um “novo projeto”. É só clicar em “criar um projeto”, dar um nome, selecionar a organização (caso tenha) e “criar”. Logo em seguida já estará liberado todas as funções.
Agora você está na página de credenciais, clique na opção “+CRIAR CREDENCIAIS”, e selecione a “chave de API”. Em alguns instantes ele vai criar para você a chave, mas se atente, você precisará configurá-lo, para isso é só clicar em “Edit API key”.
Você irá configurar sua chave. Se quiser, mude o nome da chave, isso serve apenas para sua própria organização. Na opção “Restrição de aplicativo” deixe a opção “Nenhum” ativada.
Na opção “Restrições da API”, você irá marcar a alternativa “restringir chave”, ao fazer isso, irá surgir uma caixa de seleção. Escolha a opção “YouTube Data API v3” e dê um “ok”. E por último clique em salvar.
Após finalizar a etapa anterior, você vai ser jogado para a tela de credenciais. Clique em “Exibir Chave”. Irá aparecer um código alfanumérico, salve isso, pois será importante para outro momento. Vale ressaltar que essa chave você não pode compartilhar com ninguém.
Iremos fazer essa aplicação funcionar dentro do google colab, sendo uma ferramenta que utiliza Python. E o primeiro passo é importar as bibliotecas necessárias.
In [1]:
from IPython.display import YouTubeVideo
import pandas as pd
import numpy as np
Vamos ter que instalar o google-api-python-client, sendo um módulo das APIs do Google em Python cliente, que nos permite fazer essa consulta.
In [2]:
!pip install --upgrade google-api-python-client
E em seguida adicionar a biblioteca “build”.
In [3]:
from googleapiclient.discovery import build
Esse é o momento que iremos utilizar aquela chave de credencial no Google API.
In [4]:
youTubeApiKey = "XXXXXXXXXXXXXXXXXXXXXXX"
E para permitir fazer as consultas, usamos a função “build”, que exige as variáveis de qual ferramenta irá extrair (no caso, YouTube), a sua versão (v3) e por último a chave da API.
In [5]:
youtube = build('youtube','v3', developerKey=youTubeApiKey)
A Partir desse momento já estamos autorizados para fazer a extração de dados.
Como estudo de caso, vamos tentar extrair os dados de uma playlist específica do meu canal, ou seja, todos os vídeos que estão dentro desta playlist.
Para solicitar os dados da playlist, precisamos do identificador da playlist, ele é bem fácil de encontrar. Basta acessar a playlist que você deseja, você vai encontrar ela na URL, e vai estar dentro do parâmetro chamado list=, tudo após esse igual é o identificador da playlist.
Os próximos passo são criar as variáveis com o ID da playlist, o nome da playlist e o nextPage_token.
In [6]:
playlistId = 'PLEkHCyHg-ngCUab9CPAsx3HrR3QRx9m-S'
playlistName = 'Tracker Talk'
nextPage_token = None
Para extrair os dados dos vídeos na playlist, criamos uma lista utilizando um laço de repetição (while), ou seja, irá ficar reproduzindo o comando até não haver mais vídeos para ser extraído os dados.
E para fazer isso acontecer, chamamos aquele objeto criado lá em cima “YouTube” e passamos a função playlistItem (você pode entender ela melhor na documentação) e a list, na qual irá listar os recursos da playlist. E para isso será necessário passar os parâmetros:
In [7]:
playlist_videos = []
while True:
res = youtube.playlistItems().list(part='snippet', playlistId = playlistId, maxResults=50, pageToken=nextPage_token).execute()
playlist_videos += res['items']
nextPage_token = res.get('nestPageToken')
if nextPage_token is None:
break
Sei que foi complexa essa parte, mas fica tranquilo, é só seguir o fluxo que você irá conseguir. E para ver o resultado de todos os dados é só digitar a variável playlist_videos.
In [8]:
playlist_videos
A consulta nos retorna um json, e os dados que queremos estão dentro da chave itens. Outra função que podemos fazer é ver quantos vídeos tem na playlist.
In [9]:
print("Número total de vídeos na Playlist ", len(playlist_videos))
Out [9]:
Número total de vídeos na Playlist 30
Outra ação importante é coletar os ID de cada vídeo que está na playlist, que está dentro daquele json que nos retornou. Então vamos criar uma função lambda que irá filtrar as variáveis e armazená-la dentro de uma lista.
In [10]:
videos_ids = list(map(lambda x: x['snippet']['resourceId']['videoId'], playlist_videos))
Digite a variável videos_ids, que irá retornar uma lista com todos os IDs.
In [11]:
videos_ids
Out [11]:
[‘ghOkow0MXnA’,
‘JU3cmPFFBcw’,
‘MrVcJPPeYJw’,
‘Mnf2Pcxn5xc’,
’54Fx9kG7vhQ’,
‘PS2vhqYG6wQ’,
‘nQZdR0aO3Gw’,
‘GqNdJXS446U’,
‘GpBcZ6jhPX8’,
‘yTwaueEopwo’,
‘c7gmTJWdmOo’,
‘3yR_Wuy8zZ0’,
‘0-6-0eflIZM’,
‘mER2vptlKe0’,
‘S0ZpA_ONE4c’,
‘uyzeaeW7XSM’,
‘utBcmaoiwW0’,
‘Job_jrkbMHQ’,
‘w2dGPRmjpIs’,
‘x0AQ32yyrR0’,
‘Ok_lJ48T9Ic’,
‘PFusDt3GyD8’,
‘ljNqIeBdONg’,
‘OLVdraY-6c8’,
‘fnEJ_JjD1BQ’,
‘cdrav5KntYM’,
‘Z0SIZ1bBqVs’,
‘Ygzjmd6ckHc’,
‘jZ-FDOBgf1k’,
‘QT_5T7ZeU_I’]
Vou usar essa lista de IDs para fazer uma consulta de endpoint de vídeos da nossa API. Para isso vamos criar uma nova lista chamada stats, na qual ficará armazenado as informações.
Para criar a lista, vamos usar o laço de repetição, que para cada consulta iremos extrair os dados estatísticos dos vídeos.
In [12]:
stats = []
for video_id in videos_ids:
res = youtube.videos().list(part='statistics', id=video_id).execute()
stats += res['items']
Se rodar a variável stats vamos gerar uma nova lista json, que irá conter informações com os dados sobre o número de visualizações, likes, favoritos e comentários.
In [13]:
stats
Já chegamos a um ponto ótimo, mas para fazer uma análise de dados profunda, não é interessante para mim, os dados estarem nessa estrutura. E é por isso que iremos transformá-lo em um dataframe, sendo mais performático.
Nos usaremos o mesmo recurso anterior, a função lambda, mas neste caso queremos extrair os dados de título da playlist, URL, data de publicação do vídeo, descrição, ID do vídeo, número de likes, comentários e visualizações.
In [14]:
videos_title = list(map(lambda x: x['snippet']['title'], playlist_videos))
url_thumbnails = list(map(lambda x: x['snippet']['thumbnails']['high']['url'], playlist_videos))
published_date = list(map(lambda x: str(x['snippet']['publishedAt']), playlist_videos))
video_description = list(map(lambda x: x['snippet']['description'], playlist_videos))
videoid = list(map(lambda x: x['snippet']['resourceId']['videoId'], playlist_videos))
liked = list(map(lambda x: int(x['statistics']['likeCount']), stats))
views = list(map(lambda x: int(x['statistics']['viewCount']), stats))
comment = list(map(lambda x: int(x['statistics']['commentCount']), stats))
Não podemos esquecer da informação de quando esses dados foram extraídos, para saber se estão atualizados. Vamos usar uma biblioteca chamada datatime.
In [15]:
from datetime import datetime
extraction_date = [str(datetime.now())]*len(videos_ids)
Já temos todas as informações para criar o dataframe, iremos utilizar um dicionário com uma chave para cada lista criada.
In [16]:
playlist_df = pd.DataFrame({'title':videos_title,
'video_id':videoid,
'video_description':video_description,
'published_date':published_date,
'extraction_date':extraction_date,
'likes':liked,
'views':views,
'comment':comment,
'thumbnail': url_thumbnails})
playlist_df.head()
Out [16]:
title | video_id | video_description | published_date | extraction_date | likes | views | comment | thumbnail | |
---|---|---|---|---|---|---|---|---|---|
0 | Tracker Talk - CORONAVÍRUS e porque Comunidade... | ghOkow0MXnA | Um bate papo aberto entre dois líderes de noss... | 2020-04-01T17:54:47Z | 2022-10-19 12:24:31.847419 | 0 | 67 | 0 | https://i.ytimg.com/vi/ghOkow0MXnA/hqdefault.jpg |
1 | Tracker Talk - Como a LGPD impacta a Análise d... | JU3cmPFFBcw | Um bate papo com os mentores da LabTrack espec... | 2020-04-08T01:13:33Z | 2022-10-19 12:24:31.847419 | 5 | 100 | 0 | https://i.ytimg.com/vi/JU3cmPFFBcw/hqdefault.jpg |
2 | Tracker Talk - A cultura DevOps como oportunid... | MrVcJPPeYJw | Um bate papo com o Jefferson Machado, analista... | 2020-04-08T01:13:56Z | 2022-10-19 12:24:31.847419 | 9 | 92 | 0 | https://i.ytimg.com/vi/MrVcJPPeYJw/hqdefault.jpg |
3 | Tracker Talk - Vendas na quarentena, o que fazer? | Mnf2Pcxn5xc | Um bate papo com o mentor da LabTrack Fernando... | 2020-04-15T01:20:06Z | 2022-10-19 12:24:31.847419 | 1 | 34 | 0 | https://i.ytimg.com/vi/Mnf2Pcxn5xc/hqdefault.jpg |
4 | Tracker Talk - A importância do Design no dese... | 54Fx9kG7vhQ | Um bate papo com os mentores da LabTrack, Gari... | 2020-04-16T01:32:56Z | 2022-10-19 12:24:31.847419 | 8 | 107 | 0 | https://i.ytimg.com/vi/54Fx9kG7vhQ/hqdefault.jpg |
A partir desse momento é fazer um tratamento e análise de dados, técnica que você poderá ver em outros artigos como Explorando dados do Airbnb, e assim encontrar padrões e gerar inteligência de mercado.
Pode parecer um pouco complexo, mas após criado a aplicação é só automatizar, e os dados já irão sair prontos. Claro que você pode puxar nesse momento dados de outros dataframes ou jogar para uma ferramenta de BI. Vai da sua estratégia de análise.
Volto a invocar aqui a sua reflexão ao estudo da documentação da API do YouTube, pois ainda há muitos outros dados e recursos a serem extraídos.
Arquivo Completo no Github
Oi, sou Hyan e aqui você vai encontrar tudo sobre marketing e tecnologia, assuntos esses na qual eu me dedico a aprender e me desafiar todas as manhãs.
YouTube • Marketing • API • Analise • DataMarketing • Dados • Google • Extração • Automatização • Playlist • Python
Produção: Zero.ai
Texto: Hyan Dias Tavares
Ilustração: Hyan Dias Tavares
Inspiração: Programação Dinâmica