Русский
Русский
English
Статистика
Реклама

Медийная реклама

Как дата-саентисты в ВК делают рекламу эффективной

04.01.2021 16:19:24 | Автор: admin
Еще в прошлом году у нас выступал Артем Попов, тимлид команды VK Performance Advertising. Делимся с вами расшифровкой эфира и записью.




Меня зовут Артем, я руководитель performance advertising в ВК. Наша команда занимается тем, что, с одной стороны, делает рекламу в ВК эффективнее, выгоднее для рекламодателей, интереснее для пользователей. Это большая продуктовая цель.

С другой стороны, технически, мы команда ML-инженеров, довольно обычных разработчиков, которые много времени занимаются задачами, связанными с data science и ML. Сегодня я хочу поговорить про эти две темы, потому что обе они мне интересны, я о них люблю поговорить. Я очень рассчитываю на то, что у нас будет живое общение; если кто-то смотрит трансляцию, будет интереснее, если вы будете писать вопросы.

В целом, я хочу разделить нашу беседу на два блока. В первом я расскажу о разных задачах, которые встречаются в рекламе в пересечении с data science. То есть, почему реклама может быть интересной областью для ML-специалиста, для специалиста в области data science. С другой стороны, я хочу поделиться своим опытом перехода в инженерный ML-проект, тем, чему я учился те четыре года, которые занимался ML в рамках инженерной истории. И рассказать про то, какие вещи встречаются в больших компаниях, но про которые не рассказывают на разных курсах; какие есть скиллы, которым тяжело научиться, когда ты учишься data science или ML в рамках университета или онлайн-образования. Постараюсь уделить каждой теме по полчаса.

Сначала расскажу про рекламу, рекламные технологии, computational advertising как поле для исследований, научной и инженерной деятельности то есть, область знаний; какие задачи там бывают, и почему прикольно ими заниматься, когда есть NLP и прочие хайповые штуки, а про рекламу не так часто говорят.

Общая задача звучит так: у нас есть набор рекламодателей. Ими могут быть любые пользователи, которые хотят продвинуть знание о своем продукте, своем бизнесе. У них у всех есть свои собственные, различные цели. Кто-то желает просто показать свою рекламу как можно большему количеству человек; например, у условной Кока-колы задача сделать так, чтобы все знали про их бренд, чтобы все помнили, что такой напиток есть, что сейчас новый год, и нет другой альтернативы, кроме этого напитка, если вы идете в магазин. Другой хороший пример Fairy: сколько вы знаете других моющих средств, кроме него? Это все brand awareness; крупные рекламодатели ставят цель сделать так, чтобы у всех в голове осталось знание о том, что существует определенный продукт.

Есть другие цели. Например, более прикладные, так называемые performance-цели. Это когда рекламодатель хочет, чтобы вы перешли за рекламой и сделали какое-то действие. Например, зашли на сайт и оставили заявку на кредит. Или купили что-то в интернет-магазине. И так далее.
В целом, задача рекламы приносить новых пользователей какому-то бизнесу (так называемых лидов) и делать так, чтобы эти пользователи делали что-то полезное для рекламодателя и приносили прибыль его бизнесу.

У нас есть площадка место, где мы позволяем показывать рекламу. В случае с ВК это лента; в случае какого-то другого сайта это может быть, например, баннер. Цель площадки заработать денег на рекламе, она продает внимание пользователей за деньги. Благодаря этому ВК остается бесплатным проектом; можно было бы придумать другие модели монетизации, но рекламная модель хорошо работает для подобного сервиса.

Пользователи обычно не хотят видеть рекламу: они пришли на сервис не для этого. Но получается, что рекламный контракт работает именно так: пользователь платит своим вниманием за пользование сервисом. Поэтому наша цель как рекламной сети сделать так, чтобы пользователи не бесились, реклама их не отталкивала и не отпугивала.

Было бы совсем шикарно, если бы реклама оказывалась полезна для пользователя то есть, продвигаемые бизнесы и записи оказались так же интересны пользователю, как обычный контент. Это вообще идеально.

У нас есть три силы: пользователь, рекламодатель и площадка. Мы должны наладить между ними такое взаимодействие, чтобы каждая из них выполняла свои цели. Представьте: вы заходите на сервис ВК, открываете ленту и видите то место, куда мы вставляем рекламу. Есть много рекламодателей, которые претендуют на этот ресурс и хотят, чтобы показали именно их рекламу но как выбрать ту рекламу, которую нужно показать в каждый конкретный момент каждому пользователю?

Стандартный способ, который активно используется в рекламе это онлайн-аукцион. Возможно, вы видели различные варианты аукциона в реальной жизни или на Ebay, например: это может быть ситуация, когда каждый может сделать ставку. Один пользователь говорит я ставлю 10 рублей, приходит другой ставит 20, третий 100, и так далее. Но аукционы рода кто больше заплатил, тот и выиграл непрактично проводить в интернет-среде, поэтому используются аукционы закрытого типа. В таком случае каждый из участников делает ставку молча. Образно говоря, все бумажки со ставками складываются в котел, а потом кто-то приходит, разбирает их, находит бумажку с самым большим числом и говорит ты победил.

Допустим, есть два рекламодателя например, Nike и Coca-Cola. Один из них готов заплатить за каждый показ 5 копеек, а другой 10. Второй выигрывает, и дальнейшее развитие истории зависит от типа аукциона. В рекламе встречается два основных типа: аукцион первой и второй цены. В аукционе первой цены победитель платит ту цену, которую он назвал. Например, Coca-Cola говорит: Я заплачу 10 копеек, не видя ставок других пользователей; аукцион говорит ОК, 10 копеек. Nike говорит: 5 копеек, Coca-Cola выигрывает и платит 10 копеек.

Однако есть еще аукцион второй цены: в этом случае победитель должен заплатить ровно столько денег, сколько нужно, чтобы победить все остальные ставки. В нашем случае может использоваться шаг в 1 копейку, например. Представьте ситуацию: приходят те же Coca-Cola и Nike. Coca-Cola говорит: Я готов заплатить 100 рублей за показ, а Nike говорит: Я готов заплатить 1 копейку. И Coca-Cola будет очень обидно узнать о том, что она могла бы победить, заплатив 2 копейки вместо 100 рублей. Аукцион второй цены считается более честным по отношению ко всем участникам.

Исходя из этого, для рекламодателя очень важным считается определенной свойство: всегда выставлять на аукционах честную максимальную цену, которую ты готов платить за показ. Это необходимо для выстраивания любой грамотной стратегии торговли.

В аукционе первой цены нужно придумывать хитрую стратегию, думать вот, такие-то рекламодатели могут поставить столько-то, но в аукционах второй цены этого делать не надо. Каждый ставит ту ставку, которую готов заплатить по максимуму. Если ты победил ты платишь ровно столько или меньше; если нет значит, ты не готов был платить больше. Это великолепное свойство такого типа аукционов, которое распространилось из теории на повсеместное использование в рекламных системах.

Однако, не тут-то было. Казалось бы, с точки зрения теории, аукцион второй цены очень хорош, и его свойства позволяют ему быть очень практичным. Но на деле, когда мы сталкиваемся с реальными системами, оказывается, что есть несколько моментов, обеспечивающих популярность аукционов первой цены почему-то люди предпочитают использовать именно их, а не аукционы второй цены. Один из двух главных моментов, про которые хочется сказать это то, что аукцион второй цены непрозрачен. То есть, когда рекламный аукцион устраивает какая-то площадка, о которой вы ничего не знаете вы просто участвуете как рекламодатель она говорит вам, что ваша ставка в (допустим) 10 копеек выиграла, и вы должны заплатить вторую цену пусть это будет 9 копеек. Эта вторая цена непрозрачна; непонятно, откуда она взялась. В целом, площадка может легко обманывать рекламодателя, делая так называемые фейковые ставки. Есть и честные механизмы дополнительных ставок например, reverse price: вы заявляете, что конкретный аукцион нельзя продать дешевле, чем за 9 копеек, и появляется такая честная ставка. Но прозрачность очень важна, и ее отсутствие отталкивает рекламодателей. Когда вы не знаете, что происходит под капотом рекламной системы, снова приходится придумывать какие-то стратегии: нельзя просто брать и использовать подход с установкой только тех цен, которые вы готовы заплатить.

Второй момент это то, что аукцион второй цены хорош в идеальной обстановке, когда одновременно происходит только один аукцион. В реальной рекламной системе их происходят миллионы в секунду, условно. В таких условиях уже нужно придумывать стратегии, и идея о том, что у рекламодателя всегда есть простая и готовая стратегия для идеальной торговли на аукционе, ломается.

Хочется рассказать о моментах, возникающих на фоне задач дизайна аукционов как можно дизайнить их интереснее, полезнее и так далее. Я хочу упомянуть два пункта. Во-первых, в аукционе вроде бы все должно происходить, исходя из максимальной ценности, максимального количества денег, которые заработает рекламная сеть, продавая место; однако на деле ценность, которая продается в аукционе, может для площадки выражаться по-разному не только в сумме, которую готов заплатить рекламодатель. Например, нам очень важно, чтобы пользователей не бесила наша реклама желательно, чтобы она была полезна для них. В рамках задачи дизайна аукциона приходится придумывать дополнительные метрики для ранжирования рекламы. Получается ряд метрик: ожидаемая прибыль, вероятность негативной реакции пользователя и так далее.

Второй вариант задачи это нежадный аукцион. В этом случае мы понимаем, что мы, как рекламная сеть, могли бы заработать больше, если бы мы не продавали всегда рекламное место победителю, а распределяли их между всеми рекламодателями так, чтобы по максимуму потратить все их рекламные бюджеты, при этом оставляя какую-то честность в рамках аукциона. То есть, если у нас есть несколько рекламодателей, и один из них богаче остальных и постоянно выкупает аукционы, то, возможно, следует не отдавать ему всегда ставку победителя. Такая задача о рюкзаке может быть, вы помните такие из курсов по программированию или алгоритмам структуры данных, если у вас была такая история. Это очень прикольная задача, ею очень интересно заниматься, и по ней есть научные статьи.

В ВК мы еще только подбираемся к этой задаче; задач у нас очень много, и еще одна большая часть задач, которые есть в рекламе, уже стоит ближе к ML. Из-за того, что мы должны выполнять различные цели рекламодателей, нам нужно предсказывать, с какой вероятностью пользователь совершит то или иное действие, чтобы использовать это знание в формировании стратегии ставок на аукционе.

То есть, рекламодатель говорит: я хочу как можно больше покупок в моем магазине, потрать мой бюджет максимально хорошо. Мы, как рекламная площадка, думаем, как выделять тех пользователей, которые с высокой вероятностью купят что-то в магазине. Возникает типичная ML-задача. Бинарная классификация: 1 пользователь перешел по рекламе и что-то сделал хорошее (купил), 0 пользователь проигнорировал рекламу. Нам надо, исходя из этой задачи, построить бинарную классификацию, где на выходе мы используем вероятность полезного события как кусочек дальнейших вычислений того, какую ставку мы будем использовать на аукционе. Задача звучит очень банально в терминах ML вроде бы, бери и делай. Но в реальной жизни у такой задачи бывает множество сложностей, и я расскажу о нескольких. Главная из них это то, что реклама обычно является высоконагруженным проектом. Как по данным, так и по нагрузке. Нужно очень быстро отвечать на запрос. Окно, допустим, в 100 миллисекунд и нужно успеть ответить. Исходя из этого, на нас накладываются определенные ограничения конкретно, на то, как инженерно могут работать те модели, которые мы используем для предсказания рекламы. Можно придумать много прикольных штук, сделать сложные нейросети, которые через несколько слоев выделяют нелинейные взаимодействия между фичами, но в жизни требуется, чтобы это все работало очень быстро.

Обучается это на больших объемах данных. Задача получается высокомасштабная, с терабайтными датасетами. Исходя из этого, обычно приходится заниматься такими вещами, как распределенные вычисления, распределенное обучение модели, думать о том, какие модели вообще использовать. В рекламе традиционно используются линейные модели, типа логистических регрессий или градиентного бустинга; иногда переходят на более крутые штуки, вроде factorization machines. То есть, выбор моделей велик, но обычно используются довольно простые из-за большой нагрузки.

Другой, близкий к ML момент: у нас используются данные, которые экстремально несбалансированы по фидбеку. На 10000 нулей приходится одна единица. Как в этих условиях обучать машины ML это хороший вопрос. Приходится использовать разные трюки; основной это именно формулировка задачи: не пытаться предсказывать, будет ли клик (покупка) или нет, например, а использовать подходы, связанные с вероятностями, сглаживать по максимуму данные, у которых низкая кардинальность, и так далее. Многое можно придумать, но сложность в том, что в задаче редко происходят позитивные события.

Когда вы переходите по рекламе и что-то покупаете, вы не всегда делаете это сразу. То есть, очень часто целевые события, которых хотят рекламодатели, происходят с большой задержкой. Это может быть не только покупка например, это может быть регистрация в игре и прокачка персонажа до 10 уровня, или одобрение заявки на кредит. Такие вещи могут происходить через несколько дней. И, когда нам нужно обучать модели, которые, по объявлению, прямо сейчас должны сказать, что пользователь что-то сделает, но, по факту, позитивный фидбек мы получаем только через несколько дней после того, как что-то произошло, и это создает дополнительные проблемы. Чтобы разбираться с этими проблемами, есть несколько разнообразных решений, которые придумали в науке и в практике. Такая забавная сложность.

Еще один момент: когда пользователь видит рекламы определенных продуктов, он может соприкасаться с ними из различных маркетинговых каналов. Например, вы вышли на улицу увидели рекламный щит Такси ВКонтакте; стали листать ленту там тоже реклама Такси ВКонтакте, зашли в другой сервис и там тоже реклама Такси ВКонтакте, от рекламного сервиса Яндекса или Google. Вы говорите да я понял уже, ставите приложение. И после этого Яндексу, ВК, Google, рекламному щиту нужно разобраться, чье участие в этом процессе в полезном для рекламодателя действии составляет сколько процентов.

Этот процесс называется атрибуция вопрос распределения того, какой контакт с рекламодателем настолько сильно повлиял на ваше решение сделать целевое действие. Обычно используются простые модели например, last click attribution: последняя реклама, на которую вы кликнули, получает все призы. Но тогда оказывается, что заниматься первым холодным контактом показом рекламы пользователю, не знакомому с продуктом невыгодно. Исходя из этого, есть много разнообразных моделей ML (в том числе), которые позволяют лучше распределить профит с показов. Там используются, в том числе, фишки типа attention, некоторые более интересные штуки из нейронных сетей. Прикольная задача. И ее цель, по итогу торговаться на аукционе лучше, правильнее, корректнее и так далее.

Чем лучше вы понимаете, кто повлиял на итоговое решение о покупке, тем лучше вы понимаете, сколько в каждый момент поставить. По итогу вся индустрия идет к пониманию того, что работать с предсказанием вероятности того, что вы что-то купите, менее эффективно, чем работать с идеей степени влияния на решение о покупке. Возможно, вы и так уже были готовы купить настольную игру, на сайт которой вы зашли. Но интернет-реклама начинает вас догонять. Может быть, этой рекламы бы и не было, если бы все изначально решили, что вы и так купите эту игру, и дополнительная реклама не нужна вы уже сделали свое решение. Я вспоминаю термин incrementality testing, и все это еще связано с такой областью ML, как causal inference. То есть, мы переходим от задачи предсказания вероятности совершения целевого действия на предсказание влияния то есть, разницы вероятности того, что вы купите, увидев рекламу, минус того, что вы и так уже купили. Это тоже очень прикольный переход, переход на новую идею о том, как работать, как предсказывать какие-то события.

В целом, в рекламе очень много задач, и почти все они следуют из исходного желания выполнить задачу рекламодателя. Цель Я хочу как можно больше покупок в моем магазине превращается в последовательность ставок на аукционе, потому что все рекламодатели рубятся на аукционе за показы. Это стратегия. И нам нужно сделать максимально классный переход от исходной цели к последовательности ставок. Из этого следует желание понимать поведение пользователей, извлекать коммерческие интересы, автоматически таргетировать рекламу, собирать креативы это то, как реклама выглядит и так далее.

Если кому-то интересно узнать про это поподробнее у меня есть выступление на митапе, там я подробно рассказываю о том, что data scientist-у делать в рекламе, и почему работа над ней может быть интересной. Для меня это оказалось открытием. Изначально, когда я только пришел в индустрию, я думал ну, реклама, что интересного. Прошел первый, второй, третий год и я осознал, сколько здесь классных задач, и как этим интересно заниматься с точки зрения инженера.

Теперь я перейду к ML in production. Вот вы прошли курсы по машинному обучению, или проучились в университете. Вы отличный специалист по Kegel, допустим, и офигенно щелкаете задачи по анализу данных на соревнованиях. Вы приходите в реальную компанию, где итеративно, последовательно развивается большой продукт. И здесь происходит некоторый слом. Оказывается, что у вас просто нет многих скиллов, которыми хотелось бы владеть на тот момент, когда вы приходите в индустрию. Вас никто этому не учил и не объяснял, как это работает в реальности; какие в индустрии сложности, как это не похоже на решение задач с четкой формулировкой. Если в области программирования про это еще рассказывают довольно много, то в области data science недостаточно.

С какими трудностями сталкиваются новички в продуктовых командах, которые долгое время работают над одним и тем же продуктом например, делают рекламу в ВК эффективной? Под новичками я имею в виду себя, в том числе; я четыре года этим занимаюсь и до сих пор чувствую себя нубом. Это очень сложная вещь, и в ней интересно разбираться.
Первый момент, про который хочется сказать это желание приступить к имеющейся задаче сразу с каким-то крутым прогрессивным методом, который можно найти в науке; желание придумать космолет, который сразу все сделает классно. В реальной жизни, в области продуктовой разработки, data science это место, где мы очень слабо можем предсказывать, какой метод в итоге сработает. Очень тяжело работать с изначальными продуктовыми требованиями, потому что вы не знаете путь решения проблемы.

У вас есть формулировка задачи: например, сделать систему автоматической модерации, которая должна решать какие-то изначальные проблемы. Можно побежать и найти какую-то супер-топовую статью, в которой задача решается идеально, накрутить трансформеров. А можно сделать простую эвристику, которая будет смотреть на то, сколько раз мы одобряли данного рекламодателя ранее, брать долю этого числа, сравнивать с 70%, например, и говорить: этот часто раньше одобрялся. Такая штука может сразу очень сильно помочь бизнесу, принести полезную информацию. А сложная система делается долго, и не факт, что она окупится. В data science надо очень быстро приходить к такой идее: вы постоянно работаете в режиме гипотез, не знаете, что сработает, и для того, чтобы сокращать риски и как можно быстрее доносить ценность итоговому пользователю и бизнесу, нужно заниматься задачами от простого решения к сложному. Зачастую заниматься, начиная с эвристик, без всякого ML для него может и не быть данных. Это может коробить data scientist-а, которому интересно крутить нейронные модели. Но без этого не получить изначальный baseline шажочек, от которого можно отталкиваться. Можно очень долго заниматься тем, что вообще не сработает.

Самая сложная вещь и необычность работы в индустрии это то, что после того, как вы сделали модель, выкатили ее в production, ее жизнь только начинается. Ее нужно активно поддерживать и менять. С моделью, пока она живет, происходит большое количество разнообразных изменений. Во-первых, есть такая вещь как training serving skew.

По-простому: если модель работает в production на определенных данных, или множестве генеральных совокупностей задач, которые ваша модель должна решать а обучалась она на других данных, полученных другими способами то в этом месте часто происходят ошибки, и модель начинает плохо работать. В идеале, нужно выстраивать систему, в которой модели при аналитике и при первоначальной подготовке обучаются на тех же самых данных, на которых они будут работать в production.

Во-вторых, в любой момент может какой-то признак, или сама модель, начать работать неправильно, неадекватно. У вас есть хранилище, в котором хранятся признаки; что-то поменялось, вместо нулей начали литься null, вместо -1 стали возвращаться другие значения; или кто-то умножил эти значения на 100, потому что думал, что это проценты, а не доли. И ваша модель резко начинает работать неправильно. Вам нужно эти изменения как-то замечать. Самое прикольное качество ML-модели это молчаливая ошибка; она никогда не скажет, что что-то пошло не по плану она всегда выдаст какой-то результат, в зависимости от того, что вы ей дали. Garbage in, garbage out. За этим надо как-то следить. Исходя из этого, есть гигантское количество моментов, которые нужно отслеживать во время работы модели в production. Нужно выстраивать систему мониторинга, следить, чтобы распределение признаков сильно не менялось, и так далее. Надо понимать, что модель может в любой момент выдать полную дичь, и как-то жить в этих условиях. Что, если эти результаты напрямую снимают деньги с наших пользователей делают ставки на аукционе рекламы, или торгуются на бирже, или еще что-то? Есть большое количество способов того, что с этим делать, но про это в первую очередь важно думать.

Как, исходя из этого, меняется жизнь data scientist-а, который приходит в среду, где надо итеративно развивать модели? Как мне кажется, нужно в первую очередь быть хорошим инженером, а уже во вторую хорошим researcher-ом. Потому что твой код и твои выводы, инсайты, которые ты получаешь в ходе исследования и анализа, твои модели все, что является продуктом твоей работы data scientist-а будет использоваться не 2, и не 10 раз. Много людей будет смотреть на то, как выстроены эксперименты, как получены результаты, почему, где, как что работает, и как это используется в production. Поэтому то, чего по максимуму не хватает в людях, которые приходят в индустрию с нуля например, из университета, увлекшись темой data science, или аналитики, или ML это инженерные скиллы. В первую очередь data scientist это подвид разработчика. Он тоже работает с кодом, он тоже работает с чем-то, что работает потом в production в изменяемой среде, что используют люди. Твой код будут читать. Тебе нужно будет придумывать эффективные, хорошо поддерживаемые и тестируемые решения. Это та часть, которой большому количеству кандидатов не хватает. Поэтому, если вы начинающий человек в data science, уделите большое внимание скиллам разработчика. Тому, как писать эффективный, понятный, хорошо поддерживаемый код; инженерным решениям для того, чтобы эффективно выстраивать процессы обмена данными. Это все вам сильно поможет в карьере.

Второй совет и вторая штука, которая отличает крутых data scientist-ов от тех, которым тяжело работать это погружение в продуктовый контекст и в инженерную часть окружения вашей модели. Допустим, вы разрабатываете модель, и вам, как data scientist-у, легко сказать: Мое дело разрабатывать модель, все остальное за пределами моей ответственности. Я обучаю модельки, это мое дело. Встроит их бэкэндер, подготовит данные дата-инженер, оттестирует тестировщик, продукт-менеджер решит, как применять. Но огромное количество выводов и способов того, как сделать модель круче и ценнее, находится за пределами процесса разработки самой модели. Пример: если вы ранжируете поисковую выдачу, то вы ранжируете документы, поступающие извне; есть какой-то отбор кандидатов. Если вы знаете, как этот отбор работает, то вы можете легко понять, что узкое место в работе это не то, что модель плохо работает, а то, что на вход подаются неправильные, неинтересные, неполные документы. С другой стороны, если вы знаете, что в вашем продукте ваша модель может, при определенных обстоятельствах, работать не так, как хотелось бы, но сделать эту работу лучше очень сложно, то можно поменять продукт под модель. Можно сказать: теперь продукт устроен по-другому, теперь не пользователь вызывает модель, а модель вызывает какой-то автоматический инструмент, который координирует несколько параметров, за которыми пользователь не может следить. Идея в том, что можно менять продукт под модель, а не наоборот. Если вы погружены в эти области, то вы, как data scientist и ML-инженер, можете приносить колоссальную прибыль и пользу вашему продукту и вашим пользователям.

Возвращаясь к вопросу о том, что ML это сфера предположений. Мы никогда не знаем, как конкретно прийти к классно работающему продукту, нам приходится пробовать разные пути к финальному решению. Поэтому нужно немного по-другому выстраивать workflow работы. Зачастую людям, особенно инженерам в начальные периоды развития карьеры, кажется, что всякие менеджерские фишки SCRUM, Agile это все фигня, и они не работают. Хотя зачастую они действительно не работают, потому что используются в неправильном контексте. Например, если вы когда-нибудь попадете в data science-команду, работающую по SCRUM, вам станет тяжело и больно. Внезапно окажется, что рисерч стал тяжело прогнозируемым, и вы не будете знать, как вы придете к результату, а тут двухнедельные итерации, еще что-то, в общем, менеджмент генерирует ненужную фигню. Рабочие процессы, в рамках которых вы работаете, должны помогать вам, а не мешать. То есть, когда в data science берут и прикладывают методы из обычной софтверной разработки, это не всегда получается эффективно.

Поэтому я хочу отдельно сказать: если вы работаете data scientist-ом, и вам приходится взаимодействовать с разными людьми заказчиками, коллегами, кооперироваться по работе то вам хорошо бы озаботиться пониманием того, как лучше выстроить процесс совместной работы, самоорганизованную деятельность команды. Хороший способ понять, как это делать я бы рекомендовал обратиться в сообщество, которое называется LeanDS. Там собрались такие люди, которым интересно понять, как лучше выстраивать процессы работы над ML-задачами в условиях продуктовой разработки. Оттуда можно узнать много прикольных штук, которые люди уже придумали, и разные специалисты используют в разных компаниях. И из того, что я бы посоветовал, в первую очередь надо перейти к подходу, когда вы все задачи формулируете через продуктовые гипотезы. Когда вы не знаете, что принесет результат, но прикидываете: я думаю, что такая-то штука поможет настолько-то продвинуть пользовательские задачи, прокачать метрики, и за такое-то время это можно проверить. С такими гипотезами гораздо проще работать. Исходя из такого непонятного флоу работы, где очень тяжело прогнозировать, сколько времени займет ваша задача, когда вы придете к результату, и каким способом, на мой взгляд, очень хорошо работает Kanban. Я не буду долго про это рассказывать, просто посоветую: попробуйте посмотреть на сообщество LeanDS. Посмотрите их материалы. Я думаю, всем, кто работает в data science и сталкивается с процессами, которые перекочевали из обычной разработки, будет интересно понять, что можно делать по-другому и как использовать процессы в свою пользу.

В качестве итога расскажу, чего не хватает ребятам, которые на старте карьеры приходят заниматься задачами data science, и как вы можете стать круче как специалист и повысить шансы на получение работы в том месте, которое вам будет нравиться.

Во-первых, как я уже говорил, инженерные навыки для data scientistа очень важны. Не менее, чем навыки, связанные с ML, анализом данных, теорией вероятности и так далее. В первую очередь желаю вам быть крутым инженером, во вторую рисерчером. Второе: очень многим не хватает четкого скилла переформулирования бизнес-задачи в data science-задачу. Это отдельный скилл. Это ситуация, когда нужно понять, чего конкретно от вас хочет заказчик ну, назовем так человека, который хочет, чтобы что-то круто работало. Возвращаясь к примеру с автомодерацией: чего конкретно он хочет? Ведь задачу автомодерации можно поставить очень по-разному, с разными конкретными вещами, которые мы хотим сделать лучше в нашей системе. Исходя и задачи, по-разному формулируется data science-задача; исходя из data science-задачи, по-разному формулируются оптимизируемые метрики, способ подбора датасета, оценки качества и так далее. Этот скилл очень ценен для всех data scientist-ов. Допустим, заказчик говорит, что у него модераторы не справляются с потоком обработки задач на проверку того, хороша ли реклама или ее нужно забанить с определенной тематикой. Потом вы узнаете, что есть множество разных причин бана, и при модерации надо четко их описывать, чтобы рекламодатель мог исправить рекламу. Исходя из этого, вы решаете, что надо делать какую-то многоклассовую классификацию, которая будет генерировать текст объяснения причины, и задача будет очень сложной. Но подождите может быть, задачу можно переформулировать по-другому. И оказывается, что можно концентрироваться не на том, чтобы отклонять рекламу, а на том, чтобы выбирать нужную рекламу. Если реклама хорошая ее можно просто пропускать, если плохая ее можно отдавать живым модераторам, и никакого объяснения не нужно генерировать. Исходя из этого, вы понимаете: если нужно сконцентрироваться на том, что хорошее, что можно пропускать, то надо понять, как управлять этим делом этим потоком объявлений, который будет проходить через вашу систему. Вы понимаете: ага, исходя из этой задачи, я могу выбрать ROC AUC как подходящую мне метрику, она хорошо описывает зависимость между точностью работы модели и количеством объявлений, которое будет автоматически проходить через нашу систему. И так далее. То есть, исходя из этого диалога условного заказчика и вас, как специалиста, вы можете сильно упростить свою задачу, хорошо понимая, как переформулировать бизнес-задачу в data science-задачу.

Я хотел бы рассказать об еще одной штуке, которая очень помогает. Это понимание того, какие конкретно сигналы передаются в модель, которую вы разрабатываете, в виде признаков, и как она их обрабатывает. Это скилл, который напрямую относится к компетенции команды ML-разработчиков. Почему-то очень многие кандидаты, по моему опыту, исповедуют подход ML все съест положил все в градиентный бустинг, и так сойдет. Я утрирую, но, в целом, очень классно, когда вы четко понимаете, что признак, который вы используете, несет в себе ровно ту информацию, которую вы передали, а не ту информацию, которую вы планировали передать.
Например, вы решили, что хорошим показателем того, что пользователь реагирует на рекламу, будет соотношение кликов и показов. То есть, берем количество увиденной рекламы за все время и количество кликов на рекламу, делим одно на другое и получаем показатель пользователя. В одном случае он говорит, что пользователь любит кликать на рекламу, в другом что он вообще не кликает. И передаем это число в нашу модель градиентный бустинг или линейную регрессию. Потом может возникнуть мысль: у модели же нет способа отличить тех пользователей, по которым у нас много статистики, от тех, кого мало. Единица в показателе может означать не то, что пользователь всегда кликает на рекламу, а то, что у него был всего один показ. Возникает вопрос: как представить эту фичу в таком виде, чтобы модель отличала большое количество статистики от малого? Первое, что приходит в голову положить в модель количество показов объявления. Можно просто положить количество показов, но зависимость нашей уверенности в статистике от количества показов рекламы у пользователя нелинейная. Получается, что нужно класть не просто показы, а квадрат или логарифм показов. Потом оказывается, что, если у нас линейная модель, то эти две фичи никак друг с другом не взаимодействуют. Нельзя будет делать схемы вида если у пользователя такое-то количество статистики, то мы верим ей на столько-то, используем фичу с таким-то весом. Такие связи линейная регрессия не умеет строить, но градиентный бустинг умеет. Или можно переформулировать фичу. Можно вместо сырой статистики сглаживать ее, использовать подходы из байесианских переходов, добавить какое-то априорное знание того, как пользователи кликают в среднем, и с помощью определенной формулы их смешать. И так далее. Получается, что очень важно понимать, какой конкретно сигнал вы передаете в качестве признака.

И второе очень важно знать, как этот признак будет использоваться в модели. В линейной регрессии он будет использоваться по одному, в градиентном бустинге по-другому, а, если это нейронная сеть, то она работает с другим видом данных, и как там работает контекст.
Необязательно знать, как конкретно работает модель, но нужно интуитивное понимание того, что возможно, а что нет. Это классный скилл для ML-специалиста. Если вы спросите меня, как работает какой-нибудь конкретный алгоритм в градиентном бустинге, то мне будет тяжело объяснить в деталях, но на пальцах у меня это получится. И в большинстве практических ситуаций этого достаточно, чтобы эффективно пользоваться инструментом.

Под конец хочется посоветовать всем использовать в реальной жизни, в продуктах такой итеративный подход, когда вы двигаетесь от простого к сложному. Начинаете с простых гипотез, которые быстро проверяются, и потихоньку приходите к тем самым сложным, интересным научным статьям. А тогда бейслайн уже готов, и можно уже статью написать для KDD, например.

Я хочу сказать еще может быть, мне помогут; у меня есть два выступления на митапах. Одно посвящено тому, какие data science-задачи можно делать в рекламе (и вообще, почему data science-специалистам рекламные технологии могут быть интересны как плацдарм для применения своих скиллов с интересными инженерными вызовами). А второй рассказ про ловушки, в которые мы попадали как команда ML-разработчиков системы, про то, как мы из них выбирались, и то, как вам не попадать в те же ловушки, в которые попадали мы из-за отсутствия накопленного опыта. Хочется этим опытом поделиться. Я думаю, тут можно много полезных вещей для себя выяснить.

И еще до этого я говорил про сообщество LeanDS, посвященное data science-процессам, управлению проектами data science в ML. Тоже очень советую посмотреть на их материалы, ребята делают очень крутые штуки.

Случалось ли строить полную модель воронки продаж?


На самом деле, нам не случалось этим заниматься. Но здесь очень важно, чтобы внешний рекламодатель все очень хорошо настраивал. Поэтому воронками продаж хорошо заниматься, когда вы data scientist со стороны рекламодателя. Допустим, вы работаете в крупной компании, которая работает с большим количеством маркетинговых каналов, и пытаетесь построить аналитику, которая позволит вам хорошо понять, как конкретно разные маркетинговые каналы работают, как хорошо выстраиваются воронки продаж и так далее. Нам же, со стороны ВК как системы для рекламодателей, при работе с такими штуками очень важно, чтобы у рекламодателя все было хорошо настроено. Чтобы рекламные пиксели всегда отдавали правильную информацию о том, как пользователь зашел на сайт, добавил что-то в корзину и купил. И дальше мы должны использовать эту информацию для того, чтобы делать рекламные стратегии лучше и эффективнее. Хочется этим позаниматься; мы практически этим не занимались, потому что настройка таких систем зачастую тяжело дается для рекламодателя. Наверно, проще заниматься этим, когда есть полный контроль.

И такой вопрос: как связать сущности (задать признаки) при построении модели?


Например, посетитель сайта -> клиент

Наверно, хорошо просто исходить из какой-то предыдущей активности пользователя. В целом, это делается разными способами; я могу рассказать про один, который используется при построении рекламных систем, называется он look-alike. Возможно, вы про него слышали. Это ситуация, когда мы говорим: вот пользователи, которые посетили наш сайт, и вот те, которые что-то купили. Давайте посмотрим на то, какие пользователи наиболее похожи на тех, которые что-то купили, и меньше похожи на тех, кто ничего не сделал. Когда мы обучаем такую модель, где 1 это те, кто купил, 0 те, что ничего не сделал, а условно 0.5 это те, кто зашли на сайт, мы можем научиться ранжировать всех пользователей нашей системы по похожести на потенциального клиента. Мы можем использовать это знание в нашей модели и рассказывать клиенту о том, какие признаки, с точки зрения модели, отделяют клиентов от простых посетителей.

Подробнее..

На что соглашается человек, когда разрешает все куки

25.02.2021 00:07:45 | Автор: admin
Люди не читают инструкций. Вы почти наверняка не читали лицензионное соглашение Windows, не читали лицензионное соглашение iTunes, не читали условия Linux GPL или любого другого программного обеспечения.

Это нормально. Такова наша природа.

То же самое происходит в интернете. В последнее время благодаря GDPR и другим законам часто приходится видеть всплывающие сообщения, где вас спрашивают разрешения на использование cookies.



Большинство нажимает Согласиться и продолжает жить как ни в чём ни бывало. Никто ведь не читает политику конфиденциальности, верно?

Разработчик Конрад Акунга (Conrad Akunga) решил разобраться, какие конкретно условия предусмотрены соглашением об использовании. Для примера он взял новостной сайт Reuters. Это абсолютно произвольный пример, у большинства других сайтов тоже есть свои правила.

Вот эти правила:


Обратите внимание на полосу прокрутки. Дальше идёт продолжение.

Ещё шесть экранов с текстом











Если вкратце, документ информирует пользователя о нескольких вещах:

  • Что веб-сайт собирает и обрабатывает данные
  • Что для этого он работает с различными партнёрами
  • Что сайт хранит некоторые данные на вашем устройстве с помощью файлов cookie
  • Что некоторые файлы cookie строго необходимы (определяется сайтом). Их нельзя отключить.
  • Некоторые персональные данные могут быть проданы партнёрам для предоставления соответствующего контента
  • Вы можете персонализировать рекламу, но не удалить её

Вероятно, все эти запутанные меню компания разработала, чтобы создать некую видимость прозрачности, открытости к диалогу. Но вы всё равно не можете отключить основные cookie, поскольку они нужны для работы сайта.

Вы также не можете полностью отключить рекламу. Таким образом, ваш единственный выбор либо смотреть рекламу, выбранную случайным образом, либо рекламу, которая, по мнению провайдера, может иметь к вам какое-то отношение.

И ещё один пункт о партнёрах, которым продаются ваши персональные данные. Список партнёров общий для всех сайтов, которые сотрудничают с IAB.

Кто же эти партнёры?

Если нажать на соответствующую кнопку, то появится следующее окно:


Обратите внимание, насколько маленький ползунок на полосе прокрутки. Наверное, там их сотни. Под названием каждой компании ссылка на политику конфиденциальности.


Это не одна и та же ссылка, а разные! Каждая из них ведёт на уникальную политику конфиденциальности каждого партнёра. Сколько человек на самом деле пойдёт по этим ссылкам вручную, чтобы прочитать условия? Это просто нереально.

Конрад Акунга воспользовался инструментами разработчика Chrome, чтобы извлечь реальный список партнёров со ссылками на условия конфиденциальности каждого из них.



Скопированный список он вставил в VSCode и получил огромный файл на 3835 строк, который после форматирования (Alt + Shift + F) разбился в чудовище на 54 399 строк.



Конрад написал программку, которая с помощью регулярных выражений извлекает нужные фрагменты данных названия компаний с URL и генерирует результат в формате Markdown по шаблону.

Log.Logger = new LoggerConfiguration().WriteTo.Console().CreateLogger();// Define the regex to extact vendor and urlvar reg = new Regex("\"vendor-title\">(?<company>.*?)<.*?vendor-privacy-notice\".*?href=\"(?<url>.*?)\"",RegexOptions.Compiled);// Load the vendors into a string, and replace all newlines with spaces to mitigate// formatting issues from irregular use of the newlinevar vendors = File.ReadAllText("vendors.html").Replace(Environment.NewLine, " ");// Match against the vendors html filevar matches = reg.Matches(vendors);Log.Information("There were {num} matches", matches.Count);// extract the vendor number, name and their url, ordering by the name first.var vendorInfo = matches.OrderBy(match => match.Groups["company"].Value).Select((match, index) =>new{Index = index + 1,Name = match.Groups["company"].Value,URL = match.Groups["url"].Value});// Create a string builder to progressively build the markdownvar sb = new StringBuilder();// Append headerssb.AppendLine($"Listing As At 30 December 2020 08:10 GMT");sb.AppendLine();sb.AppendLine("|-|Vendor| URL |");sb.AppendLine("|---|---|---|");// Append the vendor detailsforeach (var vendor in vendorInfo)sb.AppendLine($"|{vendor.Index}|{vendor.Name}|[{vendor.URL}]({vendor.URL})|");// Delete existing markdown file, if presentif (File.Exists("vendors.md"))File.Delete("vendors.md");//Write markdown to fileFile.WriteAllText("vendors.md", sb.ToString());

В результате получился список всех партнёров, и у каждой свой уникальный документ c условиями конфиденциальности. Вот этот список: vendors.md.

В нём 647 компаний.

Очевидно, что никто не сможет ознакомиться со всеми этими условиями прежде, чем нажать кнопку Согласиться, делает вывод автор.

Помните, что эти рекламные провайдеры предоставляют одни и те же услуги разным сайтам. Они однозначно идентифицируют браузер и устройство, поэтому могут анализировать и отслеживать ваши действия на разных сайтах для создания максимально точного профиля. На каждого якобы анонимного пользователя собираются большие объёмы данных.

Код для парсинга из этой статьи опубликован на Github.
Подробнее..

Разработка приложения для обработки видео на что обратить внимание и при чем тут зумеры

21.12.2020 02:23:17 | Автор: admin

Привет, Хабр!

Меня зовут Алексей Жуков. Более 10 лет вместе с командой разработчиков я занимаюсь созданием и дизайном приложений и интернет-платформ. В статье хочу поделиться своим видением трендов на рынке видеоконтента. Разберемся в том, что будет после пандемии и что учесть при создании приложения для зумеров.

В 2020 году видеоконтент стал важнейшей частью интернет-потребления. Его популярность отчасти связана с миллениалами и поколением Z. Именно они не видят свою жизнь без интернета и предпочитают развлекаться или узнавать новое из онлайн-видео. Согласно результатам опроса YouTube, 50% людей в обоих поколениях заявили, что они "не могут жить" без видео в своей повседневной жизни.

Всё это серьезно влияет и на маркетинговые стратегии. В 2020 году видеоформат по популярности побил таких тяжеловесных соперников, как электронная почта, блоги и инфографика, которые долгое время были более популярными типами маркетингового контента.

Если 10 лет назад создание видеоконтента было очень энергоемким и трудозатратным, сегодня ролики создаются буквально на лету. Такую скорость обеспечивают новые приложения для обработки визуального контента. Но к такому состоянию рынок приложений пришел не сразу, а пандемия только подстегивает интерес к ним, поэтому в ближайшем будущем мы увидим лишь усиление трендов.

Видеоролики брендов вышли на первое место

В прошлом пользователи использовали широкий набор источников для получения информации о продукте: веб-сайты брендов, онлайн-обзоры, рекламные ролики, видеоролики на YouTube. Теперь, когда видео доступно во всех крупных соцсетях, они больше полагаются на видеоконтент: демонстрации продуктов, видео-обзоры, распаковки, учебные пособия. Этот контент намного более аутентичен, чем отретушированный снимок продукта.

Пользователи хотят расслабиться и убежать от реальности

В прошлом зрители включали телевизор и ходили в кино, чтобы отвлечься от стресса. Сегодня потребность в расслабляющем или развлекательном контенте никуда не ушла. Первая и основная причина, почему пользователи YouTube смотрят видео это развлечение и отдых. В ТОП-7 рейтинга причин входят также возможность посмеяться и желание забыть об окружающем мире.

Профессионализм видеооператора не важен

Существует распространенное заблуждение, что ролики должны сниматься в дорогостоящей студии. В этом году видео все чаще приходится снимать на дому без красивого фона, поэтому этот миф определенно развенчан.

Причины, по которым зрители смотрят видео, далеки от таких пунктов, как высокое качество производства и популярность актеров. Более того, миллениалы и поколение Z целенаправленно предпочитают контент, создаваемый обычными пользователями, а не профессиональными студиями.

Зумеры предпочитают длинные видео

Клиповое мышление позволяет зумерам по первым секундам отфильтровывать неподходящий контент и мгновенно включаться в поток релевантной информации. Они более творчески подходят к своей жизни и живо интересуются всем новым. Такие качества подталкивают их к просмотру более длинных видео, в отличие от предыдущих поколений. Такие видео должны вовлекать зрителя с первых секунд, в течение которых и принимается решение о просмотре или дальнейшем поиске более подходящего контента.

Что предлагает рынок обработки медиаконтента

Рынок мобильных приложений для обработки фото- и видеоконтента постоянно пополняется новыми игроками как в России, так и на Западе. Однако это не значит, что спрос на такие продукты растет. Скорее, растет генерация визуального контента пользователями. От этого, в первую очередь, выигрывают социальные гиганты, Instagram, TikTok, которые идеально отвечают желанию самовыражения. Если говорить о приложениях, основной функцией которых является обработка медиаконтента, то здесь я бы выделил InShot, Splice, VivaVideo, Prequel, Instories.

Чего хотят зумеры

Зумеры практически родились с гаджетом в руках, поэтому им недостаточно просто снять видео. В условиях, когда видео снимают все кому не лень, на первое место выходит фактор уникальности контента. Это подтолкнуло к появлению самого сильного тренда, который мы до сих пор наблюдаем создание Stories. Маски, в свою очередь, постепенно теряют популярность, хотя имеют потенциал возродиться в каком-то другом виде. Возможно, здесь сказывается то, что последние полгода пользователям и так пришлось их носить постоянно.

Визуальный сторителлинг вот то, на что должны быть направлены приложения. Каждый элемент должен создаваться и редактироваться быстро и легко.

При этом простыми эффектами пользователей уже не заманишь, они есть в большом количестве почти у всех конкурентов.

Здесь нужно смотреть глубже. Важна не обертка видео, а пользовательский кейс, сценарий, повод, ради которого человек решил что-то снять и опубликовать. Узкопрофильные приложения, отлично справляющиеся с одной конкретной задачей, а не мультикомбайны, пытающиеся повторить функционал Adobe Premiere Pro или iMovie вот новый тренд в этой отрасли. Свежими примерами можно назвать Boomerang или Hyperlapse от Instagram.

Что будет после пандемии

Пандемия COVID-19 заметно подстегнула интерес к подобным приложениям. Запросы некоторых игроков увеличились вдвое. Но это временное явление, уже виден спад пользовательской активности. А гиганты рынка и вовсе остались на прежнем уровне поисковых запросов. Очевидно, режим самоизоляции стимулировал людей обратиться к своей медиаколлекции прошлых лет и отпусков, чтобы продолжить свою активность в соцсетях. Это само по себе тоже можно назвать краткосрочным трендом.

В целом же, нужно понимать, что пользователям больше нравится снимать, чем обрабатывать. Поэтому, после пандемии такая активность быстро вернется в норму. Будущее здесь скорее за продуктами, позволяющими накладывать музыку, эффекты, делать коллажи в реальном времени, прямо во время съемки. Но это требует хорошей оптимизации приложения и не последнего по характеристикам мобильного устройства.

Какие приложения выиграют

Очевидно, выигрывают специализированные приложения. Здесь нужно держать руку на пульсе своей аудитории и запускать кросс-проекты. Отличным примером может служить история со Stories в Instagram и приложения, позволяющие сделать Stories интереснее и разнообразнее.

Также в выигрыше будут продукты, позволяющие обрабатывать видео в реальном времени. Это сильно снижает время, которое пользователь тратит на создание контента, то есть время использования приложения. И, как ни парадоксально, это же повышает привязку человека к таким продуктам, поскольку он получает результат практически мгновенно.

Мобильные редакторы медиаконтента сильно похожи друг на друга. У них почти одинаковый набор функций и пользовательский интерфейс. Здесь победит тот, кто максимально удобно и быстро решает задачу. Например, Splice предлагает очень комфортный процесс создания видео, шустрый рендеринг и подгрузку дополнительных медиаресурсов, будь то эффекты, музыка или текст.

Однако все подобные проекты страдают общей проблемой. Они пытаются охватить максимальный функционал своих десктопных конкурентов, ориентируясь на них и в плане интерфейса. Но, проектируя мобильное приложение, следует учитывать совершенно другие факторы пользовательского поведения, тач-интерфейс и сам сценарий работы с решаемой задачей. Главное не перегружать экран контентом, иначе разобраться вашим клиентам будет очень непросто. И никакие обучающие подсказки здесь не помогут.

Я бы посоветовал разработчикам таких приложений отойти от общей схемы построения интерфейсов и прислушаться к самим пользователям мобильных платформ. Полезно будет также анализировать действия людей в вашем продукте и отслеживать изменения метрик за счет сплит-тестирования. Это позволит улучшить опыт без полной переделки дизайна.

Как создать приложение для зумеров

По моему опыту, качественная разработка приложений предполагает глубокую проработку на каждом этапе.

1. Идея

Когда вы находитесь на стадии разработки идеи приложения, проблемы больше связаны с балансированием и управлением творческим потоком. Тщательное исследование, аналитика и мозговой штурм помогут разработать уникальный подход, который может эффективно удовлетворить потребности рынка.

Важно помнить, что идея должна быть достижима. Вероятность ее реализации может быть достигнута путем проведения конкурентного анализа, маркетинговых исследований и установления дедлайнов по каждой задаче.

2. Целевая аудитория

Вместе с идеей всегда стоит вопрос, кто ваша целевая аудитория и что она ищет. Например, если ваша целевая аудитория делает покупки онлайн, приложение должно иметь функции, позволяющие экспериментировать с внешним видом человека и держать пользователей в курсе последних трендов.

3. Удобство

При разработке приложения очень важно создать интуитивный интерфейс, так как никто не любит блуждать в поисках необходимых функций и руководств по их использованию.

Неплохо начать с версии MVP (minimum viable product минимально жизнеспособный продукт). Как только пользователи привыкнут к приложению, изучите аналитику и их отзывы. Таким образом, вы получите представление о функциях, которые они предпочитают, например:

  • добавление звуковых эффектов или дорожек;

  • объединение нескольких файлов в один (как видео, так и фотографии);

  • обрезка видеоролика или добавление кадров;

  • расширенные правки (экспозиция, насыщенность, контраст, температура, оттенки, тени и т. д.);

  • редактирование во время записи с помощью специальных эффектов, фильтров и текстур;

  • функции совместного использования соцсетей;

  • сохранение видеоролика в нескольких форматах.

4. Монетизация

Версия MVP важна и тем, что можно проверить различные гипотезы о способах получения дохода с приложения. Обязательно необходимо протестировать различные подходы к монетизации, такие как премиальные функции, подписки и покупки в приложении, чтобы ко второй версии выработать наиболее оптимальный вариант.

5. Интеграция с соцсетями

Интеграция с соцсетями это самый важный элемент для любого подобного приложения. Зумеры могут одновременно вести активную жизнь в семи и более соцсетях. Поэтому как только пользователь создаст интересный контент, он захочет мгновенно поделиться им в TikTok, Instagram, Twitter и т. д. Необходимо добавить как можно больше каналов в приложение, чтобы исключить рутинные операции.

Каждое поколение рождает новые запросы и потребности. То, что важно для миллениалов и поколения Z, не так важно для бумеров. Сейчас зумеры формируют тренды на рынке мобильных приложений для создания визуального контента.

На подходе поколение альфа. Пока специалисты лишь строят предположения о том, что от них ожидать. Возможно, с ними мы переживем еще более глубокое проникновение визуальной информации в повседневную жизнь. Именно они станут драйвером роста AR/VR-соцсетей, полноценными хозяевами совершенно нового виртуального пространства, в котором маски и Stories останутся приятным напоминанием о старом мире.

Подробнее..

Продвижение бота на 214 тысяч процентов

26.12.2020 16:10:02 | Автор: admin

Примерно с начала декабря провожу эксперимент по продвижению (если угодно - хайпу) в Твиттере своего бота. Результаты мне нравятся. Возможно кому будет интересно как почти при нулевом бюджете сделать эффективную рекламную кампанию в сети. Скриншоты, статистика, части кода и рассказы ниже.

Теория

По моему мнению реклама в сети скоро будет активно осваивать короткие звуковые споты. Всё чаще люди начинают слушать интернет, а не только его смотреть. Интернет-радио,Spotify,iTunesи множество других служб для "прослушки" сети очень быстро внедряются в массовое употреблением. Даже Твиттер вывел на рынок звуковые твитты.Росту значения звука способствует и рост числа индивидуальных устройств для прослушивания - наушники стали обыденным явлением и значит звуковая реклама можетбыть индивидуализированна и подана отдельному человеку в зависимости от его предпочтений как и традиционная контекстная реклама.

Практика

О своём боте для звукодзи я уже писал в статье на Хабр

В начале декабря я добавил к нему функцию озвучки гифок и картинок. То есть нужно послать боту изображение в виде файла, а потом голосовое сообщение. Бот вернёт короткий спот видео, который можно уже вставить куда угодно. Мы проводили эксперименты с размещением готовых видео роликов в Твиттере чтобы оценить реакцию пользователей и их "вовлечённость".

Чтобы бот работал корректно в социальной сети во время тестирования были обнаружены и устранены некоторые проблемы. В частности:

  • Обрезка по времени.

Пользователи чаще всего не попадают точно в начало гифок. Тем более, что и при отсылке голосовых сообщений запись начинается не сразу - есть задержка физическая, то есть буквально зависание пальца на кнопке, и есть задержка логическая, то есть мессенджер вставляет небольшую паузу от начала записи. Для устранения задержек я "сдвинул" начало записи к началу видео. Вот таким образом:

Объяснение кода

Функция вырезана из класса.

Для обработки звуков/видео используется ffmpeg

PWF --> место хранение файлов для последующий обработки

cmd --> это переименованная функция system встроенной в python библиотеки os

В функции connect_video_voice соединяется звук, и видео.

Также есть функция по соединению звука и картинки.

def connect_photo_audio(self,imagepath, audiopath, name=urandom(30).hex()):      targetvideotype = "mp4"      cmd(f'ffmpeg -y -loop 1 -i "{imagepath}" -i "{audiopath}" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pixfmt yuv420p -shortest -vf "scale=trunc(iw/2)2:trunc(ih/2)2" "{self.PWF}/{targetvideotype}/{name}.{targetvideotype}"')      return f'{self.PWF}{targetvideotype}/{name}.{targetvideo_type}'
def connect_video_voice(self,videopath, audiopath, name=urandom(30).hex(),):  sourcevideotype = "mp4"  cmd(f'ffmpeg -streamloop -1 -i "{videopath}" -i "{audiopath}" -shortest -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y "{self.PWF}/{sourcevideotype}/{name}.{sourcevideotype}"')      return f'{self.PWF}/{sourcevideotype}/{name}.{sourcevideo_type}'
Логика обрезания

Если звук длинее видео, то видео повторяется по кругу, если же звук меньше чем видео, то видео обрезается до размера звука.

f"ffmpeg -stream_loop -1 -i "{video_path}" -i "{audio_path}" -shortest -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y "{self.PWF}/{source_video_type}/{name}.{source_video_type}"
  • Ограничение по времени

Чтобы пользователь не записывал слишком длинные видео, не перегружал систему ради своих приколов да и для того чтобы избежать случайных нажатий я предусмотрел ограничение по времени в одну минуту кодом:

Пояснение о коде

Для работы с телеграммом используется PyTelegramBotAPI

После получения голосового сообщения, в message.voice хранится информация о нем. В том числе хранится и duration, в ней хранится длительность голосового сообщения.

if message.voice.duration > 60:  self.BOT.send_message(message.fromuser.id, "Your message too long. Max size of message: 1 minute")      return

Внедрение

Бот был активно использован для одного свежего "чистого" аккаунта в сети Твиттер без фоловеров. На скриншотах видны два читателя - это те, которые сами присоединились по своей инициативе. Никаких "раскруток" или подобных действий для статистики не предпринималось. Мне было самому интересно сможет ли такая своеобразная реклама без бюджета бота в сети обеспечить рост его известности.

Ежедневно мы публиковали несколько твиттов с внедрённым видео. Вот статистика просмотров

Статистика в Твиттер

Для измерения переходов к самому боту я написал дополнительный код, собирающий статистику обращений к боту и манипуляций с ним.

Объяснение кода

get_users_graphic__activity__ функция, которая вызывается при команде /activity к боту.

Здесь идет проверка на доступы, если пользователь написавший боту /activity не занесен в базу данных как админ, или же как helper, то в графике ему будет отказано.

create_graphic_activity --> функция, которая строит графики на основе функции которая получает данные о пользовательской активности в боте.

limit--> переменная, используемая для указания лимита возвращаемой активности в дня. По умолчанию limit имеет значение Продвижение бота с услугами через твиттер

/activity 3 вернет график активности за последние 3 дня.

def get_users_graphic__activity__(self):    if self.MESSAGE.chat.id in HELPERS or self.MESSAGE.chat.id == ADMIN_USER_ID:        graphic = create_graphic_activity()        if graphic:            try:                limit = int(re.sub('\D', '', self.MESSAGE.text))            except Exception:                limit = 7            self.BOT.send_photo(self.MESSAGE.chat.id, photo=create_graphic_activity(limit=limit))        else:            self.BOT.send_message(self.MESSAGE.chat.id, LANGUAGES["commands"]["server_crashed"])    else:        self.BOT.send_message(self.MESSAGE.chat.id,LANGUAGES["commands"]["you_not_have_permissions"])

При использовании бота я заметил рост обращений к нему. При том что в самих Твиттах ссылка на бот не содержится - она есть только в профиле пользователя. Это значит что в бот перешли самые активные участники, не ограничивающие себя просмотром.

В планах

Возможно некоторым рекламодателям уже можно использовать моего бота для продвижения своих товаров и услуг. Можно включать свой логотип или изображение товара в картинку или дополнять слоганом звуковое сообщение. Я пока продолжу совершенствовать функционал программы. В ближайшее время я планирую дополнить бота функциями выравнивания по силе звука и перезаписью дублей. Если для перезаписей дублей код не трудно дописать, то выравнивание силы звука - нетривиальная задача, поскольку для рекламных целей как раз изменение силы звука может быть "цепляющим" внимание фактором.

Подробнее..

Умное планирование рекламы в подкастах. Как собрать базу слушателей и распознать аудиторию с помощью нейросети

25.12.2020 16:21:43 | Автор: admin
Подкасты канал, который активно развивается весь 2020 год. Растет объем аудитории, да и самих подкастов становится все больше. При этом единого аудиторного измерителя слушателей не существует, да и вообще с измерениями этого канала дела обстоят не очень. При этом взаимный интерес подкастеров и рекламодателей довольно высокий.

Мы в dentsu придумали Podcaster аналитический инструмент для измерения аудитории подкастов и планирования рекламы в них. О том, как мы начали собирать данные и решили проблему распознавания аудитории, с какими трудностями столкнулись и что из этого вышло, рассказываем в этой статье.

image



Предыстория

Сейчас планирование подкастов происходит на основе данных продавцов (студий или специализированных агентств), которые связываются с авторами подкастов и запрашивают описание слушателей. Сами подкастеры получают данные либо от платформы, на которой выложен подкаст, либо из внешней системы статистики. В таком подходе есть ряд ограничений:

  • подкасты можно выбрать из лимитированного списка, с которыми у продавца есть договоренности и есть данные по аудитории подкаста;
  • нет возможности выбрать более аффинитивные подкасты (аффинитивность отношение заданной ЦА среди слушателей ко всем слушателям подкаста), потому что, как правило, доступно описание ядра слушателей, а оно в целом одинаковое с точки зрения возраста для большинства подкастов;
  • данные по каждому подкасту есть у самих подкастеров, но как пересекаются слушатели между подкастами не знают ни сами подкастеры, ни продавцы.


Для того, чтобы планирование подкастов стало более умным, мы попробовали сформировать единую систему аналитики, которая основывалась бы на данных из списка существующих подкастов и базе слушающих эти подкасты пользователей, а также в ней появилась бы возможность определить пол и возраст этих самых слушателей.

Подход

Мы быстро поняли, что сами прослушивания с привязкой к пользователям получить мы не сможем. Но есть лайки/подписки на подкасты: подобная механика работает, например, в Instagram с блогерами, когда человек подписывается на блогера, чтобы видеть его новости. Мы предположили, что такая же история происходит и с подкастами слушатели подписываются на любимые подкасты, чтобы они были в быстром доступе и можно было следить за новыми выпусками.

Проверить эту гипотезу мы решили с помощью популярной платформы, через которую аудитория слушает подкасты. Согласно данным Tiburon, лидером по прослушиваниям подкастов является Яндекс.Музыка.

image

К счастью, на Я.Музыке есть страница пользователя, на которой представлена информация о подписках на подкасты.

Пример профиля с фото и подписками на подкасты

image

При этом помимо самой подписки в открытом доступе есть никнейм и аватар пользователя. Это уже что-то, так как по факту мы видим ядро слушателей подкастов, то есть тех, кто регулярно их слушает. Также здесь у нас есть та самая связка пользователь-подкаст, которую мы и хотели найти.

Механика

Мы начали собирать данные, а именно пользователей и подкасты, на которые слушатели подписаны. Изначально пользователей Я.Музыки с подкастами мы находили на данных сотрудников dentsu, которые предоставили свои почтовые ящики на Яндексе. Масштабировать проект не составило труда, так как мы не первый год работали с публичными данными.

Хорошая новость заключалась в том, что база подписанных на подкасты пользователей собиралась очень быстро буквально за полтора месяца мы набрали более 10 000 пользователей, которые подписаны хотя бы на один подкаст.

Но была и плохая новость по фото и никнейму определить пол и возраст на глаз не всегда возможно, а точнее вообще невозможно. Нам же, чтобы можно было выбирать релевантные подкасты для разных аудиторий, без пола и возраста здесь никак не обойтись.

С данной задачей определения пола и возраста по фотографии отлично справилась наша нейросеть, точность которой составляет 96%. Алгоритм простой: берем фотографию пользователя Я.Музыки, ищем лицо и по нему определяем пол и возраст.

Лицо находится библиотекой face-recognition, использующей dlib. А в основе нашей нейросети лежит предобученная модель VGGFace на базе архитектуры ResNet-50, которую мы дообучали на фотографиях пользователей VK, доступных по публичному API. Датасет состоит из миллиона фотографий, которые дополнительно аугменировались через albumentations. Следует отметить, что для обучения мы не рассматриваем фотографии пользователей до 12 и после 65 лет.

Результаты

После обучения мы поняли, что примерно у 45% профилей пользователей с подкастами мы можем определить пол и возраст, так как много профилей без фото или картинкой, символом или просто с фотографией плохого качества. Но даже такой результат нас устраивает.

С учетом динамики нахождения профилей, которые подписываются на подкасты, мы ожидаем, что через несколько месяцев база слушателей составит 50 000 профилей, а у 22 500 из них мы будем знать пол и возраст.

Пример профиля, по которому мы не можем определить пол и возраст
image

Текущие наработки позволяют нам делать выборки аффинитивных подкастов для различных аудиторных групп.

Подборка подкастов на 20-50 в тематиках, которые релевантны бренду

image

Affinity = ЦА среди слушателей подкаста / все слушатели подкаста) / (все слушатели подкаста / все люди с подкастами)

Также мы можем анализировать конкретный подкаст, если он интересует рекламодателя.
За счет того, что мы видим сколько людей подписаны на подкасты, мы можем давать рекомендации по пакету подкастов, которые будут строить наибольший охват.

Кривая построения охвата на 50 выбранных подкастах

image

Каждая точка +1 подкаст в микс. Первая точка подкаст с наибольшей уникальной аудиторией, последняя точка подкаст с наименьшей уникальной аудиторией.

Механика построения кривой и математическая модель

Сначала берем тот подкаст, у которого аудитория больше, в нашем случае это подкаст 3. Ниже представлена табличка, в которой раскрыта логика перебора, то есть принцип распределения соглашателей по подкастам.

image

Далее мы вычеркиваем слушателей, которых охватываем подкастом 3, и опять выбираем тот подкаст, у которого уникальной аудитории больше всего (подкаст 4). Это подкаст, который дает нам 2 новых уникальных слушателя, поэтому следующим мы рекомендуем к размещению именно его.

image

Проделываем упражнение еще раз, и оказывается, что больше уникальных слушателей мы не охватим, то есть размещение в 2 подкастах из 6 достаточно, чтобы охватить всю возможную уникальную аудиторию.

image

Выводы

Мы ответили не на все вопросы, поэтому продолжаем искать данные. Например, недавно Я.Музыка начала публиковать информацию о количестве подписанной аудитории на каждый из подкастов. Теперь мы понимаем объём собранных слушателей от тотального.

Мы работаем над механикой объединения данных о подписках с данными от площадок и подкастеров, чтобы уточнить модель оценки количества и состава слушателей. Но уже сейчас наш подход помогает менять схему планирования рекламных интеграций в подкасты и исходить не из агрегированных данных продавцов или интуиции рекламодателей по поводу аудитории подкаста, а из аудитории бренда. А также составлять пакеты подкастов, релевантных именно для этой аудитории бренда и строящих максимальный для нее охват.

Автор Sasha_Kopylova
Подробнее..

Майним еще больше данных настраиваем сбор рекламной статистики TikTok за день

11.06.2021 08:06:47 | Автор: admin

Привет, меня зовут Маша, я работаю маркетинговым аналитиком в Ozon. Наша команда "питонит" и "эскьюэлит" во все руки и ноги во благо всего маркетинга компании. Одной из моих обязанностей является поддержка аналитики для команды медийной рекламы Ozon.

Медийная реклама Ozon представлена на разных площадках: Facebook, Google, MyTarget, TikTok и другие. Для эффективной работы любой рекламной кампании необходима оперативная аналитика. В данной статье речь пойдет о моём опыте сбора рекламных данных с площадки TikTok без посредников и лишних заморочек.

Задача на сбор статистики: вводные

У команды медийной рекламы Ozon есть бизнес-аккаунт TikTok, в котором они управляют всей рекламой на этой площадке. Они долго терпели, сами собирали данные из рекламных кабинетов, но всё-таки настало время, когда терпеть уже больше было нельзя. Так у меня появилась задача на автоматизацию сбора статистики из TikTok.

У нас в базах уже были данные о заказах по кампаниям из TikTok, для эффективной аналитики не хватало данных о расходах.

Итак, весь процесс от "нам нужны данные по расходам из TikTok" до "у нас есть данные по расходам из TikTok" разделился для нас на следующие этапы:

  1. регистрация аккаунта разработчика,

  2. создание приложения,

  3. авторизация бизнес-аккаунта в приложении,

  4. запрос, получение, обработка и загрузка данных.

Рассмотрим каждый из этапов подробнее.

Регистрация разработчика

Мы зарегестрировали аккаунт разработчика на нашего бизнес-менеджера. Перешли на портал TikTok Marketing API, нажали на "My Apps", далее кликнули на "Become a Developer", и началась череда заполнения форм.

TikTok не Facebook, у нас ничего ни разу не отклонял, но всё равно мы были очень внимательны при заполнении полей и не добавляли то, что нам не нужно прямо сейчас. Например, в поле "What services do you provide?" добавили только "Reporting".

Последним пунктом был "Create App". Процесс создания аккаунта разработчика и приложения в первый раз происходит вместе.

Создание приложения

Заполняем имя и описание приложение, callback-address. Далее нужно выбрать разрешения, которые приложение будет запрашивать у авторизирующегося в нем аккаунта. Так же, как и при заполнении полей для аккаунта разработчика, выбрали только пункт "Reporting". Указали ID рекламного аккаунта. После этого отправили приложение на проверку.

Как сообщает TikTok в своей документации, проверка может занять от двух до трех рабочих дней. Мы отправили приложение на проверку в пятницу, в понедельник с утра у нас уже было одобренное приложение и можно было продолжить работу.

К сожалению, у меня нет для вас советов на тот случай, если ваше приложение не одобрили. Главное, о чём нужно помнить это правильно заполнять все обязательные поля и запрашивать разрешения только на то, что действительно необходимо: ни больше, ни меньше.

Авторизация бизнес-аккаунта в приложении

Из всей рутинной работы по заполнению форм, эта часть оказалось самой интересной. У нас не было web-приложения, которое бы отлавливало редирект с авторизационным кодом, поэтому автоматическую авторизацию бизнес-аккаунта сделать не получилось. Но мы оперативно потыкали в кнопки и получили заветный Access Token, с помощью которого собираем данные всех рекламных аккаунтов нашего бизнес-менеджера.

Итак, по порядку, что мы делали не имея сайта, который бы отлавливал callback с авторизационным кодом.

  1. Зашли в приложение и указали Callback Address https://www.ozon.ru.

  2. Скопировали Authorized URL, перешли по нему, авторизовались под аккаунтом бизнес-менеджера.

  3. Согласились на предоставление разрешений для приложения, нажали "Confirm".

  4. Далее нас перекинуло на сайт Ozon, но с дополнительными аргументами в url. Получилось наподобие такого https://www.ozon.ru/?auth_code=XXXXXXXXXXX.

  5. Скопировали значение auth_code, в приложении скопировали secret и app_id и отправили запрос к TikTok на получение long-term Access Token.

curl -H "Content-Type:application/json" -X POST \-d '{    "secret": "SECRET",     "app_id": "APP_ID",     "auth_code": "AUTH_CODE"}' \https://ads.tiktok.com/open_api/v1.2/oauth2/access_token

Получили ответ такого вида:

{    "message": "OK",     "code": 0,     "data": {        "access_token": "XXXXXXXXXXXXXXXXXXXX",         "scope": [4],         "advertiser_ids": [            1111111111111111111,             2222222222222222222]    },     "request_id": "XXXXXXXXXXXXXXX"}

Важно было успеть отправить запрос на получение long-term Access Token как можно быстрее, после редиректа на сайт Ozon. Связано это с временем жизни auth_code 10 минут.

Из полученного ответа необходимо сохранить значения access_token, его нужно использовать при каждом запросе. Если access_token будет потерян или, того хуже, скомпрометирован, нужно будет заново выполнять все пункты по аваторизации аккаунта бизнес-менеджера.

Так же при запросах нам понадобиться список advertiser_ids, но его не обязательно сахранять прямо сейчас список ID аккаунтов всегда можно посмотреть в аккаунте бизнес-менеджера.

Всё, мы готовы писать запросы!

Получение статистики

Когда мы только начинали собирать данные из TikTok, я пользовалась методом, который сейчас depricated, поэтому сразу расскажу о новом.

Итак, у нас есть всё необходимое для получения данных, а именно:

  • access_token,

  • список advertiser_ids.

В результате нужно получить расходы по кампаниям, в группировке до названия рекламного объявления.

media source -> campaign -> adset -> ad_name

Значение media source всегда неизменно, так как источник один TikTok. По остальным параметрам можно запросить данные из API TikTok.

Теперь нужно было решить, с какой детализацией по времени будем тянуть данные. TikTok позволяет загружать детализацию по часу и дню. Если выгружать детализацию по часу, то, максимум, за один запрос можно получить данные только за один день; если запрашивать детализацию по дням максимум, на один запрос мы получим 30 дней. Конверсии в покупки анализируются за целый день, поэтому и расходы решили собирать за день.

В новом методе получения данных добавили фильтр по типу размещения рекламы: AUCTION и RESERVATION. Ozon использует только AUCTION в своей стратегии ведения кампаний.

Кроме расходов мы собирали также и другую рекламную статистику по кампаниям: просмотры, клики, количество уникальных пользователей смотревших рекламу и другое. В итоге получился такой список метрик:

METRICS = [    "campaign_name", # название кампании    "adgroup_name", # название группы объявлений    "ad_name", # название объявления    "spend", # потраченные деньги (валюта задаётся в рекламном кабинете)    "impressions", # просмотры    "clicks", # клики    "reach", # количество уникальных пользователей, смотревших рекламу    "video_views_p25", # количество просмотров 25% видео    "video_views_p50", # количество просмотров 50% видео    "video_views_p75", # количество просмотров 75% видео    "video_views_p100", # количество просмотров 100% видео    "frequency" # среднее количество просмотра рекламы каждым пользователем]

В документации TikTok для каждого метода API описан пример на языках Java, Python, PHP и также curl-запрос. Я использовала пример на Python с небольшими изменениями.

В примерах из документации TikTok используются две дополнительные библиотеки:

pip install requestspip install six

Библиотека requests необходима для удобной отправки get-запросов. Библиотека six используется для генерации url-адреса запроса.

И еще две библиотеки, которые я уже добавила сама для того, чтобы записать данные в базу:

pip install pandaspip install sqlalchemy

В нашей компании для хранения данных используются SQL-подобные хранилища, поэтому я использую pandas для преобразования данных в DataFrame и sqlalchemy для записи DataFrame в базу.

Я использовала функции из примера в документации TikTok для генерации url и отправки запроса.

# генерирует url на основе словаря args с аргументами запросаdef build_url(args: dict) -> str:    query_string = urlencode({k: v if isinstance(v, string_types) else json.dumps(v) for k, v in args.items()})    scheme = "https"    netloc = "ads.tiktok.com"    path = "/open_api/v1.1/reports/integrated/get/"    return urlunparse((scheme, netloc, path, "", query_string, ""))# отправляет запрос к TikTok Marketing API,# возвращает результат в виде преобразованного json в словарьdef get(args: dict, access_token: str) -> dict:    url = build_url(args)    headers = {        "Access-Token": access_token,    }    rsp = requests.get(url, headers=headers)    return rsp.json()

На вход функции get нужно передать список аргументов и access token. Список аргументов под наши цели выглядит следующим образом:

args = {    "metrics": METRICS, # список метрик, описанный выше    "data_level": "AUCTION_AD", # тип рекламы    "start_date": 'YYYY-MM-DD', # начальный день запроса    "end_date": 'YYYY-MM-DD', # конечный день запроса    "page_size": 1000, # размер страницы - количество объектов, которое возвращается за один запрос     "page": 1, # порядковый номер страницы (если данные не поместились в один запрос, аргумент инкрементируется)    "advertiser_id": advertiser_id, # один из ID из advertiser_ids, который мы получили при генерации access token    "report_type": "BASIC", # тип отчета    "dimensions": ["ad_id", "stat_time_day"] # аргументы группировки, вплоть до объявления и за целый день} 

Подробнее про page_size: ответ на запрос может содержать большое количество информации и загружать всё это за один раз не эффективно. Поэтому у TikTok есть ограничение на максимальное количество объектов в ответе 1000. Чтобы получить следующую порцию данных, нужно отправить запрос с теми же входными аргументами на следующую страницу. Подробнее о постраничных запросах ниже.

В ответ на запуск функции get получаем словарь подобного вида.

{       # маркер успешности ответа    "message": "OK",    "code": 0,    "data": {        # информация о странице данных        "page_info": {            # общее количество объектов            "total_number": 3000,            # текущая страница            "page": 1,            # количество объектов на одной странице ответа            "page_size": 1000,            # общее количество страниц            "total_page": 3        },        # массив объектов        "list": [            # первый объект            {                # метрики                "metrics": {                    "video_views_p25": "0",                    "video_views_p100": "0",                    "adgroup_name": "adgroup_name",                    "reach": "0",                    "spend": "0.0",                    "frequency": "0.0",                    "video_views_p75": "0",                    "video_views_p50": "0",                    "ad_name": "ad_name",                    "campaign_name": "campaign_name",                    "impressions": "0",                    "clicks": "0"                },                # измерения (по каким параметрам группируем результаты)                "dimensions": {                    "stat_time_day": "YYYY-MM-DD HH: mm: ss",                    "ad_id": 111111111111111                }            },...        ]    },    # id ответа    "request_id": "11111111111111111111111"}

Как я описывала выше, если в ответе получается более 1000 объектов, ответ будет разбит на несколько страниц. В данном случае поле total_page говорит о том, что для получения полного набора данных по указанным параметрам, нужны будут три страницы. Следовательно, запускаем и коллекционируем ответы пока не выгрузим все страницы.

page = 1 # сначала всегда получаем данные по первой страницеresult_dict = {} # словарь, в который будем записывать ответыresult = get(args, access_token) # первый запросresult_dict[advertiser_id] = result['data']['list'] # сохраняем ответ на запрос к первой странице# пока текущая полученная страница page меньше # чем общее количество страниц в последнем ответе resultwhile page < result['data']['page_info']['total_page']:    # увеличиваем значение страницы на 1    page += 1    # обновляем значение текущей страницы в словаре аргументов запроса    args['page'] = page    # запрашиваем ответ по текущей странице page    result = get(args, access_token)    # накапливаем ответ    result_dict[advertiser_id] += result['data']['list']

Такое необходимо повторить для каждого рекламного аккаунта из списка advertiser_ids.

В результате всех вышеописанных манипуляций мы получили для каждого рекламного аккаунта данные по рекламным метрикам. Осталось только преобразовать словарь в pandas.DataFrame и отправить их в базу.

# результирующий DataFrame, который будем записывать в базуdata_df = pd.DataFrame()# для каждого рекламного аккаунта выполнить преобразованиеfor adv_id in advertiser_ids:    # получаем накопленные разультаты для аккаунта из словаря    adv_input_list = result_dict[adv_id]    # временный список    adv_result_list = []    # для каждого объекта    for adv_input_row in adv_input_list:        # берём словарь метрик        metrics = adv_input_row['metrics']        # насыщаем этот словарь словарём измерений        metrics.update(adv_input_row['dimensions'])        # добавляем полученный объект во временный список        adv_result_list.append(metrics)    # преобразуем временный словарь в DataFrame     result_df = pd.DataFrame(adv_result_list)    # добавляем колонку со значением id аккаунта    result_df['account'] = adv_id    # добавляем получившийся DataFrame в результирующий    data_df = data_df.append(        result_df,         ignore_index=True    )## здесь пропущены некоторые манипуляции # по преобразованию строк в числа## запись данных из результирующего DataFrame в базуdata_df.to_sql(    schema=schema,     name=table,     con=connection,    if_exists = 'append',    index = False)

TikTok утверждает, что исторические данные по статистике не меняеются, а если и меняются, то это должна быть экстроординарная ситуации, наподобие аварии в ЦОД. Но на основе опыта получения данных от Facebook, я решила что всё равно буду перезаписывать семь последних дней (цифра семь появилась эмпирически).

В итоге получился вот такой скрипт, который каждый день обновляется данные по TikTok кампаниям за последние семь дней.

Полный текст скрипта.
# импорт библиотекimport jsonfrom datetime import datetimefrom datetime import timedeltaimport requestsfrom six import string_typesfrom six.moves.urllib.parse import urlencodefrom six.moves.urllib.parse import urlunparseimport pandas as pdimport sqlalchemy# генерирует url на основе словаря args с аргументами запросаdef build_url(args: dict) -> str:    query_string = urlencode({k: v if isinstance(v, string_types) else json.dumps(v) for k, v in args.items()})    scheme = "https"    netloc = "ads.tiktok.com"    path = "/open_api/v1.1/reports/integrated/get/"    return urlunparse((scheme, netloc, path, "", query_string, ""))# отправляет запрос к TikTok Marketing API,# возвращает результат в виде преобразованного json в словарьdef get(args: dict, access_token: str) -> dict:    url = build_url(args)    headers = {        "Access-Token": access_token,    }    rsp = requests.get(url, headers=headers)    return rsp.json()# обновляет данные в базе за последние семь дней# (или, если указаны start_date и end_date, для периода [start_date, end_date])def update_tiktik_data(    # словарь с доступами к API TikTok    tiktok_conn: dict,    # словарь с доступами к базе данных    db_conn: dict,    # список id рекламных кабинетов    advertiser_ids: list,    # необязательное поле: начало периода    start_date:datetime=None,    # необязательное поле: окончание периода    end_date:datetime=None):    access_token = tiktok_conn['password']    start_date = datetime.now() - timedelta(7) if start_date is None else start_date    end_date = datetime.now() - timedelta(1) if end_date is None else end_date    START_DATE = datetime.strftime(start_date, '%Y-%m-%d')    END_DATE = datetime.strftime(end_date, '%Y-%m-%d')    SCHEMA = "schema"    TABLE = "table"    PAGE_SIZE = 1000    METRICS = [        "campaign_name", # название кампании        "adgroup_name", # название группы объявлений        "ad_name", # название объявления        "spend", # потраченные деньги (валюта задаётся в рекламном кабинете)        "impressions", # просмотры        "clicks", # клики        "reach", # количество уникальных пользователей, смотревших рекламу        "video_views_p25", # количество просмотров 25% видео        "video_views_p50", # количество просмотров 50% видео        "video_views_p75", # количество просмотров 75% видео        "video_views_p100", # количество просмотров 100% видео        "frequency" # среднее количество просмотра рекламы каждым пользователем    ]    result_dict = {} # словарь, в который будем записывать ответы    for advertiser_id in advertiser_ids:        page = 1 # сначала всегда получаем данные по первой странице        args = {            "metrics": METRICS, # список метрик, описанный выше            "data_level": "AUCTION_AD", # тип рекламы            "start_date": START_DATE, # начальный день запроса            "end_date": END_DATE, # конечный день запроса            "page_size": PAGE_SIZE, # размер страницы - количество объектов, которое возвращается за один запрос             "page": 1, # порядковый номер страницы (если данные не поместились в один запрос, аргумент инкрементируется)            "advertiser_id": advertiser_id, # один из ID из advertiser_ids, который мы получили при генерации access token            "report_type": "BASIC", # тип отчета            "dimensions": ["ad_id", "stat_time_day"] # аргументы группировки, вплоть до объявления и за целый день        }        result = get(args, access_token) # первый запрос        result_dict[advertiser_id] = result['data']['list'] # сохраняем ответ на запрос к первой странице        # пока текущая полученная страница page меньше,         # чем общее количество страниц в последнем ответе result        while page < result['data']['page_info']['total_page']:            # увеличиваем значение страницы на 1            page += 1            # обновляем значение текущей страницы в словаре аргументов запроса            args['page'] = page            # запрашиваем ответ по текущей странице page            result = get(args, access_token)            # накапливаем ответ            result_dict[advertiser_id] += result['data']['list']    # результирующий DataFrame, который будем записывать в базу    data_df = pd.DataFrame()    # для каждого рекламного аккаунта выполнить преобразование    for adv_id in advertiser_ids:        # получаем накопленные разультаты для аккаунта из словаря        adv_input_list = result_dict[adv_id]        # временный список        adv_result_list = []        # для каждого объекта        for adv_input_row in adv_input_list:            # берем словарь метрик            metrics = adv_input_row['metrics']            # насыщаем этот словарь словарём измерений            metrics.update(adv_input_row['dimensions'])            # добавляем полученный объект во временный список            adv_result_list.append(metrics)        # преобразуем временный словарь в DataFrame         result_df = pd.DataFrame(adv_result_list)        # добавляем колонку со значением id аккаунта        result_df['account'] = adv_id        # добавляем получившийся DataFrame в результирующий        data_df = data_df.append(            result_df,             ignore_index=True        )    #    # здесь пропущены некоторые манипуляции     # по преобразованию строк в числа    #        # создание подключения к базе    connection = sqlalchemy.create_engine(        '{db_type}://{user}:{pswd}@{host}:{port}/{path}'.format(            db_type=db_conn['db_type'],             user=db_conn['user'],             pswd=db_conn['password'],            host=db_conn['host'],            port=db_conn['port'],            path=db_conn['path']         )    )    # удаление последних семи дней из базы    with connection.connect() as conn:        conn.execute(f"""delete from {SCHEMA}.{TABLE}         where date >= '{START_DATE}' and date <= '{END_DATE}'""")    # запись данных из результирующего DataFrame в базу    data_df.to_sql(        schema=SCHEMA,         name=TABLE,         con=connection,        if_exists = 'append',        index = False    )

Миссия выполнена!

Подведем итоги

Итого, на всевышеописанные действия было потрачено менее одного рабочего дня (не считая времени, которое приложение было на проверке). Надеюсь, мне удалось показать, что уровень вхождения в API TikTok достаточно низкий, и для настройки автоматического сбора данных не нужно обязательно привлекать разработчика или блуждать по лабиринтам документации и запутанной логики.

К слову о лабиринтах, в Facebook тот же самый один рабочий день уходит на то, чтобы создать аккаунт разработчика, протыкать все галочки о политике конфидециальности и условий использования, создать приложение, настроить его и т.д. И в итоге к концу дня у тебя не работающий ETL по сбору данных, а очередной Permission Denied и распухшая голова, в которой крутится только одна мысль "что я делаю не так".

Конечно, сравнивать Facebook и TikTok не очень правильно: второй ещё относительно молод и ему еще только предстоит быть обвешанным хитрыми условиями, запретами и всеми возможными сложностями. Но сейчас всего этого пока нет, так что пользоваться TikTok Marketing API крайне удобно. Надеюсь, моя статья вам немного в этом поможет.

Полезные ссылки

Подробнее..

Узкоспециализированная видеореклама на YouTube как и с чего начать

29.12.2020 16:19:06 | Автор: admin
В наше время медийная реклама один из самых эффективных способов донести до целевой аудитории информацию о своем продукте и завоевать ее доверие. Но когда дело касается узкоспециализированных направлений, как, например, софт для программистов, всё не кажется уже таким простым и понятным. В этой статье мы расскажем про наиболее результативные форматы рекламы на YouTube на примере нашего опыта продвижения инструмента для разработчиков.


Три кита


Первые эксперименты сотрудничества с YouTube-блогерами давали нам довольно посредственные результаты, что подстегнуло нас разобраться, как работает эта площадка и начать эффективно её использовать. Мы точно знали, что наша целевая аудитория там есть: кто-то ведь смотрит это огромное количество обучающих роликов по программированию?


Но вот незадача мы хотим рассказать миру про такую штуку, как статический анализ кода. Очень полезную штуку, которая облегчит жизнь программистам, сбережет им нервы и время. А самое главное повысит качество кода. А если еще и воспользоваться специальным промокодом, который мы обычно дарим, то можно оценить всю прелесть его работы бесплатно. Казалось бы, что еще надо? Но всё шло не так гладко, как нам того хотелось.

До этого мы, в основном, работали только с рекламными вставками люди переходили на наш сайт, но запросов и тем более загрузок не было. Были и крупные, и маленькие каналы, англоязычные и русскоязычные, но результаты работы ни с первыми, ни со вторыми не оправдывали наших ожиданий. К нам пришло осознание, что пора что-то менять на одних вставках далеко не уедешь.

Мы начали думать над возможными подачами рассказа о нашем продукте, чтобы поэкспериментировать и сравнить результаты. В качестве основных форматов продвижения мы использовали:

  • старую добрую рекламную вставку,
  • видеообзор,
  • новую для нас область интервью.

Про каждый из этих трех китов мы и расскажем чуть ниже.

Воспользуйтесь нашим промокодом


Прежде чем перейти к основному, хотелось бы рассказать про систему отслеживания трафика. Как и раньше мы активно пользуемся промокодами (об этом подробнее написано в этой статье) и благодаря этому видим количество запрошенных триалов.


Думаю, как работает эта система особо пояснять не нужно. Просто для каждого канала мы придумываем кодовое слово, которое каким-то образом связано с ним (название, имя блогера, тема видео) и вставляем в нужные нам ссылки. С недавнего времени мы их начали маскировать, но не для того, чтобы что-то скрыть, а просто для красоты и простоты восприятия.
Помимо этого, просим блогеров упомянуть про сам промокод. Это помогает зрителю обратить внимание на саму акцию и описание к видео, где, собственно, и расположены ссылки и нужная информация. В зависимости от типа контента мы направляем пользователей на продуктовую страницу, страницу загрузки и, если необходимо, на какую-нибудь статью в качестве дополнения к рассмотренной в видео теме.

Промокоды дают возможность отслеживать именно целевые действия и, как итог, оценить эффективность рекламной кампании. Помимо этого, они подталкивают пользователей попробовать продукт абсолютно бесплатно, чтобы в дальнейшем, возможно, уже купить его. То есть, можно сказать, что это своего рода стимулирование продаж.

Всю статистику по каждой кампании мы отслеживаем в Google Analytics и в написанной нами CRM. Какие показатели мы прежде всего оцениваем? Обычно это переходы на страницу скачивания анализатора и запросы триала. Мы не призываем покупать наш продукт, а лишь предлагаем скачать его, воспользовавшись расширенной триальной версией, и проверить свой проект.

Видеообзор


На этот формат соглашаются далеко не все, потому что он требует более глубокого погружения в продукт и отнимает много сил и времени. Но для нас он всегда в приоритете и это первое, что мы предлагаем блогеру, когда связываемся с ним.

Как выглядит видеообзор в нашем случае? Показывается весь процесс работы с анализатором: от скачивания и установки до проверки кода. Тут важна подача и комментарии блогера, который в идеале должен рассказать про сам продукт и упомянуть про акцию.

Один из тех, кто согласился на это, был Ян Черников, за что ему огромное спасибо! С его каналом The Cherno у нас уже было несколько коллабораций, и в какой-то момент он заметно вырос, что определенно является хорошим знаком. Значит, канал активен и блогер вкладывается в него. Поэтому мы решили попробовать еще раз. Хочу отметить, что в первую очередь мы рассматриваем предложения блогера, поскольку он лучше знает свою аудиторию и, в целом, обычно у него уже есть какой-то намеченный контент-план.

Ян предложил снять видео на тему статического анализа для C++. Всё, что нужно было от нас, согласовать тему и прислать нужные ссылки, промокод и ключ для анализатора на нужный период. Каждому блогеру мы предоставляем возможность бесплатно пользоваться анализатором в течение нужного для записи видео времени. Остальную работу полностью проделывает он сам.

Через какое-то время Ян прислал нам результат на одобрение, и видео было опубликовано. Судя по всему, тема оказалась очень актуальной и вызвала отклик, которого мы точно не ожидали. Помимо нее, конечно, стоить отметить и визуальную составляющую видео Яна, и его подачу рекламы она выглядит достаточно нативно. Смотришь и думаешь: Верю!


Тогда получить такой результат означало лишь одно мы движемся в правильном направлении и нужно продолжать искать подобных блогеров.

Результат кампании за 7 месяцев
Просмотры: 39 497
Переходы на сайт: 946
Запросы триала: 169
CTR: 2,40%

Другие видеообзоры

Плюсы
  • Вы получаете детальный рассказ о продукте с применением его на практике;
  • Если продукт максимально точно связан с темой видео, реклама получается нативной зритель не замечает ее, и есть большая вероятность, что он ее не перемотает и дослушает до конца.

Минусы
  • Высокая стоимость интеграции в видео;
  • Требуется больше времени на то, чтобы блогер его снял.

Рекламная вставка


Это запасной вариант на случай, если на видеообзор блогер по каким-либо причинам не согласен. Обычно блогеры готовят тексты сами, но бывают и случаи, когда просят их прислать. Но лучше не требовать зачитывать текст точь-в-точь пусть он будет больше, как ориентир.

Рекламные вставки могут быть в начале, середине или конце видео. Мы обычно выбираем либо первый, либо второй вариант. Думаю, очевидно, почему так больше вероятность того, что большее количество людей просмотрит ее и решит воспользоваться нашим предложением.

Пример, о котором хочется рассказать, это работа с каналом Tamil Hacks 2.0. Здесь всё получилось гладко, как никогда, и просто все звезды сошлись. У нас была идея сделать рекламные вставки на тему Bug Bounty. Если коротко, то это общее название для различных программ, в которых разработчики сайтов и программного обеспечения предлагают денежные вознаграждения за нахождение багов и уязвимостей. Подробнее, кстати, мы писали об этом у нас в блоге, поэтому не буду на этом заострять внимание.

С этим предложением мы обратились к нескольким блогерам, в том числе и Тамилю. Он, на удивление, сразу согласился. Как потом оказалось, у него уже были видео на эту тему, и снял он их за пару недель до того, как мы с ним связались. Совпадение? Мы очень обрадовались такому удачному стечению обстоятельств и договорились о сотрудничестве. Буквально через неделю видео с нашей рекламной вставкой уже было опубликовано.


Непривыкшие к такому идеальному и быстрому течению событий мы уже начали сомневаться и ждать подвоха. Никаких иллюзий и надежд по поводу результатов кампании мы не питали, поэтому просто наблюдали за аналитикой. Но даже тут всё превзошло наши ожидания аудитория была очень заинтересована темой. И кажется, до сих пор, спустя несколько месяцев, с этого видео к нам на сайт приходят люди.

Результаты кампании за 4 месяца
Просмотры: 20 761
Переходы на сайт: 653
Запросы триала: 75
CTR: 3,15%

Другие рекламные вставки

Плюсы
  • Не требует много времени и затрат;
  • Можно прислать свой рекламный текст;
  • Можно выкупить сразу серию вставок и связать их между собой.

Минусы
  • Вставка не выглядит нативно высокая вероятность того, что ее просто перемотают.

Интервью


Сейчас огромной популярностью пользуются подкасты, и у нас был период, когда наши разработчики активно участвовали в интервью у некоторых подкастеров. Мы пробовали себя как в подкастах на русском, так и на английском языках. Это был интересный опыт, но довольно энергозатратный для наших ребят. Не всегда нам предоставляли список вопросов только лишь примерные темы, которые хотелось затронуть. Поэтому не было понятно, к чему готовиться. По большей части это была импровизация.

Почему интервью? Такой формат дает возможность рассказать не только про продукт, но еще и про компанию и людей, которые стоят за его реализацией. Это определенно еще и работа над повышением лояльности к компании мы делимся своей внутренней кухней. Так что, в каком-то смысле, это полезно еще и с точки зрения HR. Убиваем сразу двух зайцев.

Пожалуй, самое запоминающееся сотрудничество было с подкастом Senior Software Vlogger. Мы связались с ведущим подкаста, обсудили тему и договорились об интервью с одним из наших C++ программистов. Подготовив технику и прислав ему необходимые материалы, приступили к работе.

После того, как прошло интервью, с нами связался ведущий с довольно хорошей новостью. Оказалось, они так увлеченно разговорились, что контента получилось больше, чем хотели изначально. Поэтому мы ждали уже не одно, а целых два видео.

Первое получилось более общим, вводным, так сказать, и формальным. Наш С++ тимлид Фил рассказал про себя и свою работу. Ребята, в основном, обсуждали язык C++, его особенности и новости, связанные с ним.


Второе получилось более узконаправленное и неформальное там только про C++. Не зря ведь оно называется Байки о Си++: С Стандартизация?

Результаты кампании за 6 месяцев
Просмотры: 27 139
Переходы на сайт: 193
Запросы триала: 7
CTR: 0,71%

Не сильно впечатляющие цифры, хотя, судя по просмотрам, оба видео вызвали интерес. Но по какой-то причине, дело до скачивания анализатора не дошло. Возможно, потому что основной фокус таких видео человек, с которым общаются, а не продукт. И чтобы заинтересоваться в нем, человеку нужно сначала зайти на сайт, почитать блог, всё хорошо обдумать. А потом, уже через какое-то время, переходить к скачиванию анализатора. Так что здесь вполне возможен накопительный эффект.

Другие интервью с нашими разработчиками

Плюсы
  • Есть возможность рассказать не только про продукт, но и про компанию и ее внутреннюю кухню;
  • Про продукт рассказывает один из тех, кто принимает участие в его развитии плюс 100 к лояльности.

Минусы
  • Фокус чаще всего смещен на рассказчика, а не на продукт;
  • Спикеру не дается возможности подготовиться к вопросам заранее (но, возможно, этот момент лучше стоит обсудить с блогером заранее).

А что лучше?


Сложно однозначно сказать то, что хорошо сработает на одном канале, может абсолютно не принести никаких результатов на другом. Вся работа маркетинга построена на гипотезах, которые постоянно нужно проверять.


Лучше, конечно, всё это комбинировать. Но если всё-таки приходится выбирать, можно пройтись по такому чек-листу:

  • Это первое сотрудничество с блогером? Тогда лучше выбрать рекламную вставку. Она не требует много затрат по времени и деньгам, зато многое скажет о подходе блогера к рекламе и его канале;
  • Это второе или третье сотрудничество с блогером, и результаты предыдущих были хорошими? Тогда смело можно пробовать видеообзор. Покажите ваш продукт во всей красе, а потом проанализируйте результаты;
  • Формат канала построен на общении с другими людьми? Тогда можно выдвигать и свою кандидатуру. Главное чтобы блогер специализировался на интервью: умел вести общение, имел специальную технику для качественной записи звука и картинки. Это лучше выяснить заранее, просмотрев другие ролики на канале.

Сделай сам


Есть и альтернативный вариант начать самим снимать видео. Рано или поздно, кажется, все к этому приходят, поскольку это еще один хороший канал вещания и продвижения своего продукта и компании в целом. Правда, такой формат работы куда более энергозатратный, чем предыдущие три. Почему? Расскажу на нашем примере.

В какой-то момент мы поняли, что просто рекламы у блогеров нам мало. Мы подумали: А что, если снять собственные видео про статический анализ и анализатор?.


Мы набрали группу заинтересованных программистов и маркетологов, организовали поездку загород и там поселились на целых пять дней. План и цель были просты наснимать как можно больше видео для дальнейшего продвижения. Тут, конечно, без подводных камней не обошлось. Подробно расписывать всё не буду, потому что это уже другая история. Расскажу лишь, что для этого потребовалось:

  • Найти спикеров, которые помимо русского владеют еще и английским;
  • Купить технику (камера, свет, микрофоны);
  • Оборудовать место съемки;
  • Проконтролировать процесс съемок.

И это только то, что было очевидно для меня, как для участника. Уверена, у организаторов этого мероприятия список куда длиннее. Но цель мы свою достигли на выходе получились довольно качественные видео, записанные и на русском, и на английском. Эти видео мы публикуем на своих YouTube каналах. Да, у нас их теперь целых два для русскоязычной и англоязычной аудитории. А как прошел сам видеомарафон, можно посмотреть здесь.

Кстати, я и сама недавно примерила на себя роль блогера приняла участие в записи одного видео для нашего англоязычного канала.


Как говорится, с кем поведешься Вроде неплохо получилось и теперь, скорее всего, буду периодически мелькать на нашем англоязычном канале. Так что заглядывайте буду вас там ждать!

Плюсы
  • Вы сами полностью контролируете содержание видео;
  • Информация о продукте подается от первоисточника;
  • Это хороший способ продвинуть себя как компанию.

Минусы
  • Требуется специальная техника и место съемки (камера, микрофон);
  • Нужно задействовать несколько людей (оператор, диктор, монтажер, редактор, переводчик).

Заключение


Конечно, описанная стратегия не идеальна, но в нашем случае она пока не давала серьезных сбоев. Мы постоянно находимся в поиске новых способов продвижения нашего продукта. К примеру, в данный момент работаем сразу над сериями рекламных интеграций на разных каналах. Главное в этом деле не бояться экспериментировать и фиксировать успешные результаты.

Если у вас есть опыт работы с блогерами и медийной рекламой, будем рады почитать и ваши кейсы. А если вы блогер и готовы к сотрудничеству, то можете смело нам писать! Мы рассматриваем следующие тематики: C, C++, C#, Java, DevOps, Embedded, компиляторы, разработка игр, тестирование, безопасность и качество кода.
Подробнее..

The Wisdom of Crowds

03.01.2021 16:15:06 | Автор: admin
Всем привет!
Во время прохождения одного из образовательных курсов по анализу данных и рекомендательным системам наткнулся на интересную вещь, о которой совсем мало материала на русском языке и решил данное недоразумение исправить.
Хотел бы рассказать об одном из методов коллаборативной фильтрации, корни которого уходят в историю. Его задача состоит в том, чтобы дать наиболее правильный ответ, используя коллективный разум.

Алгоритм The Wisdom of Crowds (Мудрость Толпы) является одной из реализаций коллаборативной фильтрации. Его работа основывается на том, что группа людей обладает большими знаниями, чем индивид, в то время как каждый отдельно взятый человек может улучшить производительность группы за счет своего конкретного ввода информации.

Возьмем пример из истории. В 1906 году, во время выставки жирного скота и птицы в Западной Англии, Фрэнсис Гальтон открыл математические и статистические закономерности групповых средних оценок и их преимущества перед индивидуальными. На этом мероприятии группа оценщиков успешно обеспечила среднее значение веса быка, удивительно близкое к реальному значению.

В качестве необходимых условий работы данного алгоритма присутствуют сведения о толпе.
Толпа должна:
  • быть децентрализованной, чтобы никто сверху не диктовал ответ толпы;
  • быть в состоянии составить свое собственное мнение, основанное на индивидуальных знаниях участников;
  • предлагать коллективный вердикт, который суммирует мнения людей;
  • быть независимой когда каждый ее участник фокусируется на имеющейся информации, а не на чужих мнениях.

Одним из возможных минусов вышеописанного подхода может быть потенциальное возникновение феномена группового мышления. Участники, не обладающие достаточными знаниями, могут следовать за более осведомленными в вопросе людьми и давать похожие ответы. Также социальное влияние может привести к тому, что среднее значение ответов толпы будет неточным, в то время как среднее геометрическое и медианное пребывать в норме. Качество предсказаний может зависеть и от формулирования вопросов толпа в целом работает лучше, когда есть правильный ответ на поставленный вопрос, например, вопрос о географии или математике. Когда нет точного ответа, толпа может прийти к произвольным выводам.

Математических моделей, реализующих на практике данный метод я нашел всего 2, указал в источниках. Одна из них применяется для предсказания цены акции на рынке и еще не зарекомендовала себя на длительном временном интервале, но продолжает использоваться и дальше.
Если есть уточнения или интересные примеры использования подобной методики пишите к комментариях :)

Источники


Есть хорошая статья про использование вышеописанного алгоритма в предсказаниях цен акций с реализованными математическими расчетами под конкретную задачу.
Также есть и альтернативная точка зрения.
Подробнее..

Перевод Cтарший разработчик Google Ads Почему я занимаюсь рекламой

11.05.2021 16:15:42 | Автор: admin
Я работаю в Google над рекламой
Почему? Я искренне не понимаю, что кто-то может этим заниматься.


image Кто-то недавно спросил меня: Почему я работаю над рекламой?
Я захотел написать что-то более основательное, чем просто комментарий. (Несмотря на то, что это моя профессиональная тема, это личный пост, и я говорю только от своего имени.)

Один ответ заключается в том, что я зарабатываю, чтобы отдавать: половину того, что я зарабатываю, я отдаю наиболее эффективным благотворительным организациям, которые могу найти, и чем больше я зарабатываю, тем больше я могу отдавать. Однако это не полный ответ, поскольку, когда люди спрашивают меня об этом, они обычно исходят из того, что рассматривают рекламу (или, возможно, онлайн-рекламу) как нечто плохое, и вопрос больше похож на почему вы решили работать над чем-то? Плохим?"

Дело в том, что я считаю рекламу хорошей и считаю свой личный вклад позитивным. Я открыт для дискуссий в этом: если я причиняю вред своей работой, я хотел бы знать об этом.

Итак: чем хороша реклама? Я имею в виду, разве не раздражает, когда сайты показывают вам рекламу вместо того, что вы хотите прочитать? Вопрос в том, какая есть альтернатива? Я вижу две основные модели финансирования:

  1. Платный доступ (paywall). Вы платите своими деньгами.
  2. Объявления. Вы платите свои вниманием.


Также можно финансировать проекты за счет пожертвований или как хобби, но создание большей части того, что есть для чтения, требует больше денег.
(Я использую специфичный для Интернета термин платный доступ (paywall) для обозначения общей концепции платить деньги за доступ: покупка книг, оплата входных билетов, подписка на потоковые сервисы и т. Д.)

И платный доступ, и реклама имеют ряд преимуществ и недостатков. Некоторые из них различаются в зависимости от носителя: книги достаточно дороги, чтобы их можно было напечатать, и их нельзя было финансировать за счет рекламы; аналоговый радиоприемник настолько прост, что платный доступ потребует драконовской юридической силы. Однако я считаю, что в Интернете реклама лучше подходит по двум причинам:

  1. Минимальное трение. Вы можете переходить по ссылкам с сайта на сайт без препятствий. Вам не нужно решать, на какие сайты подписываться. Если кто-то пришлет вам ссылку на статью, вы можете ее прочитать.
  2. Нерегрессивность. Платный доступ, как и другие фиксированные затраты, регрессивен: газета по цене 220 долларов в год намного дороже для человека, зарабатывающего 10 тысяч долларов, чем 100 тысяч долларов.


Вы можете уменьшить трение сделав объединение: вы подписываетесь на потоковую службу, а затем можете смотреть (или слушать, или читать) что-либо в их коллекции. У этого подхода есть свои преимущества, но он плохо подходит для статей. Просмотр веб-страниц работает лучше всего, когда люди могут читать и делиться чем угодно без подписки (извините, эта статья предназначена только для подписчиков Conglomerated Media Group). Чтобы существенно устранить трения с объединением, вам нужно будет ограничиться небольшим количеством подписок, что затем даст этим организациям огромную (и опасную!) власть.

Микроплатежи потенциально могут разрешить эти трения децентрализованным способом, я надеюсь что это произойдет. С другой стороны, это действительно сложная проблема: люди работали над ней еще более 25 лет назад (Digital's Millicent). Было много предложений и стартапов, но ничего не получилось.

Однако даже если бы мы могли решить проблемы с платежами, мы все равно застряли бы с основной проблемой, заключающейся в том, что у одних людей располагаемый доход намного больше, чем у других. Универсальный базовый доход помог бы, и я решительно поддерживаю его, но не думаю, что это может быть политически осуществимо в ближайшее время.

Итак: реклама. Финансирование открытого веба.

Или, возможно: лучше реклама, чем платный доступ.

Однако я не хочу относиться к рекламе слишком поверхностно: сегодня в интернет-рекламе много плохого. Например, у рекламодателей недостаточно стимулов ограничивать использование полосы пропускания или у издателей, чтобы избежать раздражающей рекламы. Но самая большая проблема, которую люди поднимают, это влияние ттаргетированной рекламы на конфиденциальность.

Большинство продуктов подходят для одних людей лучше, чем для других. Если вы попробуете продать велосипеды для рыбалки, мало кто будет заинтересован, и вы в основном потратите их внимание. Это означает, что реклама стоит намного дороже, если вы можете показать правильную рекламу нужному человеку.

Один из способов сделать это разместить рекламу в местах, где, вероятно, будут находиться непропорционально заинтересованные люди. Реклама моделей железных дорог на форумах, посвященных моделированию железных дорог, спонсируемые продукты на Amazon, стенд на торговой выставке. Это отлично работает, если вы хотите вести блог о новых крутых кредитных картах, но как насчет всех тех сайтов, которые не имеют сильной коммерческой связи?

Большая часть рекламы в Интернете сегодня ориентирована на предыдущие просмотры. Когда я писал все эти посты об автомобилях, я посещал множество автомобильных сайтов, а потом увидел много объявлений об автомобилях на других сайтах. Я не стал покупать машину, но рекламодатели были правы в том, что у меня гораздо больше шансов купить машину в ближайшее время, чем у случайного человека.

Исторически такая реклама создавалась на основе сторонних файлов cookie. Когда я посетил один из этих автомобильных сайтов, они, вероятно, поместили на свою страницу немного HTML, например:

<img src="http://personeltest.ru/aways/adtech.example/cars">


Мой браузер отправил запрос на это изображение и получил невидимый пиксель отслеживания с чем-то вроде:

Set-Cookie: id=6735261


Вендор, вероятно, сохранил такую запись:

id: 6735261
interests: cars

Позже, возможно, я посетил сайт о цветах, и мне послали:

<img src="http://personeltest.ru/aways/adtech.example/flowers">


На этот раз в моем браузере уже был файл cookie для adtech.example, поэтому он был включен в запрос:

Cookie: id=6735261


Это позволяет вендору обновлять свою запись для меня:

id: 6735261
interests: cars, flowers

Некоторое время спустя я читаю что-то не имеющее отношения к делу на сайте, который заключает контракт с adtech.example на показ рекламы. Мой браузер отправляет запрос на рекламу, и мой файл cookie включен. Продавец проводит аукцион, участники торгов особенно заинтересованы в том, чтобы платить за показ мне объявлений об автомобилях (больше прибыли, чем цветов), и я получаю рекламу об автомобилях.

У этой модели есть несколько серьезных недостатков с точки зрения конфиденциальности. Как правило, продавец не просто понимает, что вас интересуют автомобили, он получает полный URL-адрес страницы, на которой вы находитесь. Это позволяет им составить довольно полную картину всех страниц, которые вы посетили в Интернете. Затем они могут связать свою базу данных с базами данных других вендоров и получить еще больший охват.

Ситуация начала меняться в 2017 году, когда Safari анонсировала Intelligent Tracking Protection". Это первый из очень многих раундов итераций, около года назад он привел Safari к полной блокировке сторонних файлов cookie. За ним последовал Firefox, и Chrome объявил, что они сделают это тоже.

Ну вроде как. Анонс от Chrome было немного более обтекаемым:

После первоначального диалога с веб-сообществом мы уверены, что при постоянных итерациях и обратной связи механизмы сохранения конфиденциальности и открытых стандартов, такие как Privacy Sandbox, могут поддерживать работоспособность сети с рекламной поддержкой таким образом, чтобы сторонние файлы cookie были устаревшими.. После того, как эти подходы будут удовлетворять потребности пользователей, издателей и рекламодателей, и мы разработаем инструменты для устранения обходных путей, мы планируем постепенно отказаться от поддержки сторонних файлов cookie в Chrome. Мы намерены сделать это в течение двух лет.


Идея состоит в том, чтобы создать API-интерфейсы браузера, которые позволят такую хорошо таргетированную рекламу без отправки вашей истории просмотров рекламодателям, а затем избавиться от сторонних файлов cookie.

Один из этих предлагаемых API TURTLEDOVE. Он позволяет рекламодателю сказать вашему браузеру: Помните, что я знаю, что этот пользователь интересуется автомобилями, а затем показать это объявление пользователям, которые, как я сказал, интересовались автомобилями. Поскольку браузер хранит эту информацию и очень осторожно обрабатывает ставки, отчеты и показ рекламы, он не позволяет рекламодателям узнавать, какие сайты вы посещаете, или сайтам, какие объявления вы видите.

Я выяснял, как реклама может использовать TURTLEDOVE, помогая создать open-source plain-JS implementation для тестирования и экспериментов и предлагая способы улучшения API (#119, #146, #149, #158, #161, #164). Я думаю, что во многом именно поэтому я меньше веду блог в последнее время: реализация этих идей черпает энергию из того же источника.

Реклама это то, как мы финансируем Интернет, в котором вы можете свободно переходить с сайта на сайт, и моя основная работа помочь понять, как перенести рекламу на менее мощные, более приватные API. Хотя я думаю, что подавляющее большинство моего альтруистического влияния происходит за счет пожертвований, я не думаю, что моя работа в рекламе наносит вред.
Подробнее..

Вкалывают роботы, счастлив человек. Как мы настроили автоматическую закупку рекламы на ТВ

22.12.2020 16:08:30 | Автор: admin

В прошлой статье мы уже писали о том, как в Dentsu занимаемся прогнозированием телесмотрения рекламы на ТВ и какие используем для этого алгоритмы. В этой статье мы расскажем, как используется этот прогноз для автоматического размещения рекламы на ТВ, как появилась сама идея Programmatic TV, с какими сложностями мы столкнулись при ее реализации и как это живет и работает сейчас, в непростом со всех точек зрения 2020 году.

Фото: Polimerek/WikimediaФото: Polimerek/Wikimedia

Немного истории

Мы задумались об автоматизации процессов, с которыми сталкивается рекламная группа агентства при закупке рекламы на ТВ, еще в 2014 году.

Для наших клиентов мы всегда стараемся использовать индивидуальный подход, в том числе и для предоставления отчетности по ТВ размещениям, поэтому менеджерам по закупке рекламы (байерам) приходилось тратить уйму времени на подготовку подробных отчетов. Мы решили, что это отличная возможность для автоматизации, и с этой идеей пришли к крупнейшему продавцу ТВ-рекламы, в тот момент это был Видео Интернешнл.

В России с 2016 года практически вся ТВ-реклама начала продаваться через единого продавца (мегаселлера) Национальный Рекламный Альянс (НРА), который основали крупнейшие медиахолдинги-владельцы телеканалов. НРА поддержал идею и совместными усилиями появилась первая версия API к их системе размещения рекламы Vimb.

API позволяло получать сетку рекламных блоков (аналог знакомой всем программы передач для ТВ-каналов, но только с временем выхода рекламных блоков в передачах на каналах) и сетку наших рекламных размещений в этих блоках. С помощью API мы смогли полностью автоматизировать процесс размещения клиентского заказа и формирования отчетности по нему.

Но время не стоит на месте, появлялись новые идеи и API стало активно развиваться. Являясь на тот момент эксклюзивным пользователем API, мы всячески содействовали разработке и развитию этого продукта и подтолкнули рынок к развитию Programmatic TV подходов в управлении ТВ рекламой.

Логичным шагом стала программная оптимизация текущего заказа для более эффективного попадания в требуемую целевую аудиторию и целый набор инструментов, позволяющий менеджерам по закупке рекламы автоматизировать часть рутинной деятельности.

Мы разработали инструменты, которые отслеживают освобождающиеся места в востребованных передачах, делают размещение под требуемый объем и заданные настройки, меняют видеоролики в уже сделанных размещениях и многое другое. В 2018 году мы пришли к идее полной автоматизации процесса ТВ-закупки.

Погружение в предметную область

Для начала постараемся разобраться, как вообще делается закупка рекламы на ТВ, что из себя представляет рекламная кампания, как контролируется и какие показатели необходимо достигнуть при проведении кампании.

Введем несколько определений из области медиа и рекламного рынка:

  • Целевая аудитория аудитория потенциальных потребителей, интересующая рекламодателя и имеющая определенные характеристики (как правило, речь идет о социально-демографических характеристиках, таких как пол, возраст, доход и т. д., но также могут использоваться психографические и поведенческие характеристики, такие как приверженность брендам или потребление каких-либо продуктов или услуг)

  • Баинговая аудитория аудитория, определяемая телевизионным каналом как его целевая аудитория. То есть канал определяет свою ЦА и показывает контент, соответствующий этой ЦА

  • TVR рекламного блока рейтинг рекламного блока, который вычисляется как отношение суммы посмотревших телезрителей из определенной ЦА к сумме телезрителей всей ЦА

  • GRP рекламного блока баинговый рейтинг блока, равен TVR рассчитанному на баинговую аудиторию канала. Именно по GRP происходит закупка основной части ТВ рекламы в России

  • Affinity рекламного блока (аффинитивность) отношения рейтинга рекламного блока, рассчитанного для ЦА бренда, к рейтингу блока, рассчитанного для баинговой аудитории канала (TVR ЦА / TVR баинговой аудитории)

  • CPP (cost per point) стоимость одного рейтинга в баинговой аудитории канала. Может быть больше для трансляций в прайм -айм (вечерний эфир и выходные дни). Исходя из CPP и набранных баинговых рейтингов высчитывается стоимость рекламной кампании

  • Прайм-тайм интервал времени с 19:00 до 24:00 в будни и с 8:00 до 24:00 по выходным и праздничным дням

  • Байер менеджер по закупке ТВ-рекламы

  • Рекламный блок конкретное место в сетке вещания телеканала (внутри телепрограммы или между ними), отданное под размещение рекламы

  • Рекламный спот конкретный выход рекламного ролика, размещенного в блоке. В одном блоке может быть размещено несколько спотов

  • Медиаплан документ, включающий подробную структурированную информацию о предстоящих рекламных кампаниях со сроками проведения и выделенным бюджетом.

Как уже написано выше, в России закупка ТВ-рекламы осуществляется через единого селлера НРА. Для закупки рекламы существует специальное ПО Vimb, предназначенное для размещения и отслеживания рекламных кампаний, электронного документооборота и выгрузки отчетности.

В Vimb заводится паспорт сделки со всеми параметрами и условиями будущих рекламных кампаний клиента. В сделке менеджеры (баеры) агентств создают медиапланы на требуемые рекламные события. В Vimb медиапланы заводятся на каждый канал отдельно, их длительность не превышает месяц.

Рекламная кампания на ТВ представляет из себя набор медиапланов с их размещениями. Далее в соответствии с условиями сделки и медиапланом баер агентства делает размещение рекламы в блоках каналов. У каждого рекламного блока есть баинговый рейтинг, рассчитанный НРА. В соответствии с этим рейтингом после выхода ролика в эфир будет рассчитан итоговый бюджет кампании и выставлены счета за проведение кампании.

Для Vimb существует API доступа к системе, позволяющее выгружать информацию о рекламных блоках, спотах, медиапланах, а также делать размещение, удаление и замену спотов.

Размещение рекламы делиться на несколько типов:

  • Суперфиксированный тип размещения (Суперфикс) ручное размещение спотов в выбранные клиентом блоки, с повышенным приоритетом и возможностью выбивать фиксированный тип размещения.

  • Фиксированный тип размещения (Фикс) ручное размещение спотов в выбранные клиентом блоки, в конкретных программах, в конкретные даты. Данный тип размещения выбивается суперфиксированным типом размещения.

  • Плавающее размещение (Плавание) автоматическое размещение спотов в произвольных блоках с учетом заданных условий размещения. Доступен только на орбитальных каналах. НРА самостоятельно размещает заданный объем спотов и контролирует показатели.

  • Сток низкоприоритетное автоматическое размещение спотов в произвольных блоках с учетом заданных условий размещения по принципу остатка инвентаря. Данный тип размещения выбивается остальными типами размещения.

  • Flex гибкость между каналами, автоматическое размещение спотов в произвольных блоках с учетом заданных условий размещения с возможностью перетекания объемов с канала на канал.

При размещении кампании баер должен в соответствии с условиями медиаплана и сделки соблюсти все требуемые показатели по бюджету, доли прайма, баинговым рейтингам и рейтингам на целевую аудиторию.

После постановки роликов в сетку происходит ежедневный мониторинг размещения, могут меняться требования, определяемые при планировании, может корректироваться эфирная сетка каналов (замена одной передачи другой, смещение времени эфира, появление новых эфирных событий, например, обращение президента или специальный выпуск новостей), выбивание спотов более приоритетными типами размещений. Все эти события требуют вмешательства в текущее размещение перерасчета показателей кампании и корректировки размещения.

При ручном управлении без средств автоматизации у баера на этот процесс может уходить порядка 60-80% рабочего времени. С учетом того, что у крупных агентств обычно внушительный портфель клиентов, то на эти процессы тратится большое количество сил времени и средств.

Автоматизировать эти процессы и призван Programmatic TV, который берет на себя львиную долю задач по закупке и контролю рекламных кампаний освобождая время баеров для более интеллектуального труда.

Задача

Необходимо разработать систему, которая будет в автоматическом режиме размещать рекламные кампании на ТВ, постоянно 24х7 оптимизировать эффективность размещения и контролировать все медийные и немедийные показатели. В данном случае под эффективностью мы понимаем максимизацию средней аффинитивности рекламной кампании при фиксированном бюджете размещения. Для системы необходимо разработать понятный и удобный пользовательский интерфейс, позволяющий быстро создавать рекламные кампании и вносить соответствующие настройки.

Быстрое решение, или первый блин комом

Казалось бы, что закупка рекламы на ТВ, если переводить ее на язык математики и численных методов, по сути своей является стандартной задачей о рюкзаке, для которой существуют типовые алгоритмы ее решения.

Мы сразу позвали наших математиков и Data-сайентистов и попробовали все решить в лоб, применив метод ветвей и границ. Ведь действительно, если представить, что TVR (Аффинити) стоимость, GRP вес, а емкость рюкзака равна нашему суммарному весу, заданному для кампании на одном канале, то выходит типичный рюкзак, точнее несколько по числу каналов в рекламной кампании. И на тестовом наборе данных мы получили, как нам тогда казалось, быстрое, а что самое главное математически точное решение баинговой задачи.

Обрадовавшись успеху, с результатом мы пришли в баинг и получили порцию холодного душа от них. Кроме суммы весов GRP для рекламной кампании нужно учитывать десятки различных параметров и характеристик, при этом некоторые из них не совсем математические, а больше эмпирические. При определенных условиях, используя наш алгоритм, мы вообще могли получить рекламную кампанию, состоящую из одного дня и роликов, идущих один за другим (просто они могли быть самыми аффинитивными из всего предложенного набора и подходящими по весу). Естественно, такая кампания не устроит ни баинг, ни клиента, хотя с математической точки зрения является верной.

Получив новые вводные от баинга, поняли, что выбранный алгоритм нам совсем не подходит, точнее может подойти для решения части задачи. С такими параметрами, как доля прайма (доля рейтингов которые выходят в прайм-тайм телеканалов, обычно с 19 до 23) или списком запрещенных передач как-то можно работать, при этом скорость работы алгоритма, конечно, существенно снижается.

Но как быть с таким параметром, как равномерность распределения рекламных выходов по дням кампании или характеристикой: желательно не размещаться в одинаковое время в одной и той же передаче несколько дней подряд при наличии других подходящих блоков, но когда ничего другого нет, то можно? Ищем решение дальше.

Учим компьютер работать как человек. Или даже немного лучше?

Умные люди лучшая энциклопедия (Гёте И.)

Если нельзя подобрать существующие алгоритмы для решения задачи, которые удовлетворяли бы качественно и по времени расчета, то можно попробовать научить алгоритм действовать по аналогии с человеком экспертом из этой области. Получается своеобразный гибрид экспертной системы и системы автоматизации принятия решений.

Нужно собрать много данных, очень много данных от экспертов в этой области баеров. После этого унифицировать эти данные и начать обучение нашей интеллектуальной системы.

Для этой задачи нам отлично подошли техники, применяемые при проведении кастдева (Customer Development). Во-первых, мы получили наиболее критичные проблемы, которые нужно решать в первую очередь, и которые принесут нам максимум результата.

Во-вторых, мы исходим от потребностей пользователя и сразу вносим в продукт необходимый именно ему функционал, который будет решать именно его задачи и помогать именно в тех местах, где болит сильнее всего, а не тот функционал, который мы придумали для него сами и возможно ему совсем не нужный.

И самое главное, в ходе многочисленных предметных интервью мы собрали и унифицировали практически все текущие проблемы и проработали пути их решения.

В результате мы получили полный список характеристик рекламной кампании, которые необходимо контролировать, и нам удалось формализовать в виде алгоритмов описания действий и практически все закономерности, необходимые для принятия решений при проведении рекламной кампании. Вот некоторые основные контролируемые характеристики и ограничения:

  • Бюджет кампании

  • Соблюдение доли кампании, выходящей в прайм-тайм в заданных пределах для каждого канала

  • Соблюдение распределения весов на ролики

  • Соблюдение объема рейтингов по каждому из каналов кампании

  • Учет приоритетных и запрещенных программ

  • Учет заданных для канала приоритетных временных интервалов

  • Учет заданных ограничений по дням/периодам

  • Соблюдение равномерности по дням заданного периода

  • Соблюдение равномерности в течение дня

  • Соблюдение равномерности в соседних днях

  • Учет среднеканального аффинити, чтобы заранее отсеивать размещения, которые невыгодны для покупки, для них количество потраченных баинговых рейтингов дает маленькое количество целевых рейтингов, по сравнению с аналогичными блоками на этом канале

  • Соблюдение минимального заданного аффинити на прайм и оффпрайм

  • Контроль выходов в одной и/или разных передачах с заданным минимальным интервалом

  • Учет динамики изменения баинговых рейтингов рекламного блока для максимизации фактических рейтингов, т. е. занять размещение в тех блоках, в которых фактический рейтинг будет больше текущего

  • Учет максимального количества выходов в день на канале

  • Учет выходов конкурирующих брендов одного рекламодателя, чтобы не занимать одинаковые рекламные блоки своими конкурирующими между собой товарами или услугами.

  • Учет позиций выходов рекламы в блоке при заданном объеме позиционирования. Позиционирование дает возможность за дополнительную плату выбирать порядок рекламного ролика в занимаемом блоке, в начале блока или в конце. Обычно задается в % от объема всего размещения на канале

Понятно, что с таким набором параметров, особенно учитывая количество доступного для размещения рекламы инвентаря в телевизионной сетке, уже не идет речи о каком-то типовом алгоритме, решающем задачу. Ведь нам важно ее не только правильно решить, но еще постараться успеть это сделать пока выбранные рекламные споты доступны, а если они уже заняты, то дооптимизировать кампанию с учетом текущих изменений.

Мы решили перевести все заданные ограничения в набор функций и логических условий, разбить нашу оптимизацию на этапы, а для подбора рекламных блоков на каждом этапе использовать жадный алгоритм. Кроме этого, сам алгоритм должен работать как с новой постановкой кампании, когда идет размещение блоков с нуля, так и с уже расставленной ранее кампанией. Получилась примерно следующая конструкция, которая применяется к каждому из медиапланов рекламной кампании:

  • Этап 1 Подготовительный

    На этом этапе загружаем все необходимые данные по текущей сетке блоков и для оптимизации настройки рекламной кампании.

  • Этап 2 Помечаем на удаления ранее сделанные неудачные размещения

    Здесь мы проверяем текущую расстановку (если она уже есть) на соответствие заданным условиям. По характеру несоответствия мы помечаем неподходящие споты на обязательные и рекомендуемые к удалению.

  • Этап 3 Размещение новых спотов или Базовая оптимизация

    На этом этапе мы делаем размещение спотов в соответствии с заданными настройками, выбирая наиболее аффинитивные позиции под заданный объем и соблюдая равномерности размещения

  • Этап 4 Корректировка базовой оптимизации

    На этом этапе мы пытаемся более точно скорректировать размещение, полученное на этапе базовой оптимизации, под заданный план, выбирая возможные варианты перестановок или замен. В первую очередь, корректировки касаются бюджета, аффинити, доли прайма и равномерности

  • Этап 5 Проверка корректности оптимизации

    На этом этапе производим оценку качества и корректности оптимизации при помощи логических и оценочных функций. Если новое размещение хуже текущего, проводим попытку дооптимизации или возвращаемся к текущему размещению

Алгоритм работает быстро и находит оптимальное решение поставленной задачи как по максимизации показателей кампании, так и по соблюдению заданных настроек и ограничений.

Одного алгоритма мало, нужно его еще правильно использовать

Для удобства работы с системой мы унифицировали все используемые у нас подходы к размещению рекламы на ТВ и пришли к парадигме рекламной кампании в интернете, когда вносим основные настройки, запускаем кампанию и далее только контролируем ее проведение, всю рутину система берет на себя.

Баер заводит в систему рекламную кампанию и ставит ее на Автопилот.

Автопилот автоматическое управление рекламной кампанией с целью максимизации показателей и соблюдением заданных настроек и ограничений.

Ввиду специфики российского ТВ рекламная кампания логически делится на несколько частей в соответствии с типами размещения. Автопилот использует разные стратегии для работы с разными типами размещений. Например, суперфикс достаточно оптимизировать пару раз в день, а в оставшееся время следить за освобождением мест в наиболее востребованных передачах, а фиксированное размещение требует постоянного контроля и дооптимизации по причине выбивания суперфиксом.

При этом, когда оптимизируем один тип размещения, необходимо учитывать показатели и расстановку остальных типов, иначе можно не добрать до плана или расставить по три выхода в одинаковых рекламных блоках, что не прибавит кампании эффективности.

Дополнительно стоит заметить, что в реальной жизни наличие свободного места для размещения постоянно меняется и часто можно получить ошибку API В выбранном вами блоке недостаточно свободного места, поэтому после оптимизации и размещения новых блоков мы проверяем, все ли успешно разместилось, и только после этого избавляемся от блоков, помеченных на удаление. А если что-то не получилось, то мы отправляем медиаплан на дооптимизацию.

Если автопилота недостаточно и требуется оперативно внести изменение в размещение, то предусмотрен ручной режим работы: с визуализацией предлагаемых новых размещений и корректировки старых, с визуализацией оптимизируемых медийных и не медийных характеристик кампании. Например, это планируемый после оптимизации аффинити, количество целевых рейтингов или бюджет.

Если размещение кампании происходит впервые, то предусмотрена возможность запустить так называемую первоначальную постановку кампании, в этом режиме все кампании оптимизируются в режиме 24х7, набирая объемы под заданный план.

Что под капотом?

Исторически сложилось, что у нас в большинстве случаев используются решения, основанные на продуктовой линейке Microsoft. Платформа Programmatic TV не стала исключением.

Programmatic TV представляет из себя набор сервисов, клиентское приложение и базу данных.

Для хранения всех необходимых данных была выбрана СУБД MS SQL.

В качестве технологии реализации сервисов была выбрана технология gRPC.

Клиентская часть представляет из себя десктопное WPF приложение.

Аутентификация всех сервисов и клиентской части проходит через SSO.

Логирование реализовано в виде отдельно сервиса, которое позволяет не только сохранять логи в elastic, но и осуществлять сбор определенных метрик, сохраняя их в собственную БД.

Основные сервисы и их работа:

  • Сервис доступа к API Vimb основная цель единая точка взаимодействия с НРА, контроль всех ограничений на каждый метод, накладываемых НРА, такие как максимальное количество одновременно вызываемых потоков, контроль максимально допустимого получения объема данных за определенное время, максимальное количество вызовов метода за определенное время

  • Сервис синхронизации и загрузки данных Vimb. По заданному расписанию загружает и синхронизирует данные от Vimb через сервис доступа к API Vimb

  • Сервис доступа к данным. Включает предоставление всех необходимых данных для работы клиентской части

  • Сервис расчета медиапоказателей, который рассчитывает фактические и прогнозные показатели рекламных кампаний. Фактические показатели рассчитываются на базе СУБД ClickHouse

  • Набор сервисов по автоматизации ведения рекламных кампаний. Среди основных функций автономное ведение кампаний, в т. ч. оптимизация и постановка рекламных кампаний, уведомления клиентов о состоянии и показателях рекламной кампании, а также еще ряд функций, которые делают жизнь легче J.

Сухие цифры по работе TV Programmatic системы

Среднее количество кампаний в месяц, находящихся под управлением системы

249 рекламных кампаний

Среднее количество действий со спотами в контролируемых рекламных кампаниях за сутки

24000 добавлений, 19000 удалений, 265000 спотов оставлено как подходящие условиям кампании

Количество спотов фиксированного типа размещения за год

4732657 спотов, из них поставлено через Programmatic TV 3535984. Примерно 75% общего объема фиксированного размещения по Национальному ТВ, Региональному ТВ и Тематическому ТВ

Количество знаков в годовом бюджете кампаний контролируемых через TV Programmatic

11-значный бюджет под управлением системы

Эффективность Programmatic TV по сравнению с ручной постановкой, выполненной человеком на идентичных кампаниях с одинаковой целевой аудиторией набором параметров и бюджетом

Рост на 5 - 10% средней аффинитивности рекламной кампании

Сокращение трудозатрат, связанных с размещением и контролем рекламных кампаний при использовании Ptorgammatic TV

Снижение трудозатрат на 40-50%

Подробнее..

Гайд по тестированию рекламы для мобильных приложений

15.06.2021 18:13:51 | Автор: admin

Тестировать рекламные механики не так просто, как может показаться. Главные действующие лица здесь сторонние SDK, которые не особо подконтрольны команде разработки. А так как рекламные интеграции важная часть наших мобильных приложений, то ниже вместе с @maiscourt и @santypa расскажем, как мы это делаем.

Далее список инструментов с описаниями, задачи тестирования и некоторые внутренние гайдлайны.


Для тестирования в основном используется тестовая реклама, которую партнёры готовят заранее. Это делается, потому что разные характеристики рекламы на продакшене не позволяют быть уверенным, что новый функционал или фикс бага не задели основные параметры и работу рекламного креатива.

Но получение тестовой рекламы требует изменения определённых параметров в наших экспериментах, обращения к тестовой админке медиатора, добавления тест-мода (специальные параметры, чтобы партнёр понимал, что запрашивается именно тестовый креатив), использования своей дебаг-панели, а также VPN по странам, а в отдельных кейсах по городам.

И тут нам понадобятся некоторые инструменты.

Инструменты

Ниже список инструментов, которые мы используем при тестировании рекламы, а потом перейдём к задачам.

  1. Сниффер для анализа трафика (у нас Charles).

  2. Админка у медиатора, где можно настроить получение рекламы от конкретного партнёра на свой тестовый юнит (специальный id, используя который, паблишер запрашивает рекламу у медиатора).

  3. Своя админка с фича-тогглами, где можно включить/отключить, или изменить наши эксперименты.

  4. Наша дебаг-панель.

  5. VPN.

  6. Внешние гайдлайны.

  7. Внутренняя база знаний и Confluence для её хранения.

  8. Чек-листы.

  9. Zephyr для хранения тест-кейсов.

Пройдёмся по каждому.

Инструмент 1. Charles. Активно используется не только тестировщиками, но и разработчиками. Практически все задачи требуют замены продакшн параметров на тестовые. Например, часто возникает необходимость добавить в конфиг эксперимент или обращаться к тестовым юнитам медиатора.

К тому же для тестирования при запросе рекламы необходимо добавлять дополнительные параметры тест-мода. Также довольно часто требуется имитировать проблемы с загрузкой креативов и проверять их с нужными параметрами, например, во время регрессионного тестирования.

Инструмент 2. Тестовая админка медиатора. Медиатор это специальная платформа, которая позволяет подключать приложение сразу к нескольким рекламным сетям, а также управлять показом рекламы (например, Google AdMob, Fyber и другие). Ещё во время онбординга мы проводим обучающие курсы по рекламе, где сотрудники в тестовой админке медиатора создают свой тестовый юнит для настройки параметров рекламы под себя.

Инструмент 3. Админка с фича-тогглами. Практически все рекламные (и не только) механики в приложении iFunny закрыты под фича-тогглы (механизм реализации, при котором часть кода прячется за флаг, контролирующий его включение или выключение). Это нужно, чтобы сделать более надёжным и безопасным выпуск той или иной функциональности.

Чтобы получить нужный для тестирования конфиг, мы используем нашу админку с фича-тогглами или подменяем параметры, используя Charles. А эксперименты помогают понять, какая из запущенных гипотез является наиболее оптимальной. Всё это есть в нашей админке, которая хранит данные и управляет ими по всем фичам и экспериментам.

Документацию обновляем и дополняем по мере необходимости: если после обновления SDK изменилась описанная логика работы, или если вышли нормативы/регламенты, требующие внесения обязательных правок.

Инструмент 4. Дебаг-панель. Для удобства разработали свою рекламную дебаг-панель, которая представляет собой отдельный интерфейс и в большинстве случаев позволяет локально на клиенте настроить необходимые параметры, заменяя собой практически все инструменты, описанные выше.

Инструмент 5. VPN. В основном используется для проверки задач, связанных с GDPR и CCPA. Для тестирования GDPR подходит VPN с возможностью получения IP европейской страны. Для тестирования CCPA необходим VPN с возможностью получения калифорнийского IP.

Инструмент 6. Внешние гайдлайны. В работе с рекламными SDK часто используем их официальную документацию, где можно получить:

  • рекламные креативы и их идентификаторы, которые используются для настройки и получения тестовой рекламы;

  • форматы запросов и ответов рекламной SDK, а также параметры, из описания которых понимаем, за что они отвечают, и какие возможные значения для них допустимы;

  • changelog изменений рекламных SDK чтобы понять, на какие изменения при обновлении SDK нужно обратить внимание во время тестирования.

Инструмент 7. Внутренняя документация. Внешние гайды не всегда являются достаточно подробными. Кроме того, проверка одной и той же функциональности от разных SDK требует переключения между разными источниками для поиска необходимой информации. Поэтому оказалось удобным агрегировать информацию из разных гайдлайнов SDK и делать сборную внутреннюю документацию в нашем Confluence, дополняя её своими комментариями.

Инструмент 8. Чек-листы. Наравне с внешней и внутренней документацией для проверок различных задач используем чек-листы (пример можно посмотреть ниже в разделе про обновление SDK). Для такого типа задач, как проверка обновлений SDK, обновлений медиатора или адаптеров, мы используем уже составленный чек-лист, который изменяется по мере необходимости.

Для остальных задач составляем чек-листы либо в процессе разработки задачи, либо непосредственно перед тестированием, в зависимости от сложности задач.

Инструмент 9. Тест-кейсы. Тест-кейсы неотъемлемая часть тестирования любого проекта/функциональности, в том числе рекламы. Тест-кейсы разделены по приоритетам, что позволяет использовать risk-based testing, о котором будет рассказано подробнее ниже. В тест-кейсах фигурируют такие проверки, как загрузка и показ рекламы, запросы на рекламу, работа разных механик (например: водопад, аукцион), а также запрос и отображение рекламы от партнёрских рекламных сетей. Данные проверки в полной мере позволяют убедиться, что рекламный функционал работает без сбоев/корректно.

Задачи

Тестирование рекламных интеграций, чтобы все механики работали как часы довольно трудоёмкий процесс. Среди всех задач есть много рутинных, но они компенсируются интересными и технически сложными исследованиями по ходу проработки других задач.

Разберём, с чем приходится сталкиваться на постоянной основе:

  1. Обновление SDK.

  2. Тестирование форматов.

  3. Безопасность.

  4. Регрессионное тестирование.

  5. Смоук тестирование.

  6. Другие задачи (юридические вопросы, локализации, эксперименты, аналитика, рефакторинг и так далее).

Задача 1. Обновление SDK. Можно сказать, что обновление SDK наиболее популярная задача в рамках тестирования рекламы. Из-за частого проведения тестирования обновлений SDK (а также медиатора или адаптеров) составили чек-лист проверок:

  • Вёрстка. Проверяем всё: центрирование, размер, отображение на устройствах с разными разрешениями экранов.

  • Пользовательские сценарии. Тап по контенту/кнопке и по privacy icon, возврат в приложение, воспроизведение и остановка видеорекламы.

  • Репорт (отправка жалоб, связанных с рекламой). Пользователь может пожаловаться на рекламный контент или сообщить о технических проблемах.

  • Соответствие стандартам GDPR и CCPA.

  • Отправка аналитики. Внутренняя и внешняя (партнёру и медиатору).

  • Технические проверки. Например, уход в фон во время загрузки рекламы.

Задача 2. Тестирование форматов. Баннерная и нативная рекламы у нас закрепились и работают стабильно, но мы пробуем интегрировать и другие виды, в частности, fullscreen-рекламу. В целом, тестирование Rewarded Video и Interstitial во многом схоже с тестированием других видов: проверяется корректная загрузка и отображение рекламы, а также отправка аналитики.

Ключевым в проверке fullscreen-рекламы является её отображение на разных по диагонали экранах, например, на смартфоне и планшете. Важно, чтобы появившаяся на экране реклама не перекрывалась другими элементами, и по завершению таймера скрывалась автоматически или тапом по крестику, возвращая пользователя в исходную точку приложения:

Отдельно нужно сказать про механику Rewarded Video после окончания просмотра рекламы (или просмотра до определённой временной метки) пользователь должен получить вознаграждение. Поэтому очень важно хорошо протестировать этот функционал.

Подробно про разные форматы мобильной рекламы мы уже писали в отдельной статье.

Задача 3. Безопасность. Чтобы следить за качеством трафика, интегрировали в iFunny внешнее антифрод-решение. В него для дополнительной проверки атрибуции показов и кликов на каждое событие генерируется новое. На стороне системы с помощью технологий машинного обучения и большого объёма накопленных данных происходит дальнейший анализ. Со своей стороны мы проверяем отправку и разметку событий для разных сетей и разных типов рекламы.

Задача 4. Регрессионное тестирование. Раз в две недели iFunny релизится на iOS и Android. Независимо от количества рекламных задач, попавших в релизную ветку, мы проводим регрессионное тестирование рекламного функционала/блока. В регрессионных паках собраны следующего рода проверки:

  • Основные проверки, что реклама запрашивается и отображается на нужных экранах приложения.

  • Работа нативной и баннерной рекламы, а также рекламных сетей, с которыми сотрудничаем по сути, это упрощённый чек-лист, используемый для тестирования SDK (добавления, обновления).

  • Работа разных механик: водопад и биддинг (что это такое, можно ознакомиться здесь).

  • Проверка на соответствие юридическим нормам.

  • Проверки каких-то наших внутренних разработок (например, эксперименты с дизайном).

Если встречаем проблемы в процессе тестирования (не проходят какие-то кейсы регресса), то чиним в текущей релизной ветке не катимся с рекламой, которая не работает.

Проведение полного ручного прогона регресса занимает порядка 2-3 дней. Поэтому, чтобы сократить время прохождения регресса, используется практика проведения Risk-based testing (вид тестирования, основанный на вероятности риска). Суть такого тестирования исключить некоторое количество тест-кейсов из прогона, проведение которых не может выявить потенциальных ошибок на текущем релизном билде. Иными словами, кейс не имеет смысла включать в регрессионное тестирование, если при разработке не был затронут функционал, проверяющийся в кейсе.

Задача 5. Смоук тестирование. Перед тем, как выкладывать сборку в сторы, а также при тестировании хотфиксов, мы прогоняем смоук тесты. В рамках смоук тестирования реклама проверяется, но не так детально, как при регрессе. Мы тестируем основные моменты, связанные с рекламой, а именно её загрузку и отображение.

Задача 6. Другое. К тестированию других задач можно отнести:

  • юридические задачи, например, связанные с GDPR и CCPA;

  • задачи локализации (для пользователей iFunny из Бразилии);

  • эксперименты, связанные с дизайном рекламы;

  • задачи аналитики;

  • рефакторинг, оптимизации. Например, оцениваем доступный нам для анализа контент на предмет валидности.

Бонус. Онбординг новых сотрудников

От рекламы напрямую зависит доход приложения, но на рынке не так много людей, досконально разбирающихся в вопросе. Поэтому, помимо чеклистов и гайдлайнов, мы подготовили целый обучающий курс из лекций и семинаров.

Всё обучение делится на два блока. Первый блок состоит из лекций о базовых знаниях, что такое водопад и аукцион; каким образом приложение получает рекламу и какие действия происходят при её обработке; какая бывает аналитика и по каким триггерам собираются события. Краткое содержание этих лекций можно найти здесь.

Во втором блоке рассказывается о том, какие рекламные механики работают в iFunny. Здесь теоретический материал подкрепляется практикой каждый участник семинара учится получать определённый вид рекламы от наших партнёров и работать с необходимыми инструментами. Практические задания курса образуют своего рода задачник. Прорешав его, можно с уверенностью приступать к реальным задачам из бэклога.

Записанный на видео цикл встреч хранится вместе со всеми сопутствующими материалами в базе знаний компании и обновляется по мере необходимости. В адаптационном чек-листе каждого сотрудника отдела тестирования мобильных приложений есть специальный пункт изучение рекламных тематик. В зависимости от задач сотрудника определяется необходимый минимум знаний, но при желании любой в команде может пройти полный курс на это будет специально выделено время. По окончании онбординга каждый сотрудник отдела тестирования мобильных приложений способен самостоятельно закрыть рекламные тест-кейсы на этапе смоук тестирования.

Вместо заключения

К сожалению, подавляющее большинство задач при тестировании рекламы так или иначе связаны с внешними интеграциями, поэтому автоматизировать такое тестирование проблематично. Но это направление можно рассматривать как точку роста для технической команды это уже следующий шаг в оптимизации, над которым планируем работать.

Подробнее..

Автоматизация сбора данных по рекламным компаниям сделай жизнь проще

03.02.2021 20:08:13 | Автор: admin

Я 5 лет в интернет-маркетинге, и львиную долю своего времени трачу на сбор отчетов по рекламным размещениям. По моим наблюдениям, маркетологи не часто задаются вопросом, как облегчить сбор данных по рекламным кампаниям для аналитика или (сейчас скажу страшную вещь), как можно собирать данные самостоятельно и анализировать собственный трафик самому.

Хочу поделиться best-practices и дать несколько готовых наработок, которые пригодятся и маркетологам, и состоявшимся маркетинговым аналитикам.

Этот лонгрид целиком и полностью посвящён вопросам, которыми занимается web-маркетинг и основан на моем личном опыте работы с ребятами из маркетинга Лиги Ставок. (Про мобильную рекламу, mobile-marketing, как мы строили Buying Dashboard и клиентскую аналитику еще в mobio.ru я могу говорить бесконечно и, может быть, напишу отдельно.)

1) Важность разметки.

Краеугольный камень всей аналитики, который может увеличивать время сбора отчета с 15 минут до 15 часов и больше разметка рекламных кампаний.

Интернет-маркетинг работает по разным моделям (CPM, CPC для медийки, комиссия, RevShare и CPA для перформанс-маркетинга). Выделяю два основных момента: источник трафика и трекер размещения. Дьявол, как известно, кроется в деталях - очень много маленьких и важных моментов, которые бы хотелось обсудить. Но обо всем по порядку:

  1. Стоимость рекламного размещения.

    В качестве источника трафика могут быть как рекламные площадки (MyTarget, Google Ads, Google DV360, Facebook, разные DSPшки), так и рекламные серверы, которые трекают размещения баннерной рекламы у партнеров (показы и клики). В данной статье мы рассмотрим сбор костов с рекламного сервера Adfox side проекта Яндекса. Можно выстроить аналогичные решения для абсолютно любого источника, но для некоторых, например, MyTarget и Facebook, вам не обойтись без вашей разработки. Из источников трафика вы сможете вытаскивать на ежедневной основе данные по показам / кликам, а также по стоимости размещения.

  2. Выручка с рекламы.

    В парадигме 2021 года рынок ушел от бездумного размещения рекламы, где мы просто тратим маркетинговый бюджет направо и налево, придя к прямому (CPA, RevShare) или косвенному (различные hard- и soft- KPI) оцениванию рекламных размещений. В качестве основного мерила в вебе используется Google Analytics. Там можно достаточно просто настраивать цели как на различные события, происходящие на веб-сайте (регистрация, добавление в корзину, совершение целевого события), так и на различные бихевиористические характеристики (длительность сеанса, показатель отказа, время пребывания на отдельной странице продукта). Основной задачей в построении отчетов здесь является выгрузка достижения одной или нескольких целей, на которые таргетируется закупка рекламы в разбивке по источникам трафика.

  3. Нейминг наше все.

    Главная задача, которая решается с помощью аналитики сведение данных по стоимости и выручке в одном месте таблице или визуализированном дашборде. Несмотря на всю простоту и наглядность второго, многим людям чисто по восприятию удобнее пользоваться именно табличным видом отчета. Но вернемся к неймингу.

    Для получения данных о выполнении целей в рекламной кампании в Google Analytics можно использовать несколько параметров, записываемых после знака ? в ссылке.
    Это параметры:

    Источник рекламного размещения (utm_source)

    Название кампании (utm_campaign)

    Тип трафика (utm_medium)

    Размещаемый баннер (utm_content)

    Ключевое слово (utm_term)

    Последний не особо используется в Лиге из-за запрета на рекламу букмекерских организаций в сети Гугла и Яндекса, так что в нашей компании мы остановились на первых четырех.

    Основные ошибки, которые совершаются при заведении рекламных кампаний:

    - Название источника / рекламной кампании не должно содержать пробелов, иначе URL-ссылка обрезается, и все параметры справа от нее пропадают в неизвестность.

    - Название рекламной кампании указывается по-разному для разных ссылок (например, в нашей крутейшей акции с кэшбеком) при создании кампаний можно было встретить различное написание слова кэшбек, использование или нет цифр: (cashback, kashback, cashback10, cash10)

    - Тип баннера указывался по-разному, а его размер указывался не всегда, и иногда ставился перед / после названия типа баннера (mobile_640x480, 640x480_mobile).

    - Если баннер делался под конкретное событие (финал Лиги Чемпионов УЕФА), то название события писалось в разных местах тега utm_content, а иногда кочевало в utm_campaign.

    В результате долгой работы мы пришли к выводу, что самый оптимальный способ нейминга рекламных кампаний должен выглядеть следующим образом:

    Utm_source источник трафика/партнер/паблишер, который должен выбираться из выпадающего списка для единообразности написания

    Utm_campaign название кампании, которое мы выбираем перед ее началом и далее оно выбирается из выпадающего списка

    Utm_medium тут все просто, мы обычно используем форматы cpm/cpc

    Utm_content тут мы решили, что самым простым будет использовать нейминг типа

    {тип баннера}_{размер баннера}|{используемый макет}. Так мы довольно просто смогли разбивать трафик и смотреть конверсии по каналам в разбивке до баннера.

    Следующий немаловажный шаг настроить запись меток из трекинговой ссылки так, чтобы она соответствовала параметрам создаваемой рекламной кампании. Здесь для рекламного сервера Adfox мы можем управлять только двумя сущностями: название рекламной кампании и название баннера. Упросить задачу в некоторых случаях может создание в рекламном сервере баннеров разного размера, но ввиду особенностей работы с партнерами в Лиге Ставок и передачи им трек-ссылки в виде пикселя мы обычно делаем баннеры стандартного типа, так что пришлось креативить. Оптимально в имени кампании указывать название партнера, а в названии баннера указывать {utm_campaign} - {тип баннера из utm_content} - {размер баннера} | {спортивное событие}.

    Использование правильной разметки позволило сильно сократить время создания отчетов (до 15 минут), а маркетологам быстро и эффективно оценивать размещения на партнерских сайтах с самой максимальной разбивкой и оперативно тестировать и отключать неработающие каналы.

    В качестве лучших практик здесь отдельно отмечаю важность автоматизации нейминга. Все мы люди, все мы ошибаемся (в отличие от умных машин). Мы можем не заметить и пропустить орфографическую ошибку / опечатку, добавить лишний пробел или знак. Во вложении я добавлю шаблон файла с описанием, который можно скопировать себе и создавать трекинговые ссылки для ваших рекламных кампаний.

2) Автоматизация сбора костов.

Рекламный сервер Яндекса Adfox является удобным способом работы с партнерами. Он позволяет собирать данные по показам и кликам по рекламным объявлениям на основе генерируемых ссылок. При работе с партнерами и рассчёте эффективности наших медийных размещений в вебе мы обычно ориентируемся именно на данные нашего Adfox в разбивке по кампании, баннеру и дате. Сначала с аккаунта с уровнем рекламодатель необходимо авторизоваться в кабинете разработчика Яндекса. Далее нажать подключить API, выбрать из выпадающего списка Adfox. В результате вы получите токен, по которому можно обращаться к API адфокса и выгружать статистику.

Дальнейшая логика предельно простая. Вся ее работа описана и реализована в документе.

1. Вытаскиваем список кампаний для рекламного кабинета:

function getCampaignList(key) {

var key = '' // INSERT YOUR API TOKEN HERE

var url = 'https://adfox.yandex.ru/api/v1?object=account&action=list&actionObject=campaign&show=common&limit=200'

var table = []

var option = { headers : {'X-Yandex-API-Key' : key}

var request = UrlFetchApp.fetch(url, option);

//decode data

var text = request.getContentText("windows-1251");

var cdata = text.split('<ID>')

//parse data

// Adfox отдает нам данные, которые можно распарсить по открывающим и закрывающим

//тегам <ID>

for(var i in cdata)if(i!=0){

var id = cdatat[i].split('</ID>')[0]

var cname = test[i].split('<name>')[1].split('</name>')[0]

var row = [id,cname]

table.push(row)

}

2. Вытаскиваем по полученным кампаниям списки баннеров по каждой рекламной кампании, затем по этим баннерам берём статистику за конкретные даты. В дальнейшем, используя предыдущие ухищрения, мы парсим название баннера на UTM метки и получаем нужную разбивку. Общий скрипт выглядит примерно так:

function getBannersList(){

//get campaign info

var key = '' // INSERT YOUR API TOKEN HERE

var campdata = getCampaignList(key)

var table = [];

table.push(['Campaign ID','Campaign Name','Banner ID','Banner Name'])

//get paginated list of banners. Пагинация тут добавлена, потому что нередко по кампании //может быть больше 100 баннеров и URL будет слишком большим

for(var a in campdata){

var campbanners = []

var campid = campdata[a][0];

var cname = campdata[a][1];

var url =

'https://adfox.yandex.ru/api/v1?object=campaign&action=list&actionObject=banner&show=common&limit=1000&objectID='+campid

var option = {

headers : { 'X-Yandex-API-Key' : key } }

var request = UrlFetchApp.fetch(url, option);

//decode

var text = request.getContentText("windows-1251");

var test = text.split('<ID>')

// parse

for(var i in test)if(i!=0){

var bid = test[i].split('</ID>')[0];

var bname = test[i].split('<name>')[1].split('</name>');

campbanners.push(bid);

table.push([campid,cname,bid,bname])

}

//pagination

var a = campbanners.length

for(var x=0; x<a; x = x + 100){

var start = x;

var end = x + 100;

if(a>end)var banners = campbanners.slice(start, end);

else{banners = campbanners.slice(x,a)};

var banners = campbanners.slice(start, end)

banners = '['+banners.toString()+']'

//get taskid for the data batch

var taskid = orderData(banners,key) //эта функция будет изложена дальше

// Logger.log(taskid); //For testing Purposes

Utilities.sleep(5000) //its better to have a 5 sec delay

var data = getData(taskid,cname,bname,key); // SEE the code in utilities.gs

}

}

SpreadsheetApp.getActive().getSheetByName('banner list').getRange(1,1,table.length,table[0].length).setValues(table);

return;

addCorectBname()

return test;

}

3. Сама функция получения статистики по баннерам выглядит примерно так:

function orderData(banners,key,date){ //gets taskId for the batch

// По умолчанию вытаскивает данные за "вчера"

// Можно также прописать конкретные даты заменив ниже date на конкретные даты.

var date = new Date();

date.setHours(-20);

date = date.toISOString().substr(0,10)

var datefrom = date //'2020-08-01';

var dateto = date //'2020-09-27'

var url =

"https://adfox.yandex.ru/api/report/banner?name=days&bannerId="+banners+"&dateFrom="+datefrom+"&dateTo="+dateto+"&precision=high";

var option = { headers : { 'X-Yandex-API-Key' : key } }

var request = UrlFetchApp.fetch(url, option);

var text = request.getContentText();

var json = JSON.parse(text);

var taskid = json['result']['taskId'];

return taskid;

}

// Дальше по каждому таск id получаем данные

function getData(taskId,campname,banname,key){ //gets Report via task ID

var url = 'https://adfox.yandex.ru/api/report/result?taskId='+taskId;

var option = { headers : { 'X-Yandex-API-Key' : key } }

var request = UrlFetchApp.fetch(url, option);

var text = request.getContentText();

var json = JSON.parse(text);

var table = []

var title = json['result']['fields'];

var tab = json['result']['table'];

for(var i in tab){

var row = tab[i]

row.push(campname,banname);

table.push(row)

}

if(table.length > 0){var t =

SpreadsheetApp.getActive().getSheetByName('data').getDataRange().getValues();

SpreadsheetApp.getActive().getSheetByName('data').getRange(t.length+1,1,table.length,table[0].length).setValues(table);

}

return json;

}

Данный скрипт позволяет вытащить данные по всем рекламным размещениям Adfox. Для получения дополнительных кастомных данных можно обратиться к API документации Яндекса.

3) Автоматизация расчета прибыли.

Для автоматизации расчета прибыли нужно создать на нужное событие цель в Google Analytics и назначить ему ценность (а также можно прокидывать в содержание события реальную цену события). После этого довольно удобно через API Google Analytics получить данные в нужной разбивке. Рабочий скрипт также указан в файле во вкладке GA.

Выглядит он примерно так:

function nextDay(date,loop){

// var loop = 0 // 0 - сегодня, положительное число - дни +, отрицательное - дни-

// var date = new Date()

var day = 1000 * 60 * 60 * 24;

var b = new Date(date.getTime()+loop*day)

b = b.toISOString().substr(0,10); // - если надо выводить в формате для отчета

return b;

}

function runDemo() {

var date = new Date();

date.setHours(12);

for(var i=1;i<=1;i++){

var datefrom = nextDay(date,-1*i)

var dateto=datefrom;

try {

var firstProfile = getFirstProfile();

var results = getReportDataForProfile(firstProfile,datefrom,dateto);

outputToSpreadsheet(results);

}

catch(error) {

Browser.msgBox(error.message);

}

}

}

function getFirstProfile() {

var accounts = Analytics.Management.Accounts.list();

if (accounts.getItems()) {

var firstAccountId = accounts.getItems()[0].getId();

Logger.log(firstAccountId)

var webProperties = Analytics.Management.Webproperties.list(firstAccountId);

if (webProperties.getItems()) {

var firstWebPropertyId = webProperties.getItems()[0].getId();

Logger.log(firstWebPropertyId)

var profiles = Analytics.Management.Profiles.list(firstAccountId, firstWebPropertyId);

if (profiles.getItems()) {

var firstProfile = profiles.getItems()[0];

var tolog = firstProfile.getId()

Logger.log(tolog)

return firstProfile;

}

else {

throw new Error('No views (profiles) found.');

}

}

else {

throw new Error('No webproperties found.');

}

}

else {

throw new Error('No accounts found.');

}

return;

}

function getReportDataForProfile(firstProfile,datefrom,dateto) {

var profileId = firstProfile.getId();

var tableId = 'ga:' + profileId;

var startDate = datefrom

var endDate = dateto

var optArgs = {

'dimensions':'ga:source,ga:campaign,ga:medium,ga:adContent,ga:date', // Comma separated list of dimensions.

'metrics': 'ga:users,ga:sessions,ga:newUsers,ga:bounces,ga:goal10Completions',

'segment': 'gaid::-1', //

'samplingLevel': 'HIGHER_PRECISION',

'start-index': '1',

'max-results': '1000000'

};

// Make a request to the API.

var results = Analytics.Data.Ga.get(

tableId, // Table id (format ga:xxxxxx).

startDate, // Start-date (format yyyy-MM-dd).

endDate, // End-date (format yyyy-MM-dd).

'ga:sessions',//,ga:pageviews', // Comma seperated list of metrics.

optArgs);

if (results.getRows()) {

return results;

}

else {

throw new Error('No views (profiles) found');

}

}

function outputToSpreadsheet(results) {

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GA");

var indexFrom = sheet.getDataRange().getValues().length

var headerNames = ['ga:source','ga:campaign','ga:medium','ga:adContent','date','ga:users','ga:sessions','ga:newUsers','ga:bounces','1 цель']

sheet.getRange(1, 1, 1, headerNames.length).setValues([headerNames]);

sheet.getRange(indexFrom+1, 1, results.getRows().length, headerNames.length).setValues(results.getRows());

}

Далее можно немного обработать и свести данные. Воспользуйтесь бесплатным и удобным для интеграции сервисом Google Data Studio. С помощью таких несложных ухищрений даже в небольших компаниях и стартапах можно без труда начать замерять эффективность работы с партнерами. В целом есть доработки и по другим рекламным сервисам, так что пишите в комментариях, делитесь своими болями, возможно, удастся вам помочь. :-)

Подробнее..

Перевод Почему вся реклама сегодня выглядят одинаково?

23.05.2021 14:09:40 | Автор: admin


Стиль иллюстрации: плоский, с геометрическими формами, фигуральный, обычно составленный из однотонных цветов. Безликие фигуры разбросаны по железнодорожным станциям и автобусным остановкам, от финтех-компании MoneyFarm и Trainline до сервиса доставки Виагры GetEddie. Даже собственный брэндинг Transport for London, завоевавший себе особое место в истории модернистского графического дизайна, начинает перенимать этот стиль.

Это эстетику часто называют Corporate Memphis, она стала узнаваемым стилем крупных технологических компаний и мелких стартапов, его постоянно имитируют и создают всё больше пародий. В нём используются простые сцены с плоскими мультяшными фигурами, иногда с небольшим искажением пропорций (самым распространённым из них стали длинные гнущиеся руки), сигнализирующие о том, что компания интересна и креативна. Corporate Memphis никого не оскорбляет и прост в реализации, и хотя его происхождение уходит корнями в маркетинг технологических компаний и дизайн пользовательских интерфейсов, этот тренд начал пожирать и весь мир визуала в целом. Также он навлёк на себя активную критику со стороны мира дизайна.

Честно говоря, он меня бесит, говорит иллюстратор из Лидса Джек Харли, в основном занимающийся созданием постеров в тематике бесшабашного веселья на море. Харли познакомился с этим стилем на странице логина Facebook, но потом начал встречать такие иллюстрации и вокруг себя. Я живу в студенческом районе и тут есть по-настоящему мерзкие агенты по аренде жилья. Внезапно они переняли весь этот маркетинговый стиль с людьми, имеющими очень гибкие руки.

Особенно популярен Corporate Memphis был в сфере финтеха и недвижимости. Для мелких компаний, стремящихся выделиться, этот причудливый стиль стал более простым решением, чем графика из стоков. Но он стал виновником того, что визуальная культура Интернета становится более однородной и скучной. Благодаря Corporate Memphis большие технологические компании выглядят дружелюбными, отзывчивыми, уделяющими внимание взаимодействию на уровне людей и сообществ, что является полной противоположностью их истинной природе, рассказывает техническая писательница Клэр Эванс, в 2018 году начавшая собирать примеры использования этого стиля на are.na.


С точки зрения дизайна, он довольно ленив, говорит Харли. В особенности за него стоит винить Adobe Illustrator. Инструменты Illustrator позволяют удобно манипулировать чёткими линиями и цветами, позволяя редактировать их как файлы scalable vector graphics (SVG). Из этого формата иллюстрации можно легко анимировать и распространять на всех платформах.

Харли продаёт свои постеры и открытки на ярмарках рукоделия, несколько лет назад он жаловался на засилье сов и лис в моноклях, но теперь стиль изменился. За последнюю пару лет я заметил множество красных кругов или красных щёк, говорит он. Corporate Memphis заразил британских мастеров рукоделия своими простыми формами, цветами без текстур и лёгкими искажениями.

Ещё одной причиной распространённости Corporate Memphis стали банки изображений в векторной графике. Пабло Стэнли иллюстратор из Мехико, управлявший несколькими крупными базами данных, где в open source выложены его собственные плоские SVG.

Люди из Интернета присылали ему его видоизменённые изображения, которые они встречали на рекламных объявлениях во многих местах, даже в Германии и Индии. Хоть Пабло и не проводил аналитики, по его собственным оценкам, созданные им изображения скачали сотни тысяч раз люди и технологические компании со всего света. Такие банки изображений, как FreePik, UnDraw, а также библиотека векторной графики Adobe сыграли большую роль в том, что люди, не умеющие создавать иллюстрации, позаимствовали для себя стиль Corporate Memphis.

Рост популярности Corporate Memphis частично был вызван изменениями, внесёнными Apple в 2013 году. До того времени в компьютерных интерфейсах часто применялся скевоморфизм стиль, использующий тени и скругления, благодаря которым кнопки и значки напоминали объекты реального мира. Стиль с большим количеством украшательств со временем стал для пользователей менее удобным, и восемь лет назад Apple отказалась от элементов скевоморфического дизайна в пользу плоского интерфейса пользователя. За компанией последовали и иллюстраторы. Технологические фирмы адаптировали свои UI-системы под идею плоского дизайна, а за ними последовали и дизайнеры, делится Стэнли.

Хотя помогла популяризации термина Corporate Memphis коллекция Клэр Эванс, по её словам, придумал его Майк Меррилл, начавший ощущать эффект дежавю от плоских и ярких дизайнов, когда работал в сфере рекламы. Этот стиль используют такие брэнды, как Slack, Salesforce, Robin Hood и WeTransfer, а также множество их конкурентов. Название стиля стало отсылкой к итальянской дизайнерской и архитектурной группе 80-х Memphis, позиционировавшей себя как показных и ребячливых бунтарей против функционалистских стилей. Я думаю, что это вынужденный шаг. Это отчаянная попытка казаться человечными, рассказывает Меррилл.

Меррилл выделил для себя два типа компаний, использующих этот стиль. Мелкие компании заимствуют его, чтобы мимикрировать под известные технологические компании, а те, которые находятся на уровне IPO, используют его, потому что это лениво и безопасно.

Однако, по мнению Меррилла, Corporate Memphis является проблемой не только из-за своей вездесущности. Влиятельный дизайнер Дэвид Рудник говорит, что Corporate Memphis особенно коварен тем, что создаёт ошибочную картину мира. Он отображает мир, построенный из взаимодополняющих компонентов, в котором уже решены все проблемы. Это намеренное упрощение.

По словам Рудника, Corporate Memphis обычно ставит зрителя на ту же плоскость, что и объекты с фигурами на иллюстрациях, благодаря чему проще расшифровать такие искажения, как гибкие руки персонажей визуальная головоломка оказывается решённой за зрителя. Ограниченная цветовая палитра и отсутствие глубины создаёт чрезвычайно упрощённый взгляд на мир.

В одной из вариаций Corporate Memphis используется визуальная техника под названием изометрическая проекция, дающая зрителю перспективу слегка над землёй, для создания окружений, например, улицы или ряда домов.

Изометрическая перспектива интересна, потому что ничто не уходит к точке схождения линий. А значит, она устраняет и переменную времени, говорит Рудник. Он утверждает, что подобный дизайн особенно популярен в среде финтех-компаний и ипотечных банков снижение значимости течения времени особенно выгодно для фирм, продающих финансовые продукты, за которые вы, возможно, будете расплачиваться годами.


Когда ты видишь, как CEO технологических компаний общаются в частных беседах или друг с другом, их взгляд на мир поразительно противоположен миру, запечатлённому на иллюстрациях в стиле Corporate Memphis. Они хвастаются, что живут в мире сложных идей, постоянной борьбы между конкурентами, криптографических угроз, постоянных социальных изменений, которые они стремятся отслеживать и контролировать. С их точки зрения мир чрезвычайно агрессивен и быстро меняется.

Corporate Memphis позволяет этим компаниям предложить иллюзию мира без иерархий, где пользователи имеют одинаковый уровень доступа и привилегии с теми, кто управляет платформами. Рудник замечает характерную особенность: стиль создаёт образ озорного мира, ценящего творчество, однако выполненные в нём иллюстрации редко подписаны создавшими их авторами.

Но несмотря на всё это, нам, вероятно, не стоит сожалеть о повсеместном присутствии Corporate Memphis или о дизайнах, которых мы из-за него лишились. В конечном итоге, этот стиль является просто отражением созданного большими технологическими корпорациями мира, в которой с одной стороны находятся пользователи, с другой руководство компаний.

Для создания более интересного и визуально богатого цифрового пространства требуется нечто большее, чем новый стиль иллюстраций, для него необходима смена принципов управления экономикой технологий. А до этих изменений Corporate Memphis, скорее всего, останется с нами.



На правах рекламы


VDS для проектов и задач любых масштабов это про наши эпичные серверы! Новейшие технологии и оборудование, качественный сервис. Поспешите заказать!

Присоединяйтесь к нашему чату в Telegram.

Подробнее..

Гайд по мобильной рекламе для тех, кто задумался о монетизации

05.04.2021 20:15:29 | Автор: admin

Основной способ монетизации наших приложений это реклама, и её рынок растёт с каждым годом. В этой статье рассмотрим четыре основных вида рекламы, каждый из которых делится ещё на несколько типов. И поговорим об особенностях каждого как с технической, так и с пользовательской стороны что такое баннерная слепота, сколько видов нативной рекламы существует, какие размеры выбрать для разных экранов и как работает видео с вознаграждением. А также немного о нашем опыте эффективности разной рекламы.

Но сначала небольшой рекламный глоссарий.

  • Плейсмент. Место для размещения рекламы, его нужно выбирать в зависимости от типа рекламы, контента и креатива.

  • Инвентарь. Совокупность всех плейсментов паблишера или рекламное пространство, которое предоставляется площадкой (паблишером) рекламодателю для размещения рекламных креативов.

  • Паблишер. Рекламная площадка (сайт, мобильное приложение), предоставляющее свой инвентарь под размещение рекламы.

  • Рекламная сеть. Система управления и размещения рекламных объявлений на рекламных площадках.

А теперь пройдёмся по общепринятым видам рекламы.

Баннерная реклама

Баннер один из наиболее распространённых видов рекламы в приложениях. Они располагаются в определённой части экрана: блоки фиксируются в верхней или нижней зоне или встраиваются в контент. Также баннеры могут автоматически обновляться через заданное время, то есть ротироваться.

Привлекательность баннерной рекламы в её простоте и дешевизне: несложная интеграция в приложение и легкость в подготовке рекламного креатива делают баннеры наиболее выгодным решением для краткосрочной рекламной кампании.

Механика работы очень проста баннер отображается в определённом блоке, который не перекрывает основной контент. Поэтому пользователь может спокойно пользоваться приложением, находясь на экране с баннером.

Но фиксированное расположение баннера может приводить к тому, что пользователь запоминает позицию рекламы на экране и просто игнорирует. Эффект получил название баннерная слепота, иными словами склонность пользователей игнорировать элементы веб-страницы, которые они воспринимают (часто ошибочно) как рекламу.

В зависимости от размеров и расположения рекламного блока можно выделить следующие типы баннерной рекламы:

1. Standard banner (скрин 1). Это прямоугольный рекламный блок одного из стандартных размеров: 320x50 Banner, 320x250 Medium rectangle, 320x100 Large banner и других. Типы Banner и Large banner располагают снизу или сверху на экране приложения, а тип Medium rectangle встраивают в контент данный формат уже больше относится к нативной рекламе, о которой речь пойдёт далее.

Скрин 1: примеры баннеров стандартных размеровСкрин 1: примеры баннеров стандартных размеров

2. Smart banner. Баннер с фиксированной высотой и адаптивной шириной, которая подстраивается под размер устройства. Это означает, что рекламный креатив заполнит всю ширину на любом экране в любой ориентации. Для того, чтобы на большом экране, например, планшете, смарт-баннер не казался слишком узким, для него реализованы следующие значения высот:

  • при высоте экрана устройства менее 400 dp, высота смарт-баннера будет равна 32 dp (актуально и для landscape-ориентации);

  • если высота экрана не превышает 720 dp, высота баннера будет 50 dp (обычная portrait-ориентация);

  • когда высота экрана составляет более 720 dp, высота рекламного блока равна 90 dp (для планшета данная высота баннера будет распространяться и на landscape, и на portrait). Так баннер будет смотреться органично для любого экрана.

3. Adaptive banner. Самый современный из всех типов баннеров, механизм работы которого основывается на вычислении наиболее оптимального размера рекламного блока через заданную разработчиком ширину, то есть для указанной ширины блока определяется подходящая высота.

На скрине 2 видно, чем описанные баннеры отличаются друг от друга. Выбирая тот или иной тип баннера, нужно обращать внимание на возможности рекламного SDK, так как не каждая рекламная сеть позволяет использовать все типы. Поэтому наиболее частый выбор стандартного баннера обусловлен не только простотой его внедрения, но и распространённостью среди рекламных сетей.

Скрин 2: типы баннеров (стандартный, смарт-баннер, адаптивный)Скрин 2: типы баннеров (стандартный, смарт-баннер, адаптивный)

Баннер может состоять из:

  1. Рекламного креатива (обязательный элемент) как правило, он приходит в html-файле, в котором содержится ссылка на ресурс, например, картинку, либо js-файл для анимированного контента.

  2. Privacy information icon/Ad choices обязательный для некоторых рекламных сетей (например, AdMob) элемент, который содержит информацию о конфиденциальности, а также даёт возможность пользователю отказаться от просмотра той или иной рекламы;

  3. URL адрес, на который происходит переход при клике на баннер (в магазин или на сайт);

  4. Трекеры событий (показа и нажатия) это urlы, которые вызываются при выполнении определённых действий: отображения баннера на экране и клики по нему.

Скрин 3: элементы баннераСкрин 3: элементы баннера

Независимо от того, какой баннер будет отображаться в приложении, стоит помнить в первую очередь о его небольших размерах он не способен вместить в себя много контента. Но многие рекламодатели всё равно загромождают баннер большим количеством информации, делая его трудночитаемым.

Плюсы:

  • известный рекламный формат, по работе с которым накоплено много опыта;

  • несложные интеграция в приложение и подготовка рекламного контента;

  • считается наиболее выгодным решением для краткосрочной рекламной кампании.

Недостатки:

  • на небольших баннерах нельзя поместить много информации;

  • большое количество информации делает баннер трудновоспринимаемым для пользователей;

  • эффект баннерной слепоты явление, когда пользователи не замечают или игнорируют баннеры.

Нативная реклама

Нативная реклама вид, при котором рекламный контент органично вписывается в приложение, подстраиваясь под его дизайн и контекст. Благодаря формату и контентной составляющей она выглядит как часть приложения, подстраиваясь под его дизайн и контекст, поэтому считается более информативной и удобочитаемой. В социальной сети такая реклама будет похожа на обычный пост, в онлайн-магазине на ещё один товар. Часто пользователи даже не сразу понимают, что перед ними реклама.

Объём нативной рекламы в приложениях становится всё больше, а форматы такой рекламы разнообразнее. Основной причиной этого являются хорошие показатели рекламных метрик.

Среди основных преимуществ нативной рекламы для рекламодателя возможность кастомизации рекламных блоков и гибкость их исполнения. Размер, внешний вид и местоположение полей подбирается максимально близко к дизайну приложения. Нативная реклама конфигурируется из полей составных частей, из которых разработчик собирает рекламный блок в соответствии с дизайном приложения, а также гайдлайнов рекламных сетей (например, AdMob, Facebook). Среди полей есть обязательные и необязательные.

Основные элементы нативной рекламы (скрин 4):

Скрин 4: элементы нативной рекламыСкрин 4: элементы нативной рекламы
  1. Title заголовок рекламы.

  2. Icon иконка приложения или логотип компании размером от 80х80 до 512х512 пикселей.

  3. Main image/Media content основной рекламный контент, в качестве которого может выступать статичная картинка или видео.

  4. Call To Action (CTA) кнопка или текст с призывом к действию: переходу в магазин или на сайт.

  5. URL адрес, по которому происходит переход при клике на Call To Action.

  6. Ad Label/Sponsored элемент, показывающий пользователю, что перед ним реклама (возможны различные варианты меток, например, Ads, Sponsored, Реклама, Promoted, Recommended).

К дополнительным элементам можно отнести:

  1. Description основной текст рекламного блока.

  2. Content rating элемент, указывающий допустимый возраст потребителя рекламного контента.

  3. Star rating элемент, показывающий рейтинг рекламируемого приложения или товара.

  4. Privacy information icon/Ad choices обязательный для некоторых рекламных сетей (MoPub, AdMob) элемент, который содержит информацию о конфиденциальности, а также позволяет пользователю отказаться от просмотра той или иной рекламы.

  5. Warning/Disclaimer предупреждения об особенностях рекламирующихся продукта или услуги.

Все поля должны располагаться внутри рекламного блока, а элементы не перекрывать друг друга.

Перечисленные элементы одинаковы для любых типов нативной рекламы (статичная реклама или нативное видео). Но стоит учесть, что нативная видеореклама требует наличия кнопок для воспроизведения и остановки видео Play/Pause, а также возможности включать и выключать звук Mute/Unmute. Для некоторых рекламных SDK также предполагается возможность перейти в фуллскрин-плеер.

Есть несколько типов нативной рекламы, отличающихся по размеру и расположению рекламного блока, а также по способу отображения контента.

  • In-Feed Native Ads формат, когда реклама встраивается в ленту приложения, имитируя при этом дизайн основного контента. При просмотре ленты/контента нативная реклама смешивается с общим контентом, обеспечивая непрерывность.

  • In-Feed Social (скрин 5) представляет собой социальный контент (статьи, видео, музыка, изображения), встречающийся в таких социальных сетях, как Facebook, Twitter и других.

    Скрин 5: In-Feed Social рекламаСкрин 5: In-Feed Social реклама
  • In-Feed Content (скрин 6) рекламные блоки со статьями, видео, подкастами, изображениями, размещаемые в новостных агрегаторах, например, CNN.

    Скрин 6: In-Feed Content рекламаСкрин 6: In-Feed Content реклама
  • In-Feed Product (скрин 7) как правило, это реклама о товарах, услугах, приложениях, которые можно встретить в Amazon, App Store, ASOS.

    Скрин 7: In-Feed Product рекламаСкрин 7: In-Feed Product реклама

In-Feed Native является наиболее используемым в мобильных приложениях. Существует ещё несколько форматов, но их основные места расположения веб-сайты, в мобильных приложениях они используются реже:

  • In-Content Native Ads реклама, размещаемая на страницах статей между абзацами контента и разработанная таким образом, чтобы соответствовать дизайну редакторского контента.

  • Content recommendation ads блоки с рекомендательными виджетами.

В зависимости от формата можно выделить следующие типы нативной рекламы:

  1. MREC (medium rectangle) по сути, данный тип нативной рекламы представляет собой баннер размера 320х250. Мы уже знакомились с ним выше. MREC не содержит всех обязательных для нативной рекламы полей: нет Title, CTA, что также роднит этот тип с баннером.

  2. Native тип нативной рекламы, загрузка и постобработка которого зависит от рекламной сети. Используя средства и методы интегрируемых SDK, приложение запрашивает и отображает рекламу. В качестве контента может быть загружено как статичное изображение, так и видео. При загрузке видеорекламы также используется видеоплеер от SDK. Для Native характерно отображение всех обязательных для нативной рекламы элементов и возможно добавление дополнительных. В качестве примера можно привести MoPub, AdMob, Facebook.

  3. VAST (Video Ad Serving Template) это нативная видеореклама, отображаемая по VAST-спецификации. В полученном VAST-скрипте содержится информация по рекламе: urlы, которые будут вызваны в случае наступления определённых событий (например, показ, пауза), местоположение видео, форматы и его размер и т.д. Иными словами, VAST-скрипт представляет собой xml-файл, в котором хранится нужная информация для загрузки и показа рекламы.

Безусловно, интеграция и поддержание разных типов нативной рекламы требует от паблишеров больше времени и усилий, в отличие, например, от баннеров. Но также пользователи чаще будут обращать внимание на такую рекламу.

Ещё стоит отметить, что, несмотря на внешнюю схожесть нативной рекламы с контентом, через определённое время пользователи начнут её узнавать. Поэтому для рекламного блока необходимо создавать действительно ценный и полезный контент, чтобы объявление не раздражало читателя.

Rewarded Video

Rewarded Video (видео с вознаграждением) это fullscreen-видеореклама, в основе которой лежит механика вознаграждения за просмотр. Наибольшую популярность данный формат рекламы нашёл в мобильной игровой индустрии. Если обычно паблишеры стараются максимально замаскировать рекламу от пользователя, то в играх её можно выносить на видное место, подкрепляя внутриигровой наградой. Rewarded Video нативно встраивается в контент и награждает пользователя за просмотр рекламы какой-либо ценностью, например, дополнительной жизнью, подсказкой и другими бонусами. При этом некоторые пользователи готовы повторно просматривать рекламу, чтобы получить награду.

Это совсем не означает, что использование Rewarded video в неигровых приложениях недопустимо. На самом деле, данный тип рекламы хорошо ложится в стратегию монетизации любого приложения, благодаря высокой вовлечённости пользователя.

Чтобы Rewarded video приносила доход и при этом не раздражала, важно выбрать правильную награду, которая будет интересна пользователям, и за которую они будут готовы посмотреть рекламу. Например, для обучающих приложений такой функцией может быть возможность получить подсказку или открыть следующее задание, для медиа доступ к эксклюзивному контенту.

Также не стоит забывать про положительный пользовательский опыт при взаимодействие с данным форматом рекламы. Всё дело в награде, которая является своего рода мотиватором для просмотра.

Получение вознаграждения основное отличие данного типа рекламы от остальных, поэтому при реализации Rewarded Video важно учесть обработку события получения этого вознаграждения. Ниже приводится примитивная механика работы Rewarded Video (скрин 8):

  1. Реклама открыта пользователем и отображается на экране в fullscreen-режиме.

  2. Если пользователь закрыл рекламу, не дождавшись конца воспроизведения, то отправится событие onClose, означающее, что пользователь закрыл объявление. В таком случае вознаграждения он не получит.

  3. Если пользователь просмотрел рекламу целиком (или до определённого рекламодателем временного маркера), то отправится событие onRewarded, означающее, что пользователь получит награду.

    Скрин 8: пример работы Rewarded VideoСкрин 8: пример работы Rewarded Video

Что нужно учесть при интеграции Rewarded Video:

  1. Не стоит злоупотреблять и внедрять этот тип рекламы сразу во много функций/мест в приложении, чтобы не раздражать пользователей.

  2. Вознаграждение за просмотр устанавливается паблишером, однако в качестве награды не могут использоваться материальные средства.

  3. При выполнении пользователем условий (а именно просмотра рекламы) паблишер обязан выдать ему вознаграждение.

  4. Необходимо подробно описывать условия получения награды. При этом для описания необходимого действия могут использоваться значки, внешний вид которых чётко указывает на рекламный характер объявления. Рекомендуется использовать слово Реклама рядом со значком.

  5. Не нужно забывать про максимально возможное время воспроизведения видео. Посмотрев рекламу на протяжении 30 секунд, пользователь вряд ли будет рад увидеть ещё один рекламный ролик.

  6. Необходимо учитывать, что видеореклама может запускаться со звуком, поэтому в этот момент само приложение не должно издавать никаких звуков.

  7. Нет смысла внедрять рекламу в самом начале приложения это может отпугнуть новых пользователей.

  8. Rewarded Video это реклама продолжительностью до 30 секунд, поэтому креатив (само видео) может загружаться долго. Из-за этого также не рекомендуется вставлять видео в начале сессии (сессия сеанс взаимодействия пользователя с приложением). Либо реализовывать предзагрузку видео.

  9. Расположение рекламы не в начале сессии является наилучшим вариантом для поиска и показа рекламы с более высоким CPM (Cost Per Mille цена за тысячу показов).

Interstitial

Еще один формат fullscreen-рекламы. Как правило, запуск такой рекламы инициируется триггерами, и сама реклама появляется между действиями или экранами приложения.

Например, после того, как пользователь прошёл первый уровень игры, а второй ещё не загрузился, может отобразиться Interstitial-реклама. В зависимости от реализации данной рекламы, пользователь может сразу же её закрыть, нажав на крестик, или ему придётся досмотреть рекламу до конца, либо до определённого маркера (обычно это 5 секунд). После чего пользователь снова возвращается к основному контенту приложения (скрин 9).

Скрин 9: пример работы InterstitialСкрин 9: пример работы Interstitial

Interstitial-реклама, по сути, является баннером большего размера, перекрывающим экран приложения (так называемый, Interstitial Banner Ads). Такой формат удобен для рекламодателей тем, что позволяет разместить больше информационного контента различного типа. Это может быть:

  • статичное изображение;

  • видеоконтент (в таком случае реклама ещё называется Videostitial Ads);

  • анимированный контент.

Последний тип считается более интерактивным и интересным для пользователя, являясь механизмом привлечения и даже запоминания рекламируемого бренда. Именно возможность размещения большого количества рекламного контента делает данный тип рекламы привлекательным и эффективным.

Одновременно такой формат рекламы является и наиболее навязчивым для пользователей. Ведь они не только не знают момента, когда Interstitial может появиться вновь, но и не могут игнорировать её, как, например, баннерную или нативную рекламы. Поэтому, внедряя в приложение Interstitial-рекламу, нужно понимать, какой должна быть частота её показа. На практике эту проблему решает запуск Interstitial через A/B-эксперимент. Таким образом, можно проверить несколько гипотез о частоте показа, проанализировать их и выбрать наиболее оптимальную.

Вывод

Мобильная реклама рабочий и эффективный способ монетизации, особенно когда формат, размер и место размещения рекламных объявлений подобраны так, чтобы меньше всего раздражать пользователей. Но стоит помнить, что выбор формата рекламы для мобильных устройств это лишь часть уравнения эффективности рекламной кампании в приложении. Многое будет зависеть от настроек таргетинга, правильно выбранной рекламной платформы, рекламной сети и других факторов.

В наших приложениях в качестве основных видов выбраны нативная и баннерная реклама, они дают следующее распределение по доходам:

  1. Баннер 41%

  2. Нативная реклама:

  • VAST 24%

  • MREC 18%

  • Native 17%

Также проводились эксперименты с внедрением Rewarded Video и Interstitial-рекламы. В результате проведённых тестов данные оказались следующими:

  1. Интеграция Rewarded Video показала в 20 раз больший CPM, чем у баннерной рекламы, но при этом почти в два раза меньший филлрейт (процент запросов на показ рекламы).

  2. CPM Interstitial-рекламы, по сравнению с баннерами, тоже в среднем больше в 20 раз.

Но оба эти формата негативно повлияли на продуктовые метрики, поэтому в наших приложениях они пока не используются.

Подробнее..

Перевод BAT Roadmap 2.0

27.03.2021 00:13:02 | Автор: admin

Роадмапы определяют направления, цели и требования. Что еще более важно, роадмап отражает ожидание непредвиденных обстоятельств и инноваций, которые могут прийти из вне, а не исходить из устаревающей архитектуры или ограниченного набора вариантов реализации.

Карта - это не сам динамично меняющийся ландшафт местности, поэтому каждая дорожная карта со временем устареет. Так было с BAT Roadmap 1.0, опубликованным 18 июня 2017 года, вскоре после запуска нашего Basic Attention Token. Предлагаемый вашему вниманию BAT Roadmap версии 2.0 рассчитан на следующий год и до 18 месяцев вперёд.

Важный момент, который мы хотели бы повторить и подчеркнуть здесь: как и в случае с браузером Brave, вся работа платформы BAT по своей архитектуре исключает отслеживание или таргетинг с помощью сторонних рекламных серверов или бирж.

Браузер Brave

Браузер Brave является первым клиентом и испытательной площадкой для экосистемы BAT, причем модуль BAT был впервые запущен в Brave в октябре 2017 года. Аудитория Brave выросла до более 25 миллионов активных пользователей в месяц (MAU) и более 8 миллионов активных пользователей в день (DAU). Мы ожидаем, что к концу года Brave вырастет до 50 миллионов MAU и 17 миллионов DAU. В России живёт около 2% от этой аудитории или примерно 0,5 млн. MAU - прим. Brave/BAT Russia.

Токен BAT

Как подчеркивается в нашем январском пресс-релизе, BAT уже очень полезен. Более 3,8 млн пользователей, совершающих транзакции в месяц, использовали токены BAT на платформе, и на сегодняшний день создано более 13 млн кошельков для получения вознаграждений Brave / BAT.

BAT - один из наиболее широко используемых токенов: более 1 миллиона проверенных площадок и паблишеров принимают BAT от пользователей Brave Rewards. Внедрение Brave Ads в апреле 2019 года было выполнено в соответствии с обещанием вознаграждений BAT за просмотр рекламы и выросло до более 2,5 тысяч рекламных кампаний от более чем 400 рекламодателей из +190 стран.

Токен BAT вышел за рамки Brave Rewards, и BAT стал одним из первых активов, поддерживаемых в качестве обеспечения MakerDAO, Compound и другими ведущими протоколами DeFi (децентрализованные финансы - прим. Brave/BAT Russia).

Общий подход

Используя нашу базу пользователей и успех, достигнутый с внедрением BAT, мы намерены сделать криптовалюту и децентрализованные финансовые сервисы (DeFi) доступными и удобными для всех с помощью следующих усилий.

Кошелек Brave

Основой для массового внедрения и использования криптовалюты и DeFi станет кошелек Brave Wallet, который объединит Brave Rewards, кастодиальные и лучшие в своём классе не кастодиальные аккаунты Brave (то есть пользователь сам владеет своим закрытым ключом, в идеале хранящимся в аппаратном устройстве).

Особенности Brave Wallet включают:

  • Новая реализация кошелька Ethereum, заменяющая существующие криптокошельки в Brave.

  • Редизайн текущего пользовательского интерфейса с UX, призванный обеспечить бесшовный переход между учетными записями.

  • Поддержка десктопных и мобильных устройств.

  • API поставщика JavaScript Ethereum (window.ethereum), предоставляемый веб-страницам по умолчанию, без необходимости установки отдельного расширения.

  • Индивидуальные возможности для сценариев использования DeFi и NFT.

  • Варианты покупки криптовалюты с помощью фиатных способов оплаты, таких как кредитные / дебетовые карты, банковские счета и кошельки для смартфонов.

Запланированные фичи Brave Wallet также включают:

  • Использование BAT, заработанных через Brave Rewards, для оплаты комиссий за транзакции.

  • Встроенная возможность покупки невзаимозаменяемых токенов (NFT) в Brave.

Агрегатор DEX в Brave: DeFi для всех

Brave представит DeFi всем через новую децентрализованную криптобиржу, чтобы обеспечить обмен токенов с явными преимуществами и высокой добавленной стоимостью для пользователей Brave / BAT, в том числе:

  • Скидки при использовании BAT для оплаты комиссий за транзакции.

  • Скидки для пользователей, которые держат баланс BAT в своем кошельке.

  • Поддержка нескольких цепочек с множеством активов и блокчейнов.

Некоторые из вещей, которые мы планируем исследовать для Brave DeFi, включают:

  • Децентрализованная биржа (DEX), где Brave будет стимулировать поставщиков ликвидности к развитию BAT и более широких крипто-экосистем.

  • Решения L2 или другие оптимизации, чтобы обеспечить доступ и участие в DeFi для людей, чей доход от BAT составляет всего 1 доллар.

Themis: Масштабирование рекламы Brave / BAT

Themis - это наша исследовательская работа по постепенному перемещению анонимных, но подотчетных операций в цепочку для Brave / BAT Ads, чтобы уменьшить зависимость от протокола отчетов о подтверждении рекламы Brave и перейти к анонимной проверке событий подтверждения просмотра рекламы. В рамках ведущих проектов блокчейнов мы исследуем как решения L2, так и блокчейны L1 в сочетании с Ethereum. Обзор и общий таймлайн по Themis можно найти здесь. Некоторые технические отчеты о Themis, которые мы опубликовали, можно найти здесь и здесь.

Децентрализованный Интернет

BAT - ключевой компонент миссии Brave по созданию децентрализованной сети.

С этой целью мы исследуем следующие возможности:

  • Утилита BAT для поисковых систем.

  • Использование BAT для электронной коммерции.

  • Использование BAT для VPN и различных частных коммуникационных платформ.

  • Награды BAT за контент, проверенный на IPNS.

  • Возможность использовать BAT для закрепления контента на IPFS (файлообменник).

Работа с сообществом

Мы осознаем важность процветающего и заинтересованного сообщества и планируем в ближайшем будущем инвестировать значительные ресурсы для масштабирования и расширения наших усилий в сообществе.

Мы намерены сделать следующее:

  • Регулярные обновления о статусе различных инициатив.

  • AMA с членами команды.

  • Программа BAT Ambassadors.

Подробнее..

Recovery mode Запускаем поток клиентов из Инстаграм за 16 минут

12.02.2021 14:21:36 | Автор: admin
В этом видео поговорим о простом способе получения продаж, клиентов и заявок из Инстаграма. Расскажу пошагово: что делать, куда нажимать, какие настройки выбирать и о каких нюансах нужно знать для того, чтобы эффективно и легко получать клиентов из Instagram.

Обязательно досмотрите это видео до конца, если хотите узнать как за пол часа, без сайта/лендинга/или любой другой посадочной страницы начать получать клиентов из Инсты.

Подробнее..

Recovery mode SEO умер? 2021-2022 закат эпохи SEO-продвижения

05.03.2021 12:10:54 | Автор: admin
Привет, на связи Иван Бабайлов. Я предприниматель и интернет-маркетолог. В этом видео я хочу обсудить популярное в последнее время мнение, что SEO мертв, что из поисковых систем больше нельзя получать клиентов, что будущее только за платной таргетированной или контекстной рекламой.

Попытаюсь подтвердить или опровергнуть это мнение. Ну и конечно же попробуем понять: что со всем этим делать и нужно ли как-то менять вашу стратегию продвижения или оставить все, как есть.


Обязательно досмотрите это видео до конца, потому что ближе к концу ролика, для самых терпеливых, я спрятал подарок.

Начну с того, что расскажу, какие инструменты в SEO больше не работают.

Первый инструмент, который уже не работает в SEO: некачественные ссылки


Я считаю, что в SEO важно качество, а не количество. Этот же принцип касается закупки ссылок. Если перед вами стоит выбор: купить 10 дешевых ссылок с каких-то неизвестных ресурсов или купить 1 ссылку, но с хорошего тематического сайта из вашей сферы я рекомендую пойти по второму сценарию и купить одну ссылку. Это связано с тем, что большое количество ссылок с нецелевых ресурсов даст вам меньше отдачи, нежели чем одна качественная ссылка.

Второй инструмент, который уже не работает в SEO: накрутка поведенческих характеристик


В далеком 2009 году Яндекс ввел алгоритм ранжирования по поведенческим характеристикам. Т.е. Яндекс отдавал позиции в выдаче тем сайтам, у которых эти характеристики выше, чем у их конкурентов. Что сделали владельцы сайтов и их маркетологи? Правильно: они начали накручивать свои страницы и искусственного выращивать показатели. Это давало результат, какое-то время, но впоследствии Яндекс начал блокировать все ресурсы, которые используют накрутку поведенческих показателей.

И сейчас по-прежнему, я не рекомендую использовать накрутку в SEO-продвижении вашей компании. Это связано с тем, что на долгосрочной перспективе риски выше, чем потенциальная отдача.

Третий инструмент, который уже не работает в SEO: переспам ключевыми словами


Что означает понятие переспам? Это когда в текст страницы добавляется слишком много ключевых слов, таким образом ухудшая качество текста и снижая его читабельность. Если вы по-прежнему пишите на своем сайта что-то из серии: Купить окна Москва дешево с установкой то у меня для вас плохие новости и, вероятно, ваш сайт переспамлен ключевыми словами и вы недополучаете значительный объем трафика и клиентов.



Четвертый инструмент, который уже не работает в SEO: мусорный контент, который написан только ради получения трафик


Этот пункт плавно вытекает из предыдущего. Одно время было популярным писать статьи и собирать страницы на площадках, которые состояли из большого набора ключевых слов и совсем небольшого объема полезной для посетителя сайта информации. Таким образом получалось, что люди заходили на сайт, не получали ответов на свои вопросы и шли искать ответы дальше.

Поисковые системы увидели этот тренд и объявили, что сейчас преимущества в выдаче будут отдаваться именно тем ресурсам, которые в своем контенте отвечают на запрос клиента и умеют удержать посетителя.

Окей, мы рассмотрели 4 инструмента, которые не работают. Давайте теперь расскажу про то, что продолжает работать и приносить трафик и клиентов.

Первый инструмент, который работает в SEO: системный подход к продвижению


Системный подход, наверное, это основа успеха. Если вы пишите стабильно по 1-2 статьи в неделю на протяжении 10 лет, то это даст вам огромнейшую базу читателей и клиентов.

Например, для своего агентства мы избрали именно такую стратегию SEO продвижения и уже второй год стабильно инвестируем часть прибыли в ведение блога. Прямо сейчас блог на нашем сайте позволяет получать нам по 50-80 заявок в месяц от потенциальных клиентов. А теперь представьте, на какие цифры мы выйдем через 5-7 лет такой системной работы.

Второй инструмент, который работает в SEO: оптимизация под мобильную аудиторию


Рост доли мобильного трафика с каждым годом становится все больше и больше. Уже сейчас больше половины посетителей нашего сайта просматривают его с мобильных устройств. Тогда как пару лет назад эти цифры были порядка 20-30 процентов от общего количества.

Поэтому я рекомендую вам прямо сейчас проверить как выглядят страницы вашего сайта с различных мобильных устройств и планшетов. Потому что поисковые системы очень любят ресурсы, которые думают о своих посетителях и оптимизируют свой контент для их удобства.

Третий инструмент, который работает в SEO: постоянная аналитика


О том, что важно анализировать каждый чих я говорю, наверное, в каждом своем ролике. И это не просто так. Аналитика это ваш компас в темном лесу бизнеса и когда вы не будете понимать куда двигаться вы всегда сможете посчитать цифры и составить правильную стратегию продвижения.

Какие показатели необходимо фиксировать в аналитике по SEO:

  • количество посетителей сайта с поиска
  • разрез по источникам (т.е. вам необходимо отдельно считать тех, кто пришел с Яндекса и отдельно тех, кто пришел с Гугла)
  • глубина просмотра (т.е. сколько в среднем страниц просматривают посетители вашего сайта за один сеанс)
  • среднее время, проведенное на вашем сайте
  • средняя позиция вашего сайта в поисковой выдаче
  • процент отказов

Четвертый инструмент, который работает в SEO: органический рост поведенческих характеристик


Этот пункт плавно вытекает из предыдущего. Отслеживая аналитику и понимая свои показатели вы можете на них влиять. Например, вы можете увидеть, что за один сеанс ваши посетители просматривают в среднем 1,2 страницы вашего сайта. Зная этот показатель вы можете выдвинуть гипотезы и изменить свою стратегию.

К примеру, вы можете начать добавлять внутрь ваших страниц ссылки на другие полезные статьи/исследования с вашего сайта, которые полезно будет изучить вашему читателю. Этот инструмент называется перелинковкой и позволяет нарастить один из ключевых показателей вовлеченности аудитории: глубину просмотра.



Пятый инструмент, который работает в SEO: полезный контент, написанный для решения проблем людей


Ключевое правило SEO продвижения, которое необходимо понять и запомнить: ваш контент должен нести пользу для клиентов. Сейчас в SEO побеждают те ресурсы, которые помогают пользователям решать их проблемы. Через контент, через услуги или товары, которые предоставляет компания не важно. Весь ваш маркетинг должен быть заточен на то, чтобы удовлетворять запрос клиента и давать ему пользу. Это ключевой принцип, который работает и будет работать всегда.

На этом все.

Если у вас есть какие-то вопросы или предложения напишите об этом в комментариях. Я стараюсь, по возможности, отвечать на каждое сообщение.
Подробнее..

Перевод IPONWEB что происходит на рынке programmatic-рекламы

05.04.2021 18:06:45 | Автор: admin
Рынок programmatic-рекламы пока не достиг зрелости, он еще бурно развивается и поэтому постоянно меняется.
После спада в начале пандемии уже в мае прошлого года он начал восстанавливаться, когда запертые по домам пользователи полностью перенесли все свои покупки, развлечения и другую деятельность в цифровой мир.
Сегодня сторонние следящие cookie-файлы доживают свои последние дни, нормативные требования становятся все жестче, появляются новые инициативы по усилению защиты персональных данных на уровне операционных систем и браузеров. На этом фоне programmatic-реклама получила шанс продемонстрировать участникам рынка свои возможности по повышению эффективности и рентабельности.
В этом новом мире без cookie паблишеры смогут, используя собственные данные, лучше понимать существующий контекст и пользователей и понимать ценность имеющихся у них рекламных ресурсов (inventory). Так они смогут оптимизировать рекламные кампании и достигать лучших результатов.

Мы обсудили с Вендой Чжоу (Wenda Zhou), руководителем направления продуктов для паблишеров в компании IPONWEB, текущее положение дел в сфере programmatic-рекламы от нестандартных подходов к оптимизации заголовков (headers) во время спада продаж до влияния дедупликации аукционов, шейпинга трафика (traffic shaping) и оптимизации цепочки поставки инвентаря (SPO: supply path optimization).

image

Гэвин Данауэй: Уровень расходов на рекламу все еще очень далек от того, что было до пандемии. Какие, на ваш взгляд, существуют простые приемы оптимизации заголовков, которые помогут паблишерам получить максимальную отдачу?

Венда Чжоу: Есть простой и эффективный способ, позволяющий паблишеру получить максимальную доходность от заголовка. Нужно добиться оптимальной настройки рекламных слотов: они должны сочетать высокий уровень показов (viewability) с хорошими показателями качества страницы, и при этом участники аукционов должны успевать передать ответ обратно в оболочку (wrapper) в рамках заданного окна времени на ответ (timeout window).
Добиться этого можно, в том числе, разбив отдельные рекламные слоты на группы и сделав отдельные вызовы для рекламных партнеров исходя из положения рекламного слота на странице. Например, вызовы по слотам в верхней части страницы обязательно нужно делать первыми с жестким ограничением на время ответа, потому что у рекламодателей для этого блока очень мало времени до того, как пользователь прокрутит страницу вниз. Для слотов в середине или в нижней части страницы требования к времени отклика не такие жесткие, поэтому для них имеет смысл отправлять отдельный запрос с более длительным таймаутом. Паблишеры, рассылающие один запрос для всех слотов на странице, фактически, упускают часть дохода.

ГД: Действительно ли на отрасль programmatic-рекламы серьезно повлияла дедупликация аукционов, примерно как в ситуации с требованиями The Trade Desk? Последуют ли этому примеру другие DSP (Demand Side Platform платформа на стороне покупателя)?

ВЧ: Если коротко, то нет. Проблема дублирования трафика (и усилия, направленные на ее минимизацию) впервые возникла около трех лет назад, тогда речь шла о дублировании из одного источника. Ее в целом удалось решить с минимальными последствиями для отрасли. В последнее время дублирование трафика оценивается на стороне покупателя с двух сторон: для большого количества источников предложений(предложение одного и того же показа от нескольких SSP [Supply Side Platform платформ на стороне предложения]); для связанных партнерств с одним источником, таких как Google Open Bidding (OB) и Amazon Transparent Ad Marketplace (TAM).
Недавнее объявление The Trade Desk касалось второго случая. Его суть в том, что один источник не должен пытаться одновременно монетизировать одни и те же показы и через прямой канал к DSP, и через другие обменные сети. SSP должен выбрать предпочитаемый канал для каждого источника закупки и предлагать DSP показы только через этот выбранный канал(и это не обязательно самый короткий канал).
Из имеющихся двух видов дублирования этот проще выявить и предотвратить. С учетом того, что два самых ярких примера этого вида дублирования работа через OB и TAM (Google и Amazon), вряд ли другим DSP удастся занять аналогичное место на рынке. Хотя в теории The Trade Desk могла бы выиграть от снижения дублирования за счет меньших издержек на оборудование и прослушивание, нам неизвестно о каких-то заметных изменениях по рынку. Хотя, возможно, на какие-то SSP это повлияло сильнее, чем на другие.
Куда больше на торговлю повлияет решение проблемы дублирования из нескольких источников, если (или когда) DSP найдут способ реально ее решить. Если какой-нибудь DSP решит свести взаимодействие по предложениям показа к одному SSP, это может вызвать серьезные проблемы с масштабированием и исполнением, а выбор источников закупки сократится до нескольких явных победителей.

ГД: Каким образом шейпинг трафика влияет на монетизацию паблишеров (и на деятельность закупщиков)?

ВЧ: Паблишеры стали более избирательно подходить к выбору партнеров на стороне спроса. Многие начали отключать SSP, которые не приносят значимого и растущего дохода. Шейпинг трафика стал для SSP одним из способов закрепить за собой место в заголовке паблишера благодаря приоритетному каналу связи с ним, чтобы потом сконцентрироваться на тех из имеющихся рекламных ресурсов, которые обеспечивают более высокий процент реализованных сделок. На стороне покупателя, DSP стали требовательнее при выборе для своих рекламодателей наиболее выгодных каналов закупки с оптимальным набором рекламных ресурсов и структуры затрат.
Многие DSP добавили в свои алгоритмы закупки фильтрацию трафика или перенесли закупку рекламы на частные торговые площадки (PMP: Private Ad Exchange / Marketplace), чтобы получить более прямой доступ к рекламным ресурсам паблишера. По нашим наблюдениям, шейпинг трафика используется для тех видов рекламных ресурсов, у которых нет ограничений с точки зрения предложения, таких как интернет-ресурсы для ПК и мобильных устройств. При этом никаких изменений для рекламных ресурсов, предназначенных для демонстрации на большом экране, например видео для телевизоров с доступом в интернет (CTV: Connected TV), не произошло. Шейпинг трафика, как и оптимизация цепочки поставки инвентаря (SPO) это способ для паблишеров начать с покупателями, т.е. с агентствами и DSP, диалог относительно углубления партнерства, обещающего обеим сторонам дополнительные выгоды за счет упрощения доступа к премиальным закупкам при максимальной прозрачности и снижении издержек.

ГД: SPO спасение для programmatic-рекламы или разрушение экосистемы?

ВЧ: Мнение о полезности SPO и ее ценности для экосистемы очень сильно зависит от того, кому вы задаете этот вопрос. Те представители стороны-получателя, которых потеснили закупщики агентств или DSP, использующие модели закупок на основе машинного обучения для определения наиболее выгодного канала доступа к рекламным ресурсам, скажут, что без SPO было бы лучше. Однако цель SPO оздоровить экосистему через создание прозрачных и эффективных каналов доступа к качественным медиа-ресурсам. Без рисков мошенничества и ущерба для репутации бренда.
С этой точки зрения SPO кажется выгодной для всех игроков, генерирующих самостоятельную ценность в рамках цепочки поставок. Для агентств это означает тесное сотрудничество с разными DSP, SSP и паблишерами с целью поиска каналов закупки, обеспечивающих прозрачность, эффективность и конфиденциальность, совместимость с ads.txt и требованиями приватности, а также безопасность для репутации бренда и дающих им конкурентное преимущество перед другими покупателями.
А паблишерам стоит рассматривать SPO как возможность проинформировать своих партнеров-покупателей о предпочитаемых каналах закупки, то есть, каналах, позволяющих отбить затраты на работающие медиаресурсы и вместе с тем потенциально несущих минимальные финансовые риски. В этом случае, SPO вряд ли станет мессией для programmatic-рекламы, однако поможет перестроить рынок, сделать его центром создание реальной ценности и вернуть покупателям и продавцам ощущение баланса и контроля.

ГД: Открытая экосистема programmatic-рекламы все больше приобретает черты закрытой. Что можно сделать, чтобы развернуть эту тенденцию? Неужели идея о втором этапе роста это лишь несбыточная мечта?

ВЧ: Хотя programmatic-реклама еще не полностью реализовала свой потенциал, она все равно работает в рамках рынка данных. А данные это кровь закрытых экосистем, и если уж нам нужна эффективная конкуренция в рамках открытого интернета (что стимулирует второй этап роста рынка programmatic-рекламы), то агентства, бренды и паблишеры должны иметь возможность использовать в торговле закрытые данные в рамках системы, обеспечивающей конфиденциальность данных, предусмотренную (справедливо) новыми нормативными ограничениями. Главное здесь решить проблему идентификации (ID), ведь в существующей системе идентификация играет ключевую роль и с точки зрения бизнес-модели независимых паблишеров, и для обеспечения возможности для брендов и агентств независимо отслеживать и оценивать эффективность кампании.
Учитывая, насколько быстро в начале прошлого десятилетия сформировались правила открытой RTB-торговли (RTB: Real-Time Bidding) и как быстро на этих правилах выросли очень сложные системы торговли рекламой, нет никаких сомнений, что проблема идентификации будет решена. Однако на этот раз стремление найти решение, отвечающее потребностям индустрии онлайн-рекламы (а также множащимся призывам обеспечить конфиденциальность потребителей) должно быть коллективным и основываться на убеждении, что открытый Интернет должен оставаться свободным и опираться на рекламу, которую размещают все участники рынка, а не ограниченный круг лиц.

ГД: Сторонние следящие cookie доживают свои последние дни. На какие альтернативные технологии делает ставку компания IPONWEB?

ВЧ: Мы активно изучаем разнообразные решения в рамках всех наших бизнес-проектов, включая BidSwitch и MediaGrid, а также взаимодействуем с отраслевыми ассоциациями, такими как проект Rearc у IAB и Консорциум Всемирной сети (W3C: World Wide Web Consortium). Наша общая задача вместе найти все возможные решения и выявить лучшие из них, которые позволят обеспечить соблюдение требований по охране частной жизни и отчетность на уровне пользователя.
Некоторые из этих решений включают: использование внутренних файлов cookie или уникального идентификатора на уровне паблишера, контекстное таргетирование, таргетирование/отслеживание с согласия пользователя, парсинг торговой информации и информации об отслеживании пользователей в анонимизированном виде без возможности личной привязки и т.д.

Гэвин Данауэй шеф-редактор AdMonsters, он отвечает за весь контент сайта, а также разрабатывает повестку дня таких конференций, таких как Publisher Forum и Ops.
Подробнее..

Реклама астрономического масштаба

29.01.2021 12:17:38 | Автор: admin

В научно-фантастическом романе Задача трех тел писателя Лю Цысиня есть эпизод, когда главный герой начинает видеть перед глазами цифры с обратным отсчетом. Никто кроме него не видит этого. Никто не знает что с ним, а главное никто не знает, что случится когда отсчет обнулится. Чуть не сойдя с ума от страха, главный герой все же разбирается, что это было психологическим давлением на него с использованием инопланетной технологии. Нет, это не спойлер, и если вы подыскивали себе для чтения интересную книгу в жанре научной фантастики, то рекомендую книгу Задача трех тел.

Если бы в нашей современной реальности существовала подобная технология, то с большой вероятностью можно предположить, что она использовалась бы для рекламы, которая транслировалась круглые сутки прямо нам в голову. Такие приборы еще не изобрели, но мы движемся в направлении, когда рекламы становится все больше. И уже начиная с 2022 года, реклама будет транслироваться из космоса.


Проект Созвездие от российского стартапа Avant Space предоставляет уникальную возможность для демонстрации рекламы на ночном небе. Для заказчиков такая возможность обойдется $10 млн. Проект предусматривает формирование группировки небольших спутников, оборудованных лазерной системой проецирования изображений на ночном небе.
После подписания контракта с заказчиком Avant Space в течение 24 месяцев изготовит необходимую систему спутников и обеспечит их вывод на орбиту. Такая группировка будет функционировать год, демонстрируя баннер заказчика из космоса. Два десятка спутников, летящих одной группой, будут выстраиваться в определенное изображение, хорошо видное с Земли. По расчётам Avant Space, космическая реклама обеспечит охват более 1 млрд человек по всей планете. Увидеть её смогут жители более чем 130 крупнейших городов.

Как пояснил основатель Avant Space Антон Оссовский, цена в $10 млн справедлива для компании, которая станет первым клиентом. Далее сумма показа будет около $1 млн в месяц. По сути, это инвестиция, которая покрывает стоимость самих спутников (минимум их нужно 20) и их выведение на орбиту. Кроме существенной скидки за счет гигантского охвата аудитории, первый клиент станет участником эксклюзивного контракта, подразумевающего размещение на орбите на целый год. И мы предполагаем, что наша ежегодная выручка составит около $100 млн в год, уточнил он. Стоимость все же зависит от бренда, количества спутников-пикселей. Один пиксель один спутник. Если мы говорим про Кока-Колу, то нужно условно 100 таких аппаратов, а если показать М из Макдональдс, то нужно 20. Это уже совершенно другая цена, сказал он.


Глава компании поделился, что при создании стартапа он шел методом исключения, искал собственную коммерческую нишу, свободную от конкуренции. Он рассказал, что реклама в космосе уже была в 1996 году на станции Мир была развернута надувная банка Кока-Колы, а на ракете Протон появилось изображение бренда пиццерии. Мы подумали, что было бы круто отправить бренд рекламодателя в космос, чтобы сделать его недостижимым для конкурентов, сказал Оссовский. По его словам, спутники на орбите будут не только выстраиваться в надпись или логотип компании заказчика, они будут посылать световую морзянку. Наша реклама будет в виде нового созвездия с эмблемой бренда, которая пролетит над городом в течение трех минут. Лазеры наших спутников не только проецируют логотип брендов на ночном небе, но еще и передают бинарный код, который содержит гиперссылку на сайт заказчика. Код со спутников считывается камерой смартфона, как QR-код, в течение двух-трех секунд и предлагает открыть ссылку в браузере. Такая реклама может привлечь глобальные онлайн-компании, которым важны масштаб и скорость распространения информации.
Техническую реализуемость проекта Созвездие в сентябре 2020 года подтвердили специалисты Ракетно-космической корпорации Энергия (входит в Роскосмос).


Расчеты были подтверждены в ходе испытаний, которые проводились в стратосфере. Будущее искусственное созвездие из спутников станет самой яркой звездой на ночном небе, сопоставимой с яркостью Венеры. Блок лазеров был запущен в стратосферу на высоту около 30 км для того, чтобы подтвердить проектный уровень мощности источника света в условиях, приближенных к космическим. При этом разработчики отмечают, что свечение не будет мешать астрономам. Лазеры будут включаться только во время пролета над мегаполисами и фокусироваться таким образом, чтобы не выходить за их пределы.

Avant Space согласуют с заказчиком рекламы детали полетного задания: форму созвездия, количество спутников, время и место первого появления бренда, список последующих локаций и общее время работы системы. Производство и запуск спутников будет за 24 месяца, а развертывание системы в космосе продлится еще 6 месяцев. В итоге общий срок реализации до первого появления логотипа заказчика в космосе займет 30 месяцев.

Как говорят в самой компании, для запуска и показа рекламы из космоса специальных разрешений не требуется.
На сегодняшний день деятельность человека в космосе регламентируется международными договорами, из которых только два регулируют общие вопросы. Это договор о принципах деятельности государств по исследованию и использованию космического пространства, включая Луну и другие небесные тела, вступивший в силу в 1967 году, и соглашение 1979 года о деятельности государств на Луне и других небесных телах. К договорам, носящим специальный характер, относятся конвенция о международной ответственности за ущерб, причиненный космическими объектами, конвенция о регистрации объектов, запускаемых в космическое пространство, и соглашение о спасении космонавтов, возвращении космонавтов и возвращении объектов, запущенных в космическое пространство. И также есть более современный закон Российской Федерации от 20 августа 1993 года О космической деятельности. В целом международные договоры разрешают любую коммерческую деятельность, которая не вредит людям на Земле и не связана с программами вооружения и военными действиями.

Что будет с рекламой в облачную погоду?


В компании говорят, что это обстоятельство непреодолимой силы, на которое пока нельзя повлиять. У заказчика будут два варианта: либо сменить локацию, либо выбрать другую дату пролета спутников над нужным городом.


В феврале 2020 года директор департамента реализации проектов Объединенной ракетно-космической корпорации (ОРКК) Андрей Диваев сообщил, что первые два микроспутника с лазерными диодами, с помощью которых в дальнейшем можно будет писать послания в небе, отправятся на орбиту в 2022 году.

Ещё в марте 2020 года на сайте Avant Space можно было найти основные характеристики ионного двигателя компании, сравнение с другими похожими устройствами, анализ рынка малых спутников и другую информацию. Сейчас никакой документации не осталось, сайт полностью посвящён проекту рекламы в космосе.
Мы оставили только информацию о ключевых характеристиках технологии рекламы в космосе, а техническую документацию перевели в режим конфиденциальной информации, так как готовим заявку на получение патента на изобретение, объяснил Оссовский.


Это простое на первый взгляд устройство повелевает воистину сложными плазменными процессами и позволяет разгонять рабочее тело двигателя до скоростей в десятки километров в секунду. Базовая схема не нова мы лишь постарались сделать максимально эффективным сам плазменный разряд с помощью возбуждения геликонных волн, говорит со-основательница и гендиректор проекта Avant Space Яна Харлан.

Сверхточное управление спутником, переходы на другие орбиты, возможность перестроения группировки, и все это с самым крутым удельным импульсом в очень миниатюрном виде. Вот например, вся наша система управления двигателем это кубик 10*10*10 см, а в былые времена такая система для ионного двигателя весила почти как взрослый человек.

Рабочее тело двигателя впрыскивается в разрядную камеру. Двигатель может работать на ксеноне, аргоне, криптоне или даже йоде. На данном этапе испытания проводятся с ксеноном. Индуктор, подключенный к ВЧ-генератору, создает переменное электромагнитное поле. Оно взаимодействует со свободными зарядами в разрядной камере, и в результате столкновений между частицами атомы ксенона ионизируются. Положительно заряженные ионы направляются в ионно-оптическую систему, где постоянное электрическое поле между электродами ускоряет их до десятков км/с. Созданный таким образом поток ионов генерирует тягу.

Устройство рассчитано на спутники весом 50-500 кг. Возможные применения не ограничиваются LEO (низкими околоземными орбитами), но также включают дальние космические миссии. Благодаря очень высокому удельному импульсу использование двигателя на борту космического аппарата позволяет уменьшить массу топлива, необходимого для выполнения миссии, и увеличить срок службы спутника. Все необходимые подсистемы включены в комплект поставки GT-50. Общая архитектура системы является модульной, что делает ее гибкой, а ее интеграцию в космический аппарат более дешевой и простой.


Avant Space разрабатывает высокочастотный ионный двигатель и систему управления для малых космических аппаратов. В 2016 году компанию основал Антон Оссовский, в прошлом работавший в космической компании Dauria Aerospace и опытно-конструкторском бюро Пятое поколение.

В ноябре 2017 года Оссовский впервые рассказал о наземных испытаниях ионного двигателя с внешним магнитным полем. Испытания первых моделей двигателя GT-50 и GT-100 проходили в лаборатории Физика плазмы МГУ.

Avant Space резидент Сколково с момента основания. За четыре года компания получила 35,4 млн рублей в виде грантов. В 2019 году фонд одобрил грант на 60 млн рублей на два года, однако компания получила только 30 млн рублей. Ещё 30 млн рублей должен был внести со-инвестор, но после изменения концепции развития и перераспределения средств от второго этапа финансирования отказались.

По данным Сколково, 2019 год компания Авант Спэйс Системс закончила с выручкой в 16,1 млн рублей. Avant Space продала лабораторную модель двигателя GT-50 с некоторыми подсистемами корпорации ВНИИЭМ, уточнил Оссовский.

Свой первый микроспутник на базе платформы Cubesat 16U с собственным электронным ракетным двигателем GT-50 компания показала в августе 2019 года на авиасалоне МАКС. Система позволит управлять движением микроспутника и поддерживать его позицию на орбите, объясняли в Avant Space.

Кроме того, в разработке сейчас находится мобильное приложение для отслеживания созвездий.

image




На правах рекламы


VDSina предлагает серверы в аренду под любые задачи, с космическим функционалом и возможностями ;) Огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата.

Подробнее..

Что такое Медийные кампании в Директ

25.12.2020 10:05:30 | Автор: admin

Привет, меня зовут Олег, я аккаунт-менеджер. Сегодня я расскажу о медийных кампаниях. Вы узнаете, что такое медийные кампании в Директ, какие у этого инструмента особенности и чем отличаются от графический объявлений в РСЯ.

Специалисты работающие с Яндекс.Директ вплотную пользуются такими инструментами:

  1. Поиск - реклама на поиске

  2. РСЯ (рекламная сеть яндекса) - реклама на сайтах-партнёров Яндекса и его ресурсов;

  3. Ретаргетинг - возвращение клиентов побывавших на сайте.

Так как это относительно простые и понятные инструменты, результаты которых легко можно предсказать и измерить.

Тогда как медийные кампании в этом вопросе сложнее и непонятнее, особенно для начинающих специалистов.

И всё же, разобравшись в этом инструменте вы поймёте, что с его помощью можно не только показаться как можно большему числу пользователей, но и значительно усилить свои рекламные кампании перебив конкурентов.

Особенности Медийных кампаний в Директ

По классификации Яндекса

Медийные кампании это имиджевая баннерная реклама, аукционный продукт в Директе с большим выбором настроек таргетинга для охвата нужной аудитории: с нацеливанием по ключевым фразам или профилю аудитории и оплатой за показы.

Из этого определения можно вывести ряд важных особенностей медийных кампаний в Яндексе, и его отличия от графических объявлений в РСЯ.

Очевидные особенности

Начнём с конца:

Оплата за показы.

Одно из самых важных особенностей и отличий от графических объявлений в РСЯ. Модель оплаты не за один клик (CPC), а за тысячу показов (CPM). Оплата идёт только за реальные показы.

Реальный показ по меркам яндекса это когда минимум 50% баннера находится в видимой зоне не менее 2 секунд. То есть, за тех, кто просто пролистал баннер, мы платить не будем.

Нацеливание по профилю аудитории.

Вы можете нацелить рекламу по интересам и поведению ваших клиентов.

Например, если вы точно знаете, что ваш клиент это:

  • любитель экстремального спорта,

  • с доходом выше среднего,

  • возрастом от 25 до 45 лет,

то нацеливаясь по этому профилю будет показана реклама не только тем, с кем уже взаимодействовали, но и будущим потенциальным клиентам, которых вы ещё не охватили с помощью контекстной рекламы, так как они просто не вбивали соответствующие запросы.

Нацеливание по ключевым фразам.

Настройка, которая прямо противоречит задаче медийных кампаний, и всё же, она есть. Это знакомый формат нахождения аудитории с помощью ключевых фраз, как в контекстной рекламе.

Если кто-то подумал из охватного инструмента сделать контекстный инструмент с оплатой за показы, то заранее спешу вас огорчить. Будут низкие охваты и отсутствие конверсий - потому что у медийки другая задача.

Баннерная реклама.

Реклама показывается с помощью баннеров/картинок. Можно использовать как статичные, так и динамичные варианты.

Стоит дополнить, что медийные кампании это не только баннеры, но это ещё и видео/аудиореклама, а также форматы наружной рекламы Indoor и Outdoor.

Имиджевая реклама.

В инструменте заложено, что основная цель медийной кампании это воздействие на бренд бизнеса. То есть, с помощью медийных кампаний вы увеличиваете узнаваемость бренда и повышаете лояльность потенциальных клиентов.

Неочевидные особенности

В дополнение к тому, что мы узнали из определения медийных кампаний Яндексом, следует добавить два важных момента, о которых можно узнать поработав с инструментом или прочитав материалы по этой теме:

Медийная реклама это долгоиграющий инструмент.

Для того, чтобы увидеть конкретные результаты медийных кампаний нужно минимум 2-3 месяца беспрерывной работы, так как это работа с холодным-чуть тёплым трафиком. Есть и обратная сторона, если вы отключите этот инструмент после длительной работы ещё 2-3 месяца будет ощущаться воздействие медийки на вашу рекламу.

Пользователей увидевших рекламу можно собрать и продолжить с ними взаимодействовать в других инструментах.

Всех тех, кто увидел наш баннер, а значит познакомился с предложением и брендом, возможно собрать в один пиксель и продолжить взаимодействовать с ними с помощью знакомых инструментов - Поиск и/или РСЯ. То есть, это уже не просто показ рекламы ради повышения узнаваемости бренда, а выстраивание воронки клиента, где:

  • Медийные кампании выступают в роли прогревающего инструмента и увеличения спроса на продукт;

  • Контекстная реклама выступает в роли закрытия возникающего спроса;

  • Ретаргетинговые кампании делают дополнительные продажи и возвращают тех, кто ещё не купил.

Когда следует запускать

Если вы узнаете себя хоть в одном из следующих пунктов, то вам пора запускать медийные кампании.

  • Выработан Поиск. Получаете больше 80% трафика по всем возможным запросам. Больше некуда расти.

  • Высокая конкурентная борьба на Поиске. Как следствие, не оправдано дорогие лиды.

  • Сложный продукт с длительным принятием решения о покупке.

  • Вывод нового продукта на рынок. Низкий уровень существующего спроса, как следствие мало трафика, который можно обработать.

  • Низкий уровень брендового трафика. Как следствие, отсутствует узнаваемость бренда, качественный трафик и дешёвые лиды.

Заключение

Медийные кампании в Яндекс.Директ помогут быть на шаг впереди конкурентов и с помощью постоянного показа потенциальным клиентам, втереться к ним в доверие, ещё на этапе выбора продукта или услуги. В результате это поможет привести больше клиентов по меньшей цене.

На этом всё. Удачных запусков и лояльных клиентов!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru