Маркетинг Igor Unnamed
792

Маркетинг на Github, PyPi, Npm

Как легко и быстро предоставить доступ к своему API разработчикам со всего мира? Давайте попробуем разобраться.

В закладки

API (Application Programming Interface) — это программный интерфейс для предоставления сторонним разработчикам доступа к вашей программе (модулю, библиотеке, коду, базе данных, сайту и т.д.).

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

Уже у многих компаний есть собственные маркет-плейсы: Zendesk Apps, Shopify Apps, WordPress plugins и т.д., где сторонние разработчики выкладывают свои модули использующие API этих платформ.

Итак, вы разрабатываете собственный API с подробной документацией. Дело за малым — кто будет этим пользоваться? Одно из решений это публикация кода на Github.com, это действительно просто. Чуть сложнее обстоят дела с публикацией в профессиональных каталогах (PyPi или Npmjs).

  • GitHub — хостинг IT-проектов — 36 млн. посетителей в месяц
  • PyPi.org — каталог модулей для Python — 2 млрд. установок в месяц
  • Npmjs.com — каталог модулей для Node js — 37 млрд. установок в месяц

Преимущества публикации API в профессиональных каталогах очевидны:

  • Это бесплатно
  • Ваша библиотека доступна для поиска в каталоге каждого репозитория
  • Каталоги имеют высокую «трастовость» со стороны поисковых систем и через пару дней после публикации вы можете оказаться в топе поисковой выдачи
  • Установка вашего модуля занимает пару секунд с помощью одной команды и ваш API готов к использованию! ($pip install module или $npm install module)
  • Внутренняя система контроля версий позволяет удобно выкатывать обновления вашего кода
  • Ваш код доступен круглосуточно для разработчиков со всего мира
  • Невысокая конкуренция. Как правило, разработчикам лень публиковать, поддерживать и развивать свой код

Некоторые недостатки профессиональных каталогов:

  • Нет мультиязычной поддержки ReadMe
  • Строгие требования к публикуемому коду
  • Отнимает много времени при публикации и последующих обновлениях вашего кода
  • Прочие «подводные камни» в зависимости от типа каталога

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

Кстати, GitHub.com не самое практичное решение, т.к. разработчики предпочитают использовать стандартные менеджеры пакетов (каталоги).

Кейс #1

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

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

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

Кейс #2

Вы маркетолог и хотите, чтобы о продуктах вашей компании узнало как можно большее кол-во разработчиков со всего мира. Публикации API на 3—4 ресурсах явно недостаточно, ведь вас должны находить по разным ключевым словам. Стандартный ReadMe этого не позволяет, т.к. содержит всего 1 языковую версию, а название библиотеки не позволяет добавить все словосочетания по которым (как вам кажется) вас должны находить.

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

Кейс #3

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

Причины для публикации кода у вас могут быть разные:

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

А вот причины по которым вы вероятно не станете публиковать свой код:

  • Нет времени подготавливать описание (ReadMe), тем более, если оно на нескольких языках
  • Нет желания разбираться в нюансах публикации кода и сливать своё время «в трубу»
  • Нет времени на поддержку своих библиотек, т.к. каждый раз приходится снова вспоминать все тонкости для обновления кода в каталогах
  • Ну или вам это просто не надо =)

Решение кейсов

Как сделать так, что бы код вашего API (модуля/библиотеки) был всегда под рукой и не отнимал время на публикацию или обновления?

Для этой задачи я перебрал много разных решений, но не одно не решало задач моей компании. В итоге я разработал собственный сервис для массового тиражирования API — GitUpload.com

Сервис выводит вашу библиотеку в топ выдачи Google уже через пару дней после первой публикации кода (если вы всё сделали правильно)

Пример попадания библиотеки в поисковую выдачу Google по интересному запросу (6—8 строчка)

Что умеет GitUpload.com

  • Автоматическая публикация кода на: Npmjs.com, PyPi.com, Github.com

  • Автоматический перевод ReadMe на 6 языков

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

  • Умное клонирование, т.е. ваша библиотека публикуется не 1 раз, а ее можно растиражировать с разными ключами по разным аккаунтам, чтобы ее находили как можно чаще. Ах да, я слежу за тем, что бы не было злоупотребления (спама).

  • Панель управления своими аккаунтами от репозиториев и каталогов
  • Подготовка проекта и публикация занимает пару минут
  • Это бесплатно и навсегда =)

Примеры библиотек опубликованных с помощью GitUpload.com

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

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

Спасибо, что дочитали до конца. С любовь, я.

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

Написать
{ "author_name": "Igor Unnamed", "author_type": "self", "tags": ["3","2","1"], "comments": 15, "likes": 3, "favorites": 14, "is_advertisement": false, "subsite_label": "marketing", "id": 53808, "is_wide": false, "is_ugc": true, "date": "Wed, 19 Dec 2018 19:56:37 +0300" }
{ "id": 53808, "author_id": 232812, "diff_limit": 1000, "urls": {"diff":"\/comments\/53808\/get","add":"\/comments\/53808\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/53808"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199113 }

15 комментариев 15 комм.

Популярные

По порядку

Написать комментарий...
0

Сорян, но ваш проект заменяется одним скриптом :(

Ответить
0

каким?

Ответить
0

1. Генерация метаданных под нужные пакетники
2. Генерация нужных ридмих
3. git push
4. Дергаем релиз в пакетниках

Ответить
0

Делов то! =) Сервис как-раз служит единым окном, что бы не биться лбом о маркетинг API и не погружаться сильно в консольный режим

Ответить
0

Если для разработчика API публикация кода на GitHub это «битье головой», то как он вообще работает с кодом?

Ответить
0

Ну как-раз с гитхабом проблем нет, я об этом вначале статьи написал))

Ответить
0

Ещё нужно понимать, что пакетники обычно сами неплохо тянут с github новые версии, и со временем будут делать это лучше

Ответить
0

Со временем будет ИИ, который сам будет кодить и решать что подтягивать, но пока ни того ни другого нет.

Ответить
0

Понятненько, я думал пытаюсь объяснить по адресу. Что ж, не буду терять наше время

Ответить
0

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

Ответить
0

Вы думаете, что решаете проблему, но её нет.

Ответить
0

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

Ответить
0

По-моему судя по вашим постам, проблема у вас одна – пристроить свои домены.

Ответить
0

А какая связь? Поясните пожалуйста. Что за "куча" доменов? Всего один =) Это вроде не зазорно домены то продавать.

Ответить
0

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

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Команда калифорнийского проекта
оказалась нейронной сетью
Подписаться на push-уведомления
{ "page_type": "default" }