;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Ricardo Cavallini

"YouTube acoppalipse": é difícil saber quem vai ganhar com as novas regras

Kon Karampelas/ Unsplash
Imagem: Kon Karampelas/ Unsplash

21/01/2020 04h00

Para quem não acompanhou, uma grande mudança está acontecendo no universo do streaming. Usando como base a Coppa, uma antiga lei federal dos EUA criada para proteger a privacidade online de crianças, o FTC (Federal Trade Commission), equivalente ao nosso Cade (Conselho istrativo de Defesa Econômica), começou a aplicar multas em aplicativos e plataformas. Foram US$ 5,7 milhões de multa para o TikTok e um acordo de US$ 170 milhões com o YouTube. A "sugestão" do órgão para que as plataformas parassem de fazer anúncio para crianças (até 12 anos) gerou mudanças drásticas no YouTube.

Em resposta, o YouTube obrigou todos os criadores de conteúdo do mundo a informar quais vídeos são feitos para crianças e aplicou regras diferentes nesses casos.

Entre as regras estão a eliminação de likes, comentários, stories, live chat, sino de notificação e parte dos anúncios. As alterações valem para o vídeo, ou seja, mesmo adultos não poderão comentar, dar like etc. As medidas são tão fortes que alguns estão chamando o caso de "YouTube acoppalipse" (junção entre Coppa, o nome da lei, e a palavra "apocalipse").

Quem ganha e quem perde?

Quem ganha com a mudança? Em uma primeira análise superficial, tirando as crianças, todos podem perder. Não se mexe em time que está ganhando e a mudança é grande. É risco para todos: marcas, youtubers e plataforma. De qualquer forma, esta é uma discussão relevante e todo mundo precisa se adaptar. A mudança em si é uma demonstração que o mercado publicitário demorou demais para se autorregular.

Mas talvez os maiores prejudicados sejam os canais infantis que ainda não têm musculatura, como, por exemplo, Varal de Histórias (129 mil s), Carol Levy (27 mil), Min e as Mãozinhas (24 mil) e Ticolicos (75,6 mil). A mudança pode significar a estagnação de muitos canais. Com as novas regras, será muito mais difícil para os canais infantis crescerem.

Ticolicos no YouTube - Reprodução/ Youtube/Ticolicos - Reprodução/ Youtube/Ticolicos
Cena de vídeo do canal Ticolicos no YouTube
Imagem: Reprodução/ Youtube/Ticolicos

O que muda para os youtubers maiores

Para um gigante como o Luccas Neto, pode ser catastrófico ou pode ser uma ótima notícia.

Na nova regra, os vídeos perdem target ads, mas não contextual. Para entender, target são anúncios voltados para um perfil de público. Por exemplo, uma loja de brinquedos pagar para mostrar anúncio para crianças de 8 a 12 anos. Contextual são anúncios baseados no conteúdo. Por exemplo, a mesma loja pagar para mostrar anúncio em vídeos que falam sobre bonecas. Anunciantes que buscam o público infantil não irão sair do YouTube. As marcas e os youtubers irão se adaptar.

O ponto é que, com as novas regras, será bem difícil surgir alguém para destroná-lo. Um paralelo interessante seria com a indústria de tabaco. Quem você acha que foi o maior beneficiado pela proibição de comerciais de cigarro? As marcas que não tinham dinheiro para propaganda ou as marcas que durante décadas investiram bilhões em propaganda se tornando líderes? Pois é.

Gostando você ou não, Luccas é a nova Xuxa. Depois dela, ninguém mais conquistou os baixinhos na mesma proporção. A Pesquisa Nacional por Amostra de Domicílios (Pnad) estima que existam 35,5 milhões de crianças (até 12 anos) no Brasil. Luccas tem 28,2 milhões de s em seu canal no YouTube. Mesmo contabilizando que parte disso venha de Portugal e outros países, tirando os bebês e os 30% que não am a internet, talvez ele seja ainda maior que a rainha dos baixinhos.

luccas neto youtube kids - Reprodução - Reprodução
Vídeo no YouTube Kids mostra embalagem de brinquedo licenciado da Disney apresentado pelo youtuber Luccas Neto
Imagem: Reprodução

Assim como os maiores esportistas ganham mais dinheiro com patrocínios que salários, os grandes youtubers fazem dinheiro sem ar pela propaganda "tradicional" do YouTube. São patrocínios, merchandising, posts, produtos próprios, licenciamentos e até outras frentes de entretenimento. Luccas já tem filmes na Netflix. Com tantas plataformas de streaming surgindo, ninguém está melhor posicionado que ele.

Outros gigantes podem não ter a mesma sorte. Canais como Turma da Mônica (13,5 milhões), Galinha Pintadinha (20,2 milhões), O Show da Luna! (2,3 milhões) e Mundo Gloob (2,2 milhões) são empresas que já exploram outras formas e formatos fora do canal. Neste caso, a receita do YouTube é complementar e muito relevante. E dificilmente poderão alterar seu conteúdo para buscar anúncios baseados em contexto.

Se você não gosta do Luccas Neto precisa esperar para comemorar, a mudança apenas começou, talvez ele saia ganhando. Também será necessário entender como serão os próximos os do FTC. Eles deixaram claro que poderão punir diretamente os youtubers, com multas de US$ 42 mil por vídeo. É esperar para ver o que irá acontecer nos próximos meses.