SyrnikovPavel

SyrnikovPavel

Пикабушник
Дата рождения: 29 декабря
1344 рейтинг 11 подписчиков 0 подписок 9 постов 2 в горячем
869

Честная цена за кг/литр

Всем привет! Меня зовут Паша и возможно вы уже пользуетесь моим расширением Ave blacklist для блокировки продавцов спамеров на авито. Но сегодня не об этом.

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

Что ж, Кабинет министров не поддержал, а я поддерживаю двумя руками!

И написал расширение для браузеров для расчета цена за единицу измерения на сайтах доставок еды - заКило (chrome, firefox)

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

Маркетинговые фишки для запутывания потребителей

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

1) Неравные объёмы. Оооо, эта тема сильно развита в молочке. Как думаете, что выгодней купить 800 мл, 930 мл, 1.4 литра и 2 литра молока? Следующие изображения как раз об этом:

Как думаете, какое предложение самое выгодное?

Как думаете, какое предложение самое выгодное?

а вот и победитель!

а вот и победитель!

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

Слобода (на перепелиных яйцах) самое выгодное предложение 400 мл (253 рубля/литр против 300 в фасовке 700 мл), Слобода Оливковый 400 мл (263 рублей/литр против 288 в фасовке 800 мл), у ricco самая выгодная фасовка самая большая 215 рублей/литр

Слобода (на перепелиных яйцах) самое выгодное предложение 400 мл (253 рубля/литр против 300 в фасовке 700 мл), Слобода Оливковый 400 мл (263 рублей/литр против 288 в фасовке 800 мл), у ricco самая выгодная фасовка самая большая 215 рублей/литр

3) Промо-упаковки. «+10 % бесплатно» на пачке чипсов или кофе — итоговая стоимость за грамм остаётся скрытой

То самое чувство, когда кофе с 20% от объема в качестве подарка выходит дороже, чем без подарка ;)

То самое чувство, когда кофе с 20% от объема в качестве подарка выходит дороже, чем без подарка ;)

4) Акционные блоки. Товар в «специальной акции» может стоить дороже аналога без акции, если не считать граммы и миллилитры.

Если написано, что цена ниже, значит это наверное правда? Да, ведь? По секрету скажу - даже без скидки Молочный ломтик цена ниже за 1 штуку, чем за упаковку 5 штук (2250 рублей/кг)

Если написано, что цена ниже, значит это наверное правда? Да, ведь? По секрету скажу - даже без скидки Молочный ломтик цена ниже за 1 штуку, чем за упаковку 5 штук (2250 рублей/кг)

Как заКило закрывает пробел

Пока законопроект о единых юнит-прайсах пылится в кабинетах, заКило берёт на себя всю работу по подсчёту цены за килограмм или литр — прямо в вашем браузере. Расширение автоматически считывает вес и объём товара из страницы, делает все вычисления локально и выводит рядом с привычной ценой понятную метку «₽/кг» или «₽/л».

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

— Единообразный интерфейс: заКило выводит юнит-прайс в одном и том же месте и в одном стиле на всех поддерживаемых сайтах, избавляя от необходимости искать мелкие надписи.

— Реальная экономия: сразу видно, какая фасовка выгоднее, и не придётся переплачивать за «промо-упаковки» или странные объёмы.

— Простая интеграция: расширение уже работает на крупнейших сервисах доставки продуктов (Ашан, Яндекс.Маркет, Перекрёсток, Пятёрочка и др.) — достаточно установить и сравнивать.

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

Как можно помочь?

1) Предложить свою идею для доработки расширения - это я всегда строго приветствую

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

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

4) Помочь в разработке

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

UPD:

Некорректная ссылка на Ave Blacklist в посте, правильная такая: https://chromewebstore.google.com/detail/ave-blacklist/jhobdoodiicgomhcmcdapbdehndbhkfj

Показать полностью 5
14

Как автоматизировать работу с zakupki.gov.ru с помощью Python — просто и понятно

Эта статья написана для начинающих пользователей, которые хотят разобраться в работе сервиса отдачи информации zakupki.gov.ru. Мы шаг за шагом разберем, как получить токен для физического лица, как выглядит XML-документ для запроса и как написать простую программу на Python для взаимодействия с сервисом. Это не руководство от профессионала, а скорее дневник выживания: как не сойти с ума, пока пытаешься подружиться с сервисом zakupki.gov.ru

С 1 января 2025 года доступ к FTP-серверу zakupki.gov.ru будет закрыт, и вся информация станет доступна только через сервисы отдачи данных. До этой даты физические лица могут получать общедоступную информацию через сервис https://int44.zakupki.gov.ru/eis-integration/services/getDocsLE2 без необходимости использовать токены или электронную цифровую подпись (ЭЦП). Однако с нового года работа с сервисом потребует токенов или настройки инфраструктуры для подписания запросов ЭЦП.

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

SOAP (Simple Object Access Protocol) — это протокол обмена данными, при котором запросы и ответы представляют собой строго структурированные XML-документы. Для многих разработчиков (включая меня) это может быть первое знакомство с этим протоколом. Более того, практическая информация по работе с SOAP и конкретно с сервисом закупок zakupki.gov.ru представлена в сети крайне ограниченно.

Структура статьи:

  1. Получение токена для работы с сервисом

  2. Структура xml-документа

  3. Пример программы на python

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

Получить токен можно следуя инструкции "ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ СЕРВИСОВ ОТДАЧИ ИНФОРМАЦИИ ЕИС ДЛЯ ЮРИДИЧЕСКИХ И ФИЗИЧЕСКИХ ЛИЦ", размещенном на zakupki.gov.ru. Но для того, чтобы не открывать лишних окон, вкратце опишу процесс здесь:

  1. Нужно перейти по адресу: https://zakupki.gov.ru/pmd/auth/welcome (естественно через поддерживаемый браузер).

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

  3. Готово! Сохраняем токен в надежное место

Пример токена: 5d035886-82af-4f98-8a74-278bf72ff457 (был указан в инструкции, не работающий)

Пример токена: 5d035886-82af-4f98-8a74-278bf72ff457 (был указан в инструкции, не работающий)

Структура xml-документа

Формирование правильного XML-документа — одна из главных сложностей при работе с сервисом. Любая ошибка, например, нарушение порядка тегов или отсутствие обязательного параметра, может привести к некорректному ответу сервера. Сервер либо возвращает сообщение об ошибке («Ошибка валидации полученного запроса по интеграционной схеме»), либо повторяет отправленный запрос без обработки.

Основные требования к XML-документам

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

  2. Каждый запрос должен содержать токен. Его необходимо указывать в элементе внутри.

  3. Использование метода. Название метода запроса указывается в внутри.

  4. Обязательные параметры для каждого метода. Список обязательных параметров для каждого метода можно найти в интеграционной схеме https://int44.zakupki.gov.ru/eis-integration/services/getDocsIP?xsd=getDocsIP-ws-api.xsd

Создание идеального XML — это как готовить торт: ингредиенты строго по списку, порядок добавления важен, а итоговая структура должна быть идеальной

Поддерживаемые методы:

  • getDocsByReestrNumberRequest – запрос формирования в ХД архивов с документами по реестровому номеру

  • getDocsByOrgRegionRequest – запрос формирования в ХД архивов с документами по региону заказчика и типу документа;

  • getDocSignaturesByUrlRequest – запрос формирования в ХД архивов с подписями документов;

  • getNsiRequest – запрос в хранилище документов (ХД) данных справочника

Далее я приведу пример работающего шаблона xml документа. Все взаимодействие с сервисом происходит через url https://int44.zakupki.gov.ru/eis-integration/services/getDocsIP. Для работы с этим сервисом каждый xml файл в soapenv:Header должен содержать элемент individualPerson_token со значение вашего токена. Пример:

<soapenv:Header>
<individualPerson_token>5d035886-82af-4f98-8a74-278bf72ff457</individualPerson_token>
</soapenv:Header>

В основной части направляется название метода и структурные элементы, которые ему соответствуют. Для каждого запроса должен быть index, в котором есть id, дата создания и режим работы сервиса (TEST или PROD, но лучше сразу PROD указывать). Пример:

<index>
<id>3f227a50-418d-47ea-a3f7-e9a85f3af6e7</id>
<createDateTime>2024-12-25T16:34:29</createDateTime>
<mode>PROD</mode>
</index>

И затем в selectionParams надо указать параметры отбора файлов.
Если мы используем getDocsByReestrNumberRequest, то надо указать тип подсистемы и реестровый номер. Пример:

<selectionParams>
<subsystemType>PRIZ</subsystemType>
<reestrNumber>0888200000224000038</reestrNumber>
</selectionParams>

В целом файл для метода getDocsByOrgRegionRequest будет выглядеть следующим образом:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://zakupki.gov.ru/fz44/get-docs-ip/ws">
<soapenv:Header>
<individualPerson_token>5d035886-82af-4f98-8a74-278bf72ff457</individualPerson_token> <!-- Здесь должен быть указан ваш токен -->
</soapenv:Header>
<soapenv:Body>
<ws:getDocsByOrgRegionRequest> <!-- Здесь указывается метод -->
<index> <!-- index принцип формирования был приведен ранее -->
<id>3f227a50-418d-47ea-a3f7-e9a85f3af6e7</id>
<createDateTime>2024-12-25T16:34:29</createDateTime>
<mode>PROD</mode>
</index>
<selectionParams> <!-- обратите внимание, для каждого метода будут свои параметры отбора, перечисленные в интеграционной схеме. Сохранение порядка параметров обязательно! -->
<subsystemType>PRIZ</subsystemType>
<reestrNumber>0888200000224000038</reestrNumber>
</selectionParams>
</ws:getDocsByOrgRegionRequest>
</soapenv:Body>
</soapenv:Envelope>

Для каждого метода существуют свои обязательные поля. Подробнее посмотреть обязательные параметры можно тут: https://int44.zakupki.gov.ru/eis-integration/services/getDocsIP?xsd=getDocsIP-ws-api.xsd. Порядок параметров важен!

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

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://zakupki.gov.ru/fz44/get-docs-ip/ws">
<soapenv:Header>
<individualPerson_token>5d035886-82af-4f98-8a74-278bf72ff457</individualPerson_token>
</soapenv:Header>
<soapenv:Body>
<ws:getDocsByOrgRegionRequest>
<index>
<id>3f227a50-418d-47ea-a3f7-e9a85f3af6e8</id>
<createDateTime>2024-12-25T16:38:45</createDateTime>
<mode>PROD</mode>
</index>
<selectionParams>
<orgRegion>72</orgRegion>
<subsystemType>PRIZ</subsystemType>
<documentType44>epNotificationEF2020</documentType44>
<periodInfo>
<exactDate>2024-12-24</exactDate>
</periodInfo>
</selectionParams>
</ws:getDocsByOrgRegionRequest>
</soapenv:Body>
</soapenv:Envelope>

Пример программы на Python

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

import uuid
import datetime
import os
import requests
import xmltodict

Для автоматизированной отправки запросов для метода , сформируем шаблон xml файла, в котором будут автоматически из кода подставляться токен, ID и время запроса и назовем его test.xml:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://zakupki.gov.ru/fz44/get-docs-le/ws">
<soapenv:Header>
<individualPerson_token>{{ token }}</individualPerson_token>
</soapenv:Header>
<soapenv:Body>
<ws:getDocsByReestrNumberRequest>
<index>
<id>{{ UUID }}</id>
<createDateTime>{{ created_time }}</createDateTime>
<mode>PROD</mode>
</index>
<selectionParams>
<subsystemType>PRIZ</subsystemType>
<reestrNumber>0888200000224000038</reestrNumber>
</selectionParams>
</ws:getDocsByReestrNumberRequest>
</soapenv:Body>
</soapenv:Envelope>

Теперь нам надо получить заполненный шаблон:

file_path = 'test.xml' # расположение файла-шаблона
token = '5d035886-82af-4f98-8a74-278bf72ff457' # вставьте сюда ваше токен

with open(file_path, 'r', encoding='utf-8') as file:
xml_content = file.read()
generated_uuid = str(uuid.uuid4()) # уникальный id для запроса
generated_datetime = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%dT%H:%M:%S') # текущая дата
xml_data = xml_content.replace("{{ UUID }}", generated_uuid).replace("{{ created_time }}", generated_datetime).replace("{{ token }}", token) # заполнение шаблона

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

url = 'https://int44.zakupki.gov.ru/eis-integration/services/getDoc...'
headers = {
'Content-Type': 'text/xml; charset=utf-8',
}
response = requests.post(url, data=xml_data, headers=headers, timeout=30)

В ответ мы получаем xml файл, в котором есть ссылка на архив. Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body>
<ns2:getDocsByOrgRegionResponse xmlns:ns2="http://zakupki.gov.ru/fz44/get-docs-ip/ws">
<index>
<id>8e5e2386-c1e9-499c-88e8-f23313667472</id>
<refId>e4858318-62c6-41c0-99a5-879cdc103b39</refId>
<createDateTime>2024-12-25T14:42:25.180</createDateTime>
<mode>PROD</mode>
</index>
<dataInfo>
<archiveUrl>ССЫЛКА</archiveUrl>
</dataInfo>
</ns2:getDocsByOrgRegionResponse>
</soap:Body></soap:Envelope>

Для парсинга xml воспользуемся библиотекой xmltodict и получим url архива:

response_content = xmltodict.parse(response.content)
url_archive = response_content['soap:Envelope']['soap:Body']['ns2:getDocsByOrgRegionResponse']['dataInfo']['archiveUrl']

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

подчеркивание - это моя работа :)

подчеркивание - это моя работа :)

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

headers = {
'individualPerson_token': token
}
response_get_archive = requests.get(url_archive, headers=headers, timeout=120)

И далее нам остается только сохранить архив:

with open('archive.zip', 'wb') as f:
f.write(response_get_archive.content)

Полный код программы:

import uuid
import datetime
import os
import requests
import xmltodict

file_path = 'test.xml'
token = '5d035886-82af-4f98-8a74-278bf72ff457' # вставьте сюда ваше токен

with open(file_path, 'r', encoding='utf-8') as file:
xml_content = file.read()
generated_uuid = str(uuid.uuid4())
generated_datetime = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%dT%H:%M:%S')
xml_data = xml_content.replace("{{ UUID }}", generated_uuid).replace("{{ created_time }}", generated_datetime).replace("{{ token }}", token)


url = 'https://int44.zakupki.gov.ru/eis-integration/services/getDoc...'
headers = {
'Content-Type': 'text/xml; charset=utf-8',
}
response = requests.post(url, data=xml_data, headers=headers, timeout=30)

response_content = xmltodict.parse(response.content)
url_archive = response_content['soap:Envelope']['soap:Body']['ns2:getDocsByOrgRegionResponse']['dataInfo']['archiveUrl']
headers = {
'individualPerson_token': token
}
response_get_archive = requests.get(url_archive, headers=headers, timeout=120)

with open('archive.zip', 'wb') as f:
f.write(response_get_archive.content)

Надеюсь данная статья послужит толчком для изучения протокола работы с SOAP и поможет разобраться с сервисом отдачи информации и документов zakupki.gov.ru

Показать полностью 3
23

Я сделал бесплатный блокировщик спам-объявлений и вот что узнал о себе

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

Как известно, “все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему”, поэтому смысла останавливаться на позитивных отзывах нет - они несут в себе радость, оптимизм, отличное настроение и иногда классные словечки, которые приятно слышать про свое детище (”турбопушка”, например)

особенно приятно такое слышать от милого котенка &#x1F600;

особенно приятно такое слышать от милого котенка 😀

Моя самая любимая категория негативных отзывов - “продались”. Такие невероятные истории люди придумывают! Я иногда сижу в растерянности и думаю - это реально человек так считает или это просто прикол какой-то?

Вот так я узнал, что живу шантажом &#x1F600; Это вообще на самом деле топ! Я прямо представляю, как сидим с авитовцами в главном офисе и негодуем, что наш коварный план был раскрыт &#x1F600;

Вот так я узнал, что живу шантажом 😀 Это вообще на самом деле топ! Я прямо представляю, как сидим с авитовцами в главном офисе и негодуем, что наш коварный план был раскрыт 😀

До сих пор жду свой чек от Авито, видимо на почте какие-то сбои и он до сих пор не пришел &#x1F600;

До сих пор жду свой чек от Авито, видимо на почте какие-то сбои и он до сих пор не пришел 😀

Еще часто в отзывах, как условно положительных, так и отрицательных, проскальзывает тема “вот я бы сделал в тысячу раз лучше и красивее, но не хочу”

newart показал бы как надо с этими авитовцами бороться! Но лень. Еще с таким наездом вопросы задает, как будто я ему денег должен &#x1F600;

newart показал бы как надо с этими авитовцами бороться! Но лень. Еще с таким наездом вопросы задает, как будто я ему денег должен 😀

Eugene, меня тоже эта ситуация достала, вот я сел и написал расширение

Eugene, меня тоже эта ситуация достала, вот я сел и написал расширение

Кстати, можете присоединяться к разработке, проект в открытом доступе: https://github.com/SyrnikovPavel/ave_blacklist

Когда начинал разработку, даже не представлял с каким на самом деле потоком негатива можно столкнуться. Кто бы мог подумать, что у пользователей такие высокие требования к бесплатному расширению, которое люди делают в свое свободное время! Люди, будьте добрее! И не ищите подводных камней там, где просто кто-то (я, например) накосячил 🙂

А какие интересные и смешные отзывы вы слышали о себе/своем продукте? Пишите в комментариях :)

Показать полностью 4
30

Каково быть разработчиком бесплатных расширений Google Chrome

Всем здравствуйте! На связи создатель расширения Avito Blacklist Паша Сырников (это я) 👋🏼. Недавно количество пользователей моего расширения перевалило за 300 и было принято решение подвести короткий итог.

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

Началось с того, что я прочитал пост на Пикабу про продавцов-спамеров на Авито. Автор жаловался, что они забили всю ленту. Я подумал: вот оно, моя минута славы! Насчет денежных бенефитов у меня не было никаких иллюзий - я сразу понимал, что на бесплатном расширении никак не заработать. Разве что добрые люди переведут по 5-10 рублей, за год может на чашку кофе хватит. Спойлер: я оказался не совсем прав, но об этом попозже. В итоге я быстро сделал расширение по блокировке пользователей-спамеров, выложил его в Google Webstore 22 июня 2022, написал на Пикабу и стал ждать, пока пост не выйдет в лучшее, а у расширения не будет тысяч 10 пользователей.

* это я в ожидании огромного количество пользователей

В итоге в комментах отписались, мол, идея отличная, но наверное вы наши персональные данные продавать будете. Или более адекватная обратная связь: расширение классное, но пользуемся в основном мобильными версиями, так что не наш случай. Оказалось, что у людей не столь остро стоит эта проблема - хватает на то, чтобы немного поворчать, но не достаточно, чтобы принимать какие-либо действия. Если бы я применил на практике знания из книги “Спроси маму” (Роберт Фитцпатрик), то такого разочарования удалось бы избежать. Нужно было всего-то спросить: а как вы пытались решить данную проблему? Ответом было бы честное: никак. По мнению автора, это значит, что это не та проблема, которую следовало бы решать. Но зачем кого то слушать, если можно получить свой неповторимый опыт?

В итоге на совете директоров 3 июля 2022 было принято решение забить на дальнейшую работу над расширением. Показатели на тот момент: 3 пользователя, включая меня на двух браузерах. Это было примерно 22-25 июня 2022 года. До 26 января 2023 года я забыл о расширении. Но тут случилось оно:

* Письмо, которое я даже хотел распечатать и вставить в рамочку - до сих пор тепло от такой обратной связи

Сказать, что я офигел, это не сказать ничего. Им еще кто-то пользуется? Зашел в Delevoper Dashboard и офигел во второй раз: 14 пользователей! При этом я удалил у себя расширение 🤭 Кто все эти люди и как они нашли расширение для меня до сих пор загадка. Авито немного поменял разметку, я её обновил в расширении и с новыми силами взялся за проработку. Добавил пару функций, которые просили пользователи - блокировку отдельных объявлений и возможность импорта/экспорта базы данных.

Очень интересно то, какие разные люди пользуются расширением. Некоторые скидывают вполне приличные суммы: 300-1000 рублей и что важнее, искренне благодарят, пишут хорошие отзывы в вебсторе, по почте, в комментариях к переводам. В итоге удалось заработать на бесплатном расширении 2600 рублей (~13 чашек кофе по 190 рублей), что сильно превзошло мои ожидания. Но есть и обратная сторона, это когда пишут: твое тупое приложение не работает, автор тупой мудак, не может нормально ничего сделать и как влепят 1 звезду. Блин, это бесплатное расширение, кроме хорошего рейтинга и редких переводов у меня больше и нет ничего от него. А тут такая атака на мое настроение. Но как правило, все решается довольно быстро, просто спрашиваешь: а в чем собственно проблема? И проблема сама как-то решается. В основном, пользователь что-то не правильно понял, не внимательно описание прочитал.

Немного графиков:

* Рост пользователей с 22.06.2022 по 14.08.2023 в 326 раз! С 1 до 326 соответственно 😀

Общее количество установок - 651. 1 мая 2023 был какой-то всплеск. Наверное, связан с моей хаотичной маркетинговой деятельностью. Есть аналог моего расширения, который очень долгое время не работал и там начали писать отзывы и запросы в поддержку, что расширение не работает. Я решил, что автор забросил своё расширение и начал спамить в ответах под отзывами своим расширением. В итоге пользователей 10 мне удалось завлечь. В целом маркетинг заключался в том, что иногда в непредсказуемое время я отслеживал посты на Пикабу/vc.ru с обозначенной проблемой в виде продавцом спамеров и предлагал в комментариях свое решение. Также когда выходили посты “Топ 10 расширений для Google Chrome” и подобные, я также рекламировал в комментариях своё расширение. Аналитики никакой не настраивал, так что не могу сказать, что в итоге работает, а что нет.

Всего показов моего расширения было 5,2 тысячи, просмотров 2 тысячи и установок 650 штук. Значит конверсия из показа в просмотр составляет 38,46%, из просмотра в установку 32,5%. Честно говоря, не знаю, хорошо это или плохо. Когда только начинал делать расширение пытался найти какую-то статистику по данному вопросу, но сделать этого мне не удалось. Эта статья частично была призвана закрыть этот пробел.

Выводы и итоги:

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

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

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

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

Всем спасибо за внимание 😍

Показать полностью 8
16

Рекурсия в стиле Пикабу

Недавно наткнулся на пост: Задумалась, который является повтором поста из твитера:

Мне понравилась идея и я немного поиграл с разметкой сайта ЦБ для корректировки курса в приятную для глаз сторону, вышло так: Ответ на пост «Задумалась»

В итоге под моим постом появляется комментарий-пост, как думаете какой? Ответ SyrnikovPavel в «Задумалась»

Именно! Повторение исходного поста, который является копипастой с твитера. Я решил пойти ва-банк и еще несколько раз повторить эту шутку. Как думаете, пройдет? 😈

Показать полностью 3
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества