Расширение Clip To Discourse для Chrome — теперь с поддержкой User API!

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

Вдохновлённый отличным блогом Саймона Уиллисона об использовании LLM для разработки, я «вайб-кодил» это в рождественские праздники, в перерывах между посиделками с друзьями, просмотром фильмов и упаковкой подарков! Я не писал ни строчки кода, но я ревьюил код и руководил работой LLM. Всё управлялось из spec.md и roadmap.md.

Для чего это?

Я использую самохостедный, личный Discourse в качестве Блокнота, Дневника, Блога, Резюме, Вики, AI-инструмента и базы знаний разработчика. Часто мне хочется «вырезать» (clip) контент из веба и сразу бросить его в мой Discourse, откуда я могу включить его в заметку или запись в дневнике.

Clip To Discourse теперь поддерживает четыре стиля вырезания: Заголовок страницы + URL, Заголовок + URL + Выдержка, Полный текст страницы и выделенный текст.

Конфиденциальность

  • Разработчик не собирает данные о вашем использовании расширения.
  • Вырезанный контент и учётные данные отправляются напрямую из вашего браузера на настроенный вами экземпляр Discourse.
  • Сервис-посредник Clip To Discourse не используется.
  • Профили и учётные данные хранятся локально в хранилище расширений Chrome на вашем устройстве.
  • Открытый исходный код. Репозиторий на GitHub: GitHub - koloki-co/clip-to-discourse-chromium-extension: A Chromium Browser extension which clips web content to your private Discourse. · GitHub

Возможности

  • Вырезайте страницу в формате Заголовок + URL, Заголовок + URL + Выдержка, Полный текст страницы или Выделенный текст.
  • Создавайте новые темы для каждого вырезания или добавляйте вырезания как ответы в существующую тему.
  • Авторизация через User API Discourse без необходимости создания ключа API администратором. Ключ API, предоставленный администратором и ограниченный одним пользователем, остаётся доступным как запасной вариант.
  • Поддержка нескольких профилей для разных экземпляров Discourse, пользователей, учётных данных, шаблонов и значений по умолчанию. Профили можно переименовывать, дублировать или удалять.
  • Выбор целевой категории из доступных для подключённого аккаунта.
  • Настройка шаблонов заголовка и тела с использованием метаданных страницы, выдержек, полного текста, выделенного текста и плейсхолдеров даты.
  • Выбор внешнего вида: System, Light или Dark.
  • По желанию можно изменить иконку панели инструментов Clip To Discourse на favicon сайта выбранного профиля, чтобы легко понимать, куда именно вы вырезаете контент.
  • Открытие всплывающего окна с помощью Ctrl+Shift+K (Command+Shift+K на macOS), настраивается в chrome://extensions/shortcuts.

Ограничения

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

Как установить

  • Установите в Chrome или другом совместимом браузере на базе Chromium, версия 127 или новее, через Chrome Web Store: https://chromewebstore.google.com/detail/clip-to-discourse/copdhiejkkdblhdcdjapcoalldkondhi
  • При желании «закрепите» расширение на панели инструментов браузера.
  • Нажмите на иконку расширения, откройте Настройки и введите ваш базовый URL Discourse.
  • Выберите User API и нажмите Authorize Clip To Discourse. Войдите в свой аккаунт Discourse, введите отображаемый код устройства, если будет запрошено, и разрешите доступ.
  • Если авторизация через User API недоступна, используйте вкладку Admin API Key с предоставленным администратором ключом API для одного пользователя. Избегайте использования глобальных ключей API.
  • Выберите стиль вырезания по умолчанию, назначение, категорию или ID существующей темы, и при необходимости настройте шаблоны.
  • Сохраните настройки и при желании протестируйте соединение.
  • Закройте настройки и вырезайте контент, чтобы проверить работу!

Авторизация Clip To Discourse

Вырезание в Discourse

Дорожная карта

  • Я не планирую создавать расширение для Firefox или Safari (так как не использую эти браузеры), но буду рад, если кто-то возьмётся за задачу портирования этого расширения. Мы могли бы сотрудничать, чтобы держать всё в одном репозитории и поддерживать паритет функций.
  • Возможные будущие дополнения включают теги, дополнительные горячие клавиши и дальнейшее улучшение рабочего процесса вырезания.

Связанные обсуждения

Запрос на создание инструмента, по сути, такого же: Chrome/Firefox extension “Share to discourse” - #28 by supermathie

Связанный пост, предлагающий дополнительные функции при вырезании в Discourse: Need Web Clipper for Discourse Post

Social Share — связанное понятие, но использует простые URL: Social Share

Обратная связь, идеи и вклад

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

Если вы хотите открыть issues или сделать PR, репозиторий на GitHub здесь:

Это расширение — бесплатный, с открытым исходным кодом и ориентированный на конфиденциальность инструмент, созданный для сообщества Discourse моей компанией Koloki.co

13 лайков

Отличное расширение :clap:

1 лайк

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

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

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

  • Добавляет ссылку на страницу как ссылку-превью
  • Устанавливает заголовок темы равным заголовку сохранённой страницы
  • Помещает выделенный HTML-контент в тело сообщения

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

1 лайк

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

Отдельно от Discourse я уже давно использую расширение для браузера SingleFile. Оно сохраняет текущую страницу в виде одного HTML-файла, максимально точно воспроизводя то, что вы видите, чтобы можно было читать её офлайн. В моей папке ~/Downloads лежат бесчисленные HTML-файлы.

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

У меня уже есть множество сохранённых HTML-файлов, и в будущем их станет ещё больше, поэтому я задумался о функции, которая позволила бы импортировать эти файлы в Discourse для просмотра и управления ими там.

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

Было бы здорово, если бы существовал способ прямой интеграции с SingleFile или импорта HTML-файлов.

2 лайка

Спасибо за ссылку на расширение SingleFile — это отличный инструмент, и я, скорее всего, не стану пытаться дублировать его функционал или слишком сильно пересекаться с ним. У меня тоже есть такая же задача — просто сохранить рабочую версию страницы в одном HTML-файле, поэтому я тоже установил SingleFile. Я не знал об этом замечательном расширении!

После установки «Clipped To Discourse» вы также можете загрузить этот HTML-файл как вложение к сообщению. Именно так я, вероятно, стал бы его использовать — как альтернативу archive.org.

В будущих версиях Clip To Discourse я планирую сосредоточиться на:

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

Небольшие обновления для Clip To Discourse в версии 0.19.2

  • Улучшено вырезание «Всей страницы» (используется Mozilla Readability для более точного и удобочитаемого извлечения текста со страницы).
  • Введён лимит в 50 000 символов для текста в сообщениях (тело темы в Discourse не может превышать 50 тысяч символов, иначе возникают ошибки).

Источник: GitHub - koloki-co/clip-to-discourse-chromium-extension: A Chromium Browser extension which clips web content to your private Discourse. · GitHub
Chrome Web Store: https://chromewebstore.google.com/detail/copdhiejkkdblhdcdjapcoalldkondhi?utm_source=item-share-cb

1 лайк

Обновление: v0.19.5 — Поддержка выделения текста

Только что выпущена новая версия Clip To Discourse

Что нового

  • Автоматическое определение выделения: Когда на странице выделен текст, расширение теперь автоматически обнаруживает его и показывает, что именно будет скопировано (количество символов и слов)
  • Новый стиль копирования «Выделенный текст»: Присоединяется к существующим вариантам «Заголовок + URL», «Выдержка» и «Полный текст» в качестве четвертого стиля копирования
  • Умное автовыделение: При выделении текста расширение автоматически переключается в режим «Выделенный текст», чтобы вы точно знали, что копируете
  • Контекстное меню при щелчке правой кнопкой: Добавлен простой пункт контекстного меню «Копировать в Discourse», открывающий всплывающее окно (работает как с выделением, так и без него)
  • Настраиваемый шаблон: Шаблон для выделенного текста можно настроить в параметрах, как и для других стилей копирования

Это позволяет очень быстро выделить цитату или фрагмент и скопировать его напрямую в ваш Discourse с правильным контекстом (заголовок страницы + URL + ваш выделенный текст).

Скоро

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

1 лайк

Значительное обновление удобства использования: Clip To Discourse теперь поддерживает Discourse User API.

Это означает, что обычным пользователям Discourse больше не нужно просить администратора вручную создать для них API-ключ. Введите URL вашего сайта Discourse, нажмите Authorize Clip To Discourse, войдите в систему, введите отображенный код устройства, если он требуется, и подтвердите доступ.

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

API-ключи, предоставленные администратором и ограниченные правами пользователя, по-прежнему доступны как резервный вариант для сайтов, где авторизация через User API недоступна.

Clip To Discourse в Chrome Web Store