Alexander Chekmenev
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # [tg] BoostMateBot (ex. RandomOracleBot) ## Исследование рынка Текущие каналы привлечения новых подписчиков для каналов: - **закуп рекламы через биржи** - ...тут будет список... ### [У кого?] Целевая аудитория - администраторы мелких и средних каналов (каким именно каналам нужен такой бот? категории?) ### [Что болит?] Проблема №1 - сложность привлечения новых подписчиков - либо штатные каналы привлечения новых подписчиков недоступны для мелких и средних игроков - т.к. реклама недоступна мелким каналам из за высокой планки минимального рекламного бюджета - либо сложно или почти невозможно посчитать эффективность рекламных кампаний - не всегда известна стоимость привлечения подписчика (Customer Acquisition Cost) - например при обмен постами между каналами - нет возможности считать Retention, когорты - нет возможности считать ROI, LTV - например если канал дальше ведет на сайт онлайн магазина то можно связать подписчика с покупателем товара или услуги на сайте ### [Что болит?] Проблема №2 - низкая вовлеченность текущих подписчиков - зачастую подписчики отключают уведомления через некоторое время время после подписки и становятся по сути недоступны для авторов каналов --- ### [Решение] BoostMate ... тут краткое описание функциональности бота... - Цели - увеличить аудиторию своего канала - обменяться аудиторией с другим каналом - - перелить свою аудиторию на другой канал - boost маленьких каналов - Условия старта розыгрыша: - вручную - по расписанию - Условия завершения розыгрыша: - вручную - по расписанию - по достижению заданного количества участников - Требуемое действие - привлечение необходимого количества друзей - подписка на канал(ы) - подписка на канал(ы) + привлечение необходимого количества друзей на другой канал(ы) - конверсия на стороннем ресурсе (покупка, регистрация, отзыв) через webhook - ... - Выбор победителей - кто больше пригласил - случайно - смешанный формат (например, первый кто больше пригласил, а остальные случайно) - Количество победителей - конкретное количество - все кто выполнил условия (подойдет для розыгрыша промокода, сертификата или уникальной ссылки на приз) - Тип приза - приз от организатора - промокод, сертификат, ссылка на приз - Контактное лицо (кому писать в случае каких-то вопросов во время проведения) - Нотификации участников - об успешном приглашении друга в конкурс - друг не может быть привлечен в конкурс - участник выиграл в конкурсе - участник не выиграл в конкурсе (утешительный приз)? **Use cases** 1. Виды розыгрышей (получи шанс выиграть приз за совершенное действие) - розыгрыш в одном канале - goal1: наращиваем аудиторию канала за счет друзей подписчиков - action1: пригласить друзей которые еще неподписаны - goal2: сфокусировать активность аудитории на конкретном посте - action2: просмотры, реакции, комменты - розыгрыш в нескольких каналах - goal1: обмениваемся аудиторией с другими каналами - action1: подписаться на все каналы в розыгрыше - goal2: (boost стороннего канала) переливаем свою аудиторию в другой канал - action2: подписаться на другой канал и пригласить туда друзей - ... 2. Промо-акция - например, появилось какое-то новое приложение и мы хотим привлечь пользователей, а также померить сколько людей в итоге установило приложение - тоже самое с сайтом или онлайн-магазином - или "вышел новый продукт" и нужно увеличить количество продаж 3. ?? Акции & подарки (получи скидку / подарок / whatever за совершенное действие) - создается уникальная ссылка на акцию, которая ведет на бота - при открытии открывается webApp где трекаются действия пользователей - можно попросить выполнить какие-то действия, чтобы получить скидку или подарок - benefits: можно получать список лояльных пользователей (потенциальные лиды), прогревать аудиторию, A/B тестирование акций для выбора наиболее интересных 4. ??? Обмен постами между каналами (без явного розыгрыша) - с использованием бота - ... - с использованием обычных invite-links - возможность выгрузить список привлеченных пользователей 5. Быть подписчиком все время проведения розыгрыша - в это время рекламные посты получают большие охваты 6. A/B тестирование лендингов - целевое действие = заявка на сайте, для каждого участника открывается один из нескольких вариантов сайта ### Конкуренты 1. [@ContestyBot](https://t.me/contestybot) * [описание](https://telegra.ph/Contesty-05-07) * [поддерживается](https://t.me/contestychat) * X только русский язык! * есть статьи на VC * были попытки раскрутки через спам в комментах * V есть превью поста с конкурсом и оно работает * чистит вообще все сообщения в процессе общения с ботом * тестовый конкурс был под номером 2393, что говорит о том, что бота скорее всего не особо используют * нет возможности автоматически опубликовать пост о начале и конце розыгрыша в каналах * проверяет ли подписку перед тем как подвести итоги??? 2. [@tgprize_bot](https://t.me/tgprize_bot) * проверяет подписку * закрытый бот * 5000р месяц использования * пользуются крупнейшие тг-каналы (ЖЮ, Двач, МДК, Лепра и тд.) 3. [@RandomGodBot]() * V Умеет проверять подписку на каналы в розыгрыше * X только русский язык! * X нет возможности настроить пост с результатами розыгрыша * [code](https://github.com/RisenSky/RandomGodBot) 4. [@GivysBot](https://t.me/GivysBot) * [поддерживается](https://t.me/expentedsoft) * [видео-инструкция](https://www.youtube.com/watch?v=oYVjw5T4n-U) * V 3 языка: русский, английский и украинский * X нет удобного редактора описания розыгрыша * V есть участие через сайт, на котором стоит капча + CloudFlare (видимо еще проверяется айпишник). [Происходит логин на сайт через бота!](https://i.imgur.com/JrrFnun.png) 5. [@ContestMasterBot](https://t.me/ContestMasterBot) * [описание](https://teletype.in/@detresher/giveaway#Y7u9) * много функционала, но интерфейс сложный и неудобный * [Макросы в описании розыгрыша](https://i.imgur.com/Ro4lDiU.png) * V Экспорт участников в xlsx формате * неудобный интерфейс для админа * X не проверяется подписка при нажатии "Участвовать" 6. [@RandomTGbot]() * Бот поможет создать розыгрыш и определит победителей случайным образом. * [описание](https://ru.botostore.com/c/randomtgbot/) * не проверяет подписку * [демонстрация выбора победителей](https://t.me/RandomTG/262) * X странный дизайн: похоже на scam-проект * X участник прежде чем нажать на кнопку "Участвовать" должен активировать бота самостоятельно 7. [@VoterBiBot]() * [описание](https://teletype.in/@detresher/giveaway#4LPP) * Бот поможет провести лотерею или розыгрыш в твоем канале. * поддерживается, но новый функционал кажется не появляется * X реклама скам-проектов, отключение 3000р * V есть поддержка русского и английского * V есть поддержка таймзоны * X нет возможности редактировать и смотреть статистику по текущему розыгрышу 8. [@GIVES_ROBOT]() * ... * [описание](https://teletype.in/@detresher/giveaway#sqmC) 9. [@spin_everyday_bot]() * Бот для ежедневных розыгрышей. * [code](https://github.com/evgfilim1/spin_everyday_bot) 10. [@random_ibot]() * не отвечает 11. [@VimTopbot]() * не отвечает 12. [@Tegivebot]() * отвечает, но не работает 13. [@alisatg_bot] * свежий бот - информацию о боте в канале начали публиковать в декабре 2022 14. [@tggrow] 15. https://giveshare.ru/ - https://vk.com/@brusnyka-instrumenty-telegram-bot ### Дифференциация относительно конкурентов - Бот всегда доступен - некоторые из имеющихся конкуретов не отвечают на команду /start - **Отслеживание кто сколько друзей пригласил**. У каждого участника своя уникальная invite-link по которой он приглашает друзей к участию в конкурсе - Трекинг новых подписчиков которые не отписались как минимум до конца розыгрыша - Удобный и гибкий UX - для создателей: - возможность настройки розыгрыша через webApp - превью и настройка поста с розыгрышем - тонкая настройка розыгрыша для каждого канала (в случае нескольких каналов в розыгрыше) - опциональная публикация поста с розыгрышем - опциональная публикация поста с результатами - ... - для участников: - проработанные пользовательские экраны - простые one-action экраны повышают конверсию в целевое действие - нотификации о привлечении новых пользователей - ... - Сохранение истории всех розыгрышей и участников - Мультиязычность - изначально поддержка двух языков: русский и английский - потенциальные языки: - казахский - индийский - узбекский - грузинский - армянский - украинский --- ## New features - Ссылка на сайт сообщества в webApp - [minor] Салют / хлопушка на экране слева и справа после успешного создания розыгрыша (как в Canva после регистрации) - *[Creator UX]* Добавление бота администратором в канал (стандартный экран) - Публикация поста о начале розыгрыша в inline моде (есть у @ContestyBot и у @ContestMasterBot) - Окно выбора канала (есть в @GivysBot при создании розыгрыша) - Возможность шаринга розыгрыша за пределы Телеграм (делать какую то уникальную ссылку с возможностью добавления UTM меток) - Тип призов: приз от организатора или сертификат/промокод/ссылка на приз - *[Epic]* Попросить ChatGPT сгенерировать начальное описание розыгрыша - Капча для каждого нового участника розыгрыша (есть у @RandomGodBot) - *[Creator UX]* Добавление канала в бота [Пример](https://i.imgur.com/NStDCKD.png) ⚠️ Внимание ⚠️ Вы можете добавить только публичную группу в бота, если ваша группа приватная, то сделайте ее на пару минут публичной. После добавления группы в бота, верните статус группы "Частная". Добавьте бота (@RandomGodBot) в ваш канал или чат как администратора с правом публикации сообщений. После этого отправьте мне канал в формате @channelname. Если вы хотите добавить приватный канал перешлите из него сообщение, или скопируйте и пришлите боту ссылку на любое сообщение из приватного канала. - *[Creator UX]* Превью поста который будет опубликован в канал - WYSIWYG редактор текста - редактор фото (crop, resize) - Имплементация SingleMessage mode в Telegram Z client - *[Creator UX]* Confirmation screen для публикации и завершения розыгрыша - *[Creator UX]* Просмотр статистики розыгрыша - список участников и их текущие результаты - ... - CSV - real time board (frontend) - *[Participant UX]* Регистрировать участника розыгрыша сразу при нажатии на кнопку "Участвовать" в посте - сразу после нажатия бот пишет пользователю для продолжения работы - *caveats: может ли бот писать пользователю который еще не активировал его (не отправлял команду /start)?* - **benefits: не теряем пользователей из-за неочевидного перехода в бота для участия в розыгрыше** - *[analytics]* Invite link на странице "Необходимо подписаться на следующие каналы" - в случае публичного канала: вместо стандартной ссылки на канал генерируем invite-link, чтобы владелец канала мог видеть сколько людей пришло с розыгрыша штатными средствами Телеграм - *[analytics]* Уникальная ссылка в посте (на кнопке "Участвовать") для каждого канала из розыгрыша (сейчас одна для всех) - чтобы можно было трекать из какого канала сколько людей пришло в розыгрыш - *[Participant UX]* Нотификация когда приглашенный пользователь выполнил все условия розыгрыша (подписался на все каналы) - *[security]* Авторизация для создателей розыгрышей (чтобы сторонние люди не имели доступа к редактированию розыгрыша) - отправить боту команду "хочу авторизоваться" - бот присылает ссылку вида https://site.ru/?token=%some-token% - пользователь переходит по ссылке и попадает на сайт (или в webApp) - вводит капчу нажимает "получить код" - бот присылает код - пользователь вводит код - создается сессия на 24 часа - *[повышение доверия к боту у крупных каналов]* Выделение отдельного микросервиса ("message-broker"), который умеет только получать и отправлять raw-сообщения (обертка над telegraf без безнес-логики) - *[PREMIUM]* Создатель розыгрыша может задеплоить такой "message-broker" сервис (куда-то) и общаться с нашим бекандом по API - **не раскрывает свой botToken** - **"message-broker" должен быть open-source**, чтобы было видно, что он не пересылает никуда botToken - **коммуницирует со своей аудиторией собственным ботом вместо нашего** - де-факто у нас вообще нет доступа к их боту, а соответсвенно и к каналу - **можно прозрачно для админов выкачивать adminLog**, чтобы трекать подписки и отписки (боты имеют доступ к методу [channels.getAdminLog](https://painor.gitbook.io/gramjs/working-with-channels-and-supergroups-and-geogroups/channels.getadminlog) или все такие [не имеют](https://gram.js.org/tl/channels/GetAdminLog)) - **позволит создать очередь сообщений и при ее помощи избегать FloodError** - ретраи на отправку сообщений (гарантия доставки) - упростит написание тестов, моков (мокаем простенький контракт между ботом и отправщиком сообщений вместо мока Telegraf context) - *[PREMIUM]* Возможность использовать собственного бота (премиум) - добавить креды бота в админке - задеплоить копию с этими кредами - *[Epic]* Глобальный список розыгрышей - features: - Список всех розыгрышей в разных каналах (Топ-розыгрышей) - по локациям - по количеству участников - benefits: **новый канал привлечения аудитории для каналов** - Рейтинг каналов на основе отзывов о проведенных розыгрышах - победители розыгрышей оставляют отзывы: получили ли они приз или нет, оценивают честность проведения розыгрыша - отзывы победителей выбранных случайно ценятся дороже - benefits: добросовестные каналы получают больше участников т.к. они доверяют результатам прошлых розыгрышей - *[Epic]* "Социальная сеть" участников всех розыгрышей - **обьединяем всех участников всех розыгрышей в одну экосистему** - слоган: "участвуй в розыгрышах и получай призы" - у каждого участника есть профиль: - все участия данного участника - достижения (ачивки которые можно пошарить в соц-сетях) - например, "Я выиграл в розыгрыше от канала Ньюсач" - **benefits: повышение виральности канала и бота** - отзывы - если побеждал в каком либо из конкурсов - **benefits: повышение доверия к каналам** - рейтинг - чем больше участвует тем выше рейтинг - ... какая-то формула расчета рейтинга ... - мошенник? - были ли подозрения в мошенничестве - **benefits: можно отлавливать мошенников на основе прошедших розыгрышей и не допускать к будущим** - *[Epic]* Anti-fraud - после выполнения всех условий розыгрыша запрашивать капчу и заодно чекать ip - trigger: проверять что приведенные пользователи имеют разные ip c пользователем который их привел - trigger: проверять что привлеченные пользователи не были зарегистрированы недавно - feature: допускать к участию только пользователей у которых userId <= K (K - выставляется в настройках розыгрыша) - определить K можно зарегистрировав фейковый аккаунт примерно во время старта розыгрыша и взяв K = userId - или проверяя *примерную* дату создания аккаунта в [@creationdatebot](https://t.me/creationdatebot), [code](https://github.com/karipov/creationDate) бота # Функциональность бота ## ChatGPT - Q: How could you interpret telegram bot with the name BoostMate? Which functions it could have? > The name BoostMate suggests that this Telegram bot has features related to increasing the size and engagement of a Telegram audience, and possibly involves partnerships or collaborations between different Telegram channels. > > Here are some possible functions that BoostMate could have: > > Audience Boost: The bot could offer ways to increase the size of a Telegram channel's audience, such as through targeted advertising or cross-promotion with other channels. > > Engagement Boost: The bot could offer tools to increase the engagement level of a Telegram channel's audience, such as through gamification, polls, or interactive features. > > Audience Exchange: The bot could facilitate partnerships between different Telegram channels, allowing channels to exchange audiences and increase their reach. > > Analytics: The bot could offer insights and data analysis on audience growth and engagement, allowing channel owners to make informed decisions on how to improve their channels. > > Customization: The bot could offer ways for channel owners to customize their channels, such as by adding custom branding, messages, or features. > > Customer Support: The bot could provide customer support to channel owners, answering questions and providing guidance on how to use the bot's features. > > Overall, the name BoostMate suggests a bot that is focused on helping Telegram channel owners grow their audiences and engage with their followers, and may involve collaborations or partnerships between different channels. ## Логика работы бота Организатор заходит в бота - старт ( ему присылаются условия работы и сколько чо куда оплатить ) Он оплатил - выбор механики розыгрыша ( комбинация от 1 до 4 вариантов) либо один либо любой набор для проверки всех условий 1) подписка на группы ( от 1 до ?) 2) привлечение друзей ( реферальная ссылка для друга) проверка условий пригласил ли пользователей нужное количество друзей - проверка ботом есть ли они в группе или присоединились в группу ( бот предварительно должен быть добавлен в группы на которую/ые должен быть подписан юзер) 3) лайк или коммент оставлен под записью 4) коменты ? Надо ли ( типа кто больше оставит или что-то в этом роде) То есть организатор выбирает любой набор механик для проведения. Публикует ссылку на конкурс - то есть уникальную на бота- пользователь по кнопке переходит в бота и бот понимает что это именно этот конкурс Пользователь подписывается на группы которые выдал бот, ставит лайк, и если надо приглашать пользователей , бот выдаёт уникальную ссылку на приглашение. ( при использовании закрытой группы мне кажется это реализуется проще ) Составляется список всех пользователей в базе кто выполнил все условия Мне кажется базу должна быть в открытом доступе. И после выполнения условий юзеру поставится номер порядковый Розыгрыш рандомом например в таком случае Ещё один из вариантов проведения - максимально активный - пригласил максимум друзей например # Продвижение (Where to spam after first release) - написать статью на VC.ruЕ ## Статьи - https://vc.ru/social/289120-kak-provesti-konkurs-v-telegram-kanale-ili-chate - https://vc.ru/u/936550-lilly-bradshaw/292871-sozdaem-rozygrysh-v-telegram-kanale-chate-s-pomoshchyu-bota - https://dnative.ru/ask/question/posovetujte-rabochie-sposoby-sdelat-konkurs-v-telegram/ - https://vc.ru/u/1370296-evgeniya-goncharenko/554124-kak-provesti-konkurs-v-telegram-kanale-i-chate - https://vc.ru/social/209215-kak-provesti-konkurs-v-telegram - **https://postium.ru/konkurs-rozygrysh-telegram/** - описание процесса проведения конкурсов Подборки - https://vc.ru/u/740266-mks-media/412959-15-poleznyh-telegram-botov-dlya-marketologa - https://www.unisender.com/ru/blog/idei/boty-v-telegram/ - [Привлечение новой аудитории за счет создания загадок](https://vc.ru/marketing/455951-zagadki-na-blokcheyne-ili-kak-poluchit-tysyachu-dollarov-za-odin-vecher) - https://vc.ru/services/366418-bolshaya-podborka-telegram-botov-2022 ### Видео-гайды по созданию розыгрышей (потенциально попросить перезаписать или как минимум написать о боте в комментах) - https://www.youtube.com/watch?v=PUZ9YIBzPes ### Видео для маркетологов по Телеграму - https://www.youtube.com/watch?v=RqnEXaSR0Vw ## Stores - botostore.com - TelegramBots.info - Tgram.ru - Telegram-Store.com - catalog-telegram.info - https://vc.ru/tag/%D1%81%D1%83%D0%B1%D0%B1%D0%BE%D1%82%D0%BD%D0%B8%D0%B9%D1%81%D0%B0%D0%BC%D0%BE%D0%BF%D0%B8%D0%B0%D1%80 # Development resources - [state-machine](https://miro.com/app/board/uXjVO4w032c=/) - [telegraf.js Scenes/Stages/Wizard docs](https://github.com/telegraf/telegraf/issues/705#issuecomment-549056045) - [telegraf.js Wizard examples](https://github.com/feathers-studio/telegraf-docs/tree/master/examples/wizards) - https://github.com/telegraf/telegraf/issues/391 - [Telegram bots dev course](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_12/) - Try TS transformers [1](https://www.npmjs.com/package/ttypescript) [2](https://github.com/kimamula/ts-transformer-keys/issues/4) - [How to avoid FloodError](https://github.com/sochix/TLSharp/issues/474) - Telegraf.js examples - https://github.com/ZorinAlex/telega/blob/2e264b442e930be53915cdd951ce4b8f156aa3c4/back/sevices/channels/src/telegram/telegram.service.ts - https://github.com/harisillahi/teledrive-repository/blob/4d7e5ebe487b854c3aa909e72ff71c2eaa794312/api/src/api/v1/Messages.ts - telegraf.js custom context [example](https://github.com/telegraf/telegraf/issues/1139) - [Telegram Post Widget](https://core.telegram.org/widgets/post) # Потенциальные pivot'ы - testing library for Telegraf.js - Telegram messages previewer & editor ## WYSIWYG - https://quilljs.com/playground/ # Wiki ## Правила проведения розыгрышей - Q: При каком условии пользователь засчитывается как участник розыгрыша? - A: Счетчик количества участников в посте с розыгрышем обновится только после того как участник нажмет кнопку "Участвовать", а также выполнит все условия розыгрыша (например, подпишется на все каналы в розыгрыше) - Q: Как запустить розыгрыш вручную? - A: После завершения создания розыгрыша, вы увидите кнопку "Опубликовать"

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully