Подписка на блог

Вы можете подписаться на на мой блог в соцсетях

А это мои страницы в соцсетях

Facebook, ВКонтакте, Telegram,

Александр Поляков — заметки

Пишу о рекламе, аналитике, разработке и путешествиях.
Мой персональный сайт Телеграм-канал

Запускаем свой телеграм-бот с ChatGPT на виртуальном сервере

Мы будем использовать вот этот движок телеграм-бота https://github.com/nalgeon/pokitoki .

Наша задача создать или обновить бота типа https://t.me/polyakov_gpt_bot

В статье я не буду касаться логики регистрации бота и получения ключа open.ai. Это легко гуглится и останавливаться на этом нет никакого смысла. Бота можно не гуглить, а сразу пойти сюда https://t.me/BotFather , токен open.ai получается интуитивно https://platform.openai.com

В материале есть упоминания об ssh ключах. Чтобы создать ssh ключ надо почитать вот эту инструкцию.

Подготовим файлы для работы если ранее у нас не было инстансов

  1. Идём в гитхаб https://github.com/nalgeon/pokitoki, там Code >> Download zip
  1. Распаковываем архив. Заполняем файл config.example.yml и сохраняем его себе как config.yml

Подготовим файлы для работы если ранее был настроен инстанс и мы хотим переехать на другой

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

  1. Подключимся к нашему удаленному серверу и скопируем файл настроек к себе на диск:

MacOS:



scp -i YOUR_PRIVATE_SSH_KEY USERNAME@xxx.xxx.xx.xxx:pokitoki/config.yml /Users/username/Downloads/config.yml


Windows:



scp -i C:\path\to\your\private\key USERNAME@xxx.xxx.xx.xxx:/path/to/remote/config.yml C:\Users\username\Downloads\config.yml


команда в одну строку

YOUR_PRIVATE_SSH_KEY — путь к приватному ключу SSH из текущей директории

USERNAME — ваш логин в виртуальной машине

USERNAME — ваш логин в виртуальной машине

xxx.xxx.xx.xxx — IP-адрес виртуальной машины

xxx.xxx.xx.xxx — IP-адрес виртуальной машины

/Users/username/Downloads/config.yml — путь в папку для сохранения настроек (в примере это загрузки)

Обновляем версию бота, если хотим остаться на том же сервере

Если мы хотим остаться на том же сервере, просто обновить версию pokitoki:

  1. Остановим докер

Авторизуемся на сервере через ssh.
Переходим в директорию проекта



cd pokitoki/


  1. Останавливаем текущий докер инстанс


sudo docker compose stop


  1. Скачиваем обновление с гитхаб


git pull


  1. Запускаем докер


sudo docker compose up --build --detach


Подготовим инстанс в Яндекс.Облаке

Теоретически для данной задачи можно использовать любой другой VDS сервис, например https://vdsina.ru.
Я использую Яндекс.Облако, потому что оно не является ощутимо более дорогим, имеет предсказуемую поддержку и уже оплачивается по договору. Но данная инструкция подойдёт для любого другого сервиса за исключением процесса конфигурации виртуальной машины — этот процесс у всех будет свой.

Если у вас уже был инстанс, и вы просто обновляете — всё равно создаем новый инстанс (в конце мы просто отключаем старый, и запускаем новый)

  1. Идём в консоль Яндекс облака https://console.cloud.yandex.ru/
  2. Выбираем Compute Cloud >> Виртуальные машины
  3. Нажимаем на кнопку Создать ВМ вверху страницы справа
  4. Настраиваем ВМ на Ubuntu:
  • Intel Cascade Lake
  • Доля vCPU 5%
  • RAM 1Gb
  • Размер SSD/HDD 8 GB
  • обязательно надо создать статический IP-адрес, без него не получится подключить удаленно.
  1. Внизу указываем имя пользвателя и публичный ssh-ключ, который будем использовать для подключения.

Для самопроверки — стоимость должна быть в пределах 800 руб.

Устанавливаем на удаленную машину телеграм-бота

  1. Авторизуемся на виртуальной машине

MacOS:



ssh -i path/to/private/key -l USERNAME xxx.xxx.xx.xxx


или



ssh -i path/to/private/key USERNAME@xxx.xxx.xx.xxx


WIndows:



ssh -i C:\path\to\private\key USERNAME@xxx.xxx.xx.xxx


Со всем соглашаемся и вводим пароль

  1. Клонируем файлы телеграм бота в директорию удалённого сервера


git clone https://github.com/nalgeon/pokitoki.git


  1. Переносим файл с настройкам, который мы делали в начале

MacOS:



scp -i path/to/private/key /path/to/file/config.yml USERNAME@xxx.xxx.xx.xxx:pokitoki/config.yml


WIndows:



scp -i C:\path\to\private\key C:\Users\YOUR_USERNAME\PathToConfig\config.yml USERNAME@xxx.xxx.xx.xxx:pokitoki/config.yml


Устанавливаем на удаленную машину Docker

Инструкция тут https://docs.docker.com/engine/install/ubuntu/

  1. Сносим старый инстанс (для безопасности)


for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done


  1. Обновляем apt


sudo apt-get update


  1. Сертификаты


sudo apt-get install ca-certificates curl gnupg


  1. Остальные ключи (3 команды)


sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg


  1. Что-то на программистском


echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


  1. Почти всё


sudo apt-get update


  1. Ставим докер


sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


Запуск бота



sudo docker compose up --build --detach


Если понадобится проверить свободное место



df -h


Как создать SSH-ключ для безопасного управления удаленным сервером

Иногда может потребоваться указать при настройке сервера свой ssh-ключ. В материале расскажу что это такое и зачем это нужно. Приведу короткую инструкцию по его созданию для MacOS и Windows.

Что такое SSH-ключ

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

SSH-ключи состоят из двух частей: приватной и публичной.

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

Благодаря такой структуре данные, несмотря на то, что они передаются по незащищенным каналам связи (интернет) остаются недоступны для расшифровки.

Настройка SSH-ключей на MacOS

Обычно ssh ключи находятся по адресу /Users/{username}/.ssh

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



ls -a


Если в списке нет директории категории .ssh создадим её командой



mkdir .ssh


Далее можно вызвать в этой директории команду генерации ssh ключа:



ssh-keygen -t rsa


В данном примере rsa — это название ключа. Берет свои истоки из имен создателей алгоритма сквозного шифрования: Rivest—Shamir—Adleman, имена трех ученых — Рональда Ривеста, Ади Шамира и Леонарда Адлемана, которые впервые описали этот алгоритм в 1977 году.

Последует вывод:



Generating public/private rsa key pair.
Enter file in which to save the key (/Users/master/.ssh/id_rsa): <**ENTER YOURS SSH KEY NAME HERE**>
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
.............


В директории появятся два файла — приватный и публичный ключи.

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

В директории появятся два файла: rsa и rsa.pub. Содержимое rsa.pub и есть публичный ключ, который можно передавать при настройке удаленного сервера.

Настройка SSH-ключей на Windows

В Windows для генерации ключей используются программы:
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
или Open SSH для Windows 10+ https://learn.microsoft.com/ru-ru/windows/terminal/tutorials/ssh

Как подключаться к удалённому серверу с помощью SSH

Для MacOS:

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



ssh -i YOUR_PRIVATE_KEY_TRACE username@ip.adr.es.ss


Для Windows:



ssh username@ip.adr.es.ss -i C:\Users\user\.ssh\YOUR_PRIVATE_KEY


 Нет комментариев    17   3 мес  

Техника «Белая собачка»

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

«Белая собачка» в политическом контексте

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

Пример из мира рекламы

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

Ecommerce-реклама и маркетплейсы

Можно ли вести трафик из рекламы сразу на маркетплейсы или лучше пытаться раскручивать свой сайт?

Сегодня ко мне обратился Роман, он продаёт ЗОЖ-продукты под собственной маркой. Он описал свою задачу как заставить товары продаваться прямо на сайте.
«На маркетплейсах продажи уже идут, но мы хотим отойти от них и сфокусироваться на продаже без посредников, у себя на сайте», — описал мне Роман свои задачи.

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

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

Основных вопросов получается 2 — как отслеживать продажи на Маркетплейсах и как их рекламировать.

— Для отслеживания рекламного трафика OZON предлагает создавать специальный префикс вида vendor_org_xxxxxxx. Этот набор надо вставить в начале каждой метки utm_campaign в рекламных материалах. Так вы сможете отследить какие конверсии пришли благодаря ОЗОН, а какие с вашего сайта или рекламы. Другие маркетплейсы пока не анонсировали никаких средств отслеживания трафика.
— Если делаете переход на Озон прямо на сайте, то на ссылки перехода точно также надо прописать UTM_метки. Так маркетплейс зафиксирует переход как рекламный и покажет результаты в статистике. Для сайтов клиентов мы ставим специальный код на сайте, который копирует метки со страницы перехода и подставляет их в ссылки, которые ведут на Озон.

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

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

Расширенный географический таргетинг. А нужно ли?

18 марта 2016 года Яндекс.Директ запустил в настройках рекламных кампаний флаг «Расширенный географический таргетинг». Прошло пять лет, а настройка по-прежнему вызывает споры: «включать ее или нет?».

Краткое содержание статьи

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

Очень упрощенный пример, вы  — маркетолог дилерского центра Volkswagen в Самаре. Ваши клиенты — это люди, кто живут в Самаре и ищут сайт официального дилера Фольксваген. Они так и вводят в поисковиках [официальный дилер фольксваген]. Поисковая система показывает им ваш сайт, они звонят, приезжают и покупают новые Фольксвагены. Однажды вы узнаете, что жители соседних городов, например Казани, тоже приезжают к вам в автосалон. Чтобы найти вас они именно так и спрашивают у Яндекса, находясь в Казани: [официальный дилер фольксваген в самаре], последнее слово в запросе как бы даёт указание поисковой системе, чтобы она показала результаты не из Казани, а из Самары. Но в рекламе всё строго. Если вы не разрешите поисковой системе делать показы в Казани, показов и не будет. Люди будут искать вас, а находить будут сайты конкурентов. Чтобы вы, как рекламодатель делали меньше телодвижений и не создавали отдельную рекламу на Казань с такими запросами, Яндекс придумал расширенный географический таргетинг.

Но правильно этой настройкой не пользоваться, правильно создать кампанию с настройкой георгетинга Вся Россия, кроме Самары. Все фразы в этой кампании должны получить приписку «самара». По сути, вы воспроизведёте тот же самый расширенный географический таргетинг, но сделаете его контролируемым, без сюрпризов.

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

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

Зачем настройка и где ее включать/выключать

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

Например, если у вас дилерский центр Volkswagen в Самаре, то интересными для вас являются не только жители Самары, которые ищут запрос [фольксваген официальный дилер], но и жители Владивостока, которые ищут [фольксваген официальный дилер в самаре]. Да, такой клиент вряд ли к вам придёт сейчас же, но возможно, что он ищет автосалон для своего родственника. Шанс того, что это жулик пытается скликать всю рекламу такой же невысокий, как и для жулика из Самары.

Описание механики расширенного геотаргетинга на сайте Яндекса
Вот что пишет Яндекс в анонсе настройки расширенного географического таргетинга

Сама настройка спрятана в блоке «Дополнительные настройки» рекламной кампании. Для новых рекламных кампаний настройка включена по-умолчанию.

Как включить/выключить расширенный географический таргетинг Яндекс.Директ
//Чтобы найти данную настройку необходимо прокрутить настройки рекламной кампании вниз.

Когда полезна?

На самом деле никогда, но об этом ниже. Сам Яндекс в своей справке рекомендует данную настройку как бы для проверки спроса в других регионах на свой продукт. Якобы, если вы маркетолог торговой галереи Гранд Марина, то по брендовым запросам вы таким образом сможете найти регионы где вас ищут чаще, и впоследствии запустить в них отдельные рекламные кампании. По факту же вам ничто не мешает сразу создать рекламу на «остальную Россию» и понаблюдать за наиболее популярными локациями уже в ее отчетах.

Вот что пишет сам Яндекс:

Рекомендации Яндекс.Директа о расширенном географическом таргетинге.
По мере работы над рекламой расширенный геотаргетинг надо выключать.

А есть отрицательные последствия? Посетители же целевые.

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

Тематика CTR на поиске в регионе местонахождения CTR на поиске в чужих регионах
Автомобили 3,24% 15,73%
Гаджеты 5,35% 5%
Зоотовары 9,81% 9,1%
Подарки 12,19% 11,73%
Недвижимость 2,64% 8%
Стоматология 5,7% 10%

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

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

Вот например запись экрана размещения из жалобы дилерского центра Volkswagen в Сочи, маркетолог жаловался, что автосалон из Москвы размещается на её территории:

Первый результат поиска из Сочи показан после блока рекламы.
В запросе нет фрагмента «в Москве», реклама по этому запросу в Сочи нерелевантная. Вся реклама —Москва.

Я написал в поддержку Яндекса об этой ситуации, и мне дали комментарий:

Александр, добрый день!

Уточнил информацию у тех. специалистов.

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

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

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

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

Самое интересное

Если учесть тот комментарий, который дал сотрудник Яндекса можно сделать такие выводы:

  • Ни в коем случае нельзя использовать расширенный географический таргетинг для РСЯ. Представьте, как охватные размещения московских маникюрных салонов или химчисток будут бегать за жителями Ростова-на-Дону. В РСЯ не написано, что это Москва, люди будут переходить по рекламе и в итоге расстраиваться. А бизнес будет получать лишние затраты.
  • Ни в коем случае нельзя использовать расширенный географический таргетинг для размещений на поиске в тематиках услуг за которыми далеко не ездят: развлекательные центры, очные курсы, маникюр, парикмахерские, химчистки, автосервисы и автомойки и т д. Есть риск, что реклама будет показываться пользователям, которые только что вернулись, например, из Москвы. Сложно представить себе владельца автомобиля из Сочи, кто поедет делать замену масла в Москву.
  • Аккуратно для товаров, в которых высокая стоимостная конкуренция, в объявлениях обязательно транслировать преимущество и регион. Например, я вырос в Туле, это 150 км от Москвы. Многие жители города ездят за машиной в Москву. В Москве выше конкуренция и цены ниже на существенную сумму, можно купить кроссовер со скидкой до 500 тыс. Но будет лучше, если реклама для других регионов будет отдельной, а в заголовке можно сразу написать, что этот автосалон находится в Москве. Получается, что настройка расширенного таргетинга всё равно не нужна.
  • Можно использовать расширенное гео для рекламной кампании по брендированным запросам, но только если ваш бренд встречается в других регионах и вам не принадлежит.

Предположим, что наш автосалон Фольксваген в Самаре называется «Автопрестус». Наверное, даже если такой запрос будут вводить пользователи в Казани, то искать они будут именно вас. Но вдруг оказывается, что в Москве тоже есть «Автопрестус». Получается так, что когда люди из Казани ищут ваш автосалон, то они могут иметь в виду и вас и автосалон в Москве.

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

Итоги

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

Ранее Ctrl + ↓