Уважаемое сообщество Discourse, вот мой небольшой рождественский подарок
для всех вас
. Он прост, но полезен, и был создан исключительно потому, что я сам этого хотел.
Вдохновившись отличным блогом Саймона Уиллисона о использовании LLM для разработки, я в стиле «вайб-кодинга» создал это расширение на Рождество, между социальными мероприятиями, просмотром фильмов и упаковкой подарков! Я не написал ни строчки кода, но я проверял код и руководил работой LLM. Всё управлялось на основе файлов spec.md и roadmap.md.
Для чего это нужно?
Я использую собственный Discourse в качестве блокнота, дневника, блога, резюме, вики, инструмента ИИ и базы знаний разработчика. Часто я обнаруживаю, что хочу «сохранить» (clip) контент из интернета (заголовок страницы + URL) и сразу поместить его в свой Discourse, откуда я могу включить его в заметку или запись в дневнике.
Мои потребности просты, поэтому это решение довольно базовое: оно просто публикует заголовок страницы и URL, хотя в будущем я хотел бы добавить опции «Включить фрагмент страницы» и «Сохранить всю страницу».
Конфиденциальность
- Оно вообще не собирает никаких данных о вас или вашем контенте.
- Все данные отправляются напрямую в ваш экземпляр Discourse из вашего браузера.
- Серверы третьих сторон не участвуют.
- Открытый исходный код. Репозиторий GitHub: GitHub - koloki-co/clip-to-discourse-chromium-extension: A Chromium Browser extension which clips web content to your private Discourse. · GitHub
Возможности
- Сохраняет заголовок страницы и URL. Опции «фрагмент страницы» или «полный текст страницы» реализованы, но пока работают довольно примитивно (однако ваш ИИ в Discourse мог бы позже сделать для вас сводку на вашем экземпляре Discourse?..)
- Создаёт новые темы для каждого сохранённого фрагмента или добавляет фрагменты как ответы в существующую тему.
- Поддерживает несколько профилей, позволяя хранить несколько API-ключей, целевые экземпляры Discourse и настройки по умолчанию для различных сценариев использования.
- Значок Clip To Discourse автоматически меняется, отображая фавиконку выбранного в данный момент профиля сайта, чтобы вы легко понимали, куда вы сохраняете фрагмент!
Ограничения
-
Главное ограничение заключается в том, что администратор должен создать для вас пользовательский API-ключ на том экземпляре Discourse, куда вы сохраняете фрагменты. Для меня это не проблема, так как я являюсь главным администратором всех экземпляров Discourse, для которых планирую использовать это расширение.
-
Очевидно, что если возможность «Clip To Discourse» будет доступна слишком большому числу пользователей, это может привести к大量 низкокачественных публикаций на общем или публичном экземпляре Discourse. Поэтому я в первую очередь ориентирован на тех из вас, кто, как и я, использует Discourse в качестве личного блокнота.
Как установить
- Установите расширение в любой браузер на основе Chromium (Chrome, Edge, Brave и т.д.) по ссылке в Chrome Web Store: https://chromewebstore.google.com/detail/clip-to-discourse/copdhiejkkdblhdcdjapcoalldkondhi
- (Опционально, но рекомендуется) «Закрепите» расширение на панели инструментов браузера.
-
Создайте пользовательский API-ключ для одного пользователя со следующими точными правами доступа: Topics:
read(используется только для проверки соединения),writeиupdate. -
Определите категорию, в которую должны попадать сохранённые фрагменты. Если вы хотите, чтобы каждый фрагмент создавал новую тему, вам нужен только ID категории. При просмотре категории этот ID указан в URL следующим образом:
https://discourse.yourdomain.com/c/CategoryName/CategoryID. -
Вы также можете указать тему, на которую будут отвечать фрагменты, и все сохранённые фрагменты будут добавлены как новые ответы в эту тему. Чтобы получить ID темы, также используйте URL: при просмотре темы этот ID указан в URL следующим образом:
https://discourse.yourdomain.com/t/TopicTitle/TopicID. -
Нажмите на значок расширения, чтобы открыть всплывающее окно, перейдите в Настройки, чтобы настроить API-ключ и задать параметры по умолчанию. Обратите внимание, что вы можете создать несколько «профилей» для различных экземпляров Discourse, которые вы, возможно, захотите использовать.
-
Сохраните настройки и (опционально) проверьте соединение, которое прочитает одну тему, чтобы убедиться, что API-соединение работает.
-
Закройте Настройки и сохраните что-нибудь для проверки!
Изображения
План разработки
-
Функции «Включить фрагмент страницы» и «Сохранить всю страницу» могут потребовать дополнительной проверки и доработки. Альтернативно, эта функция могла бы позволять пользователю выбирать область текста для сохранения в качестве фрагмента.
-
Я не планирую создавать расширения для Firefox или Safari (так как не использую эти браузеры), но был бы рад, если бы кто-то взялся за задачу портирования этого расширения. Мы могли бы сотрудничать, чтобы всё оставалось в одном репозитории и сохранялась функциональная совместимость.
-
Возможно, рассмотрю реализацию потока API пользователя Discourse, чтобы API-ключи не нужно было создавать администраторам, однако API пользователя работает через OAuth-поток, поэтому это не будет простой альтернативой «plug-and-play».
Связанные обсуждения
Запрос на инструмент, аналогичный этому: Chrome/Firefox extension "Share to discourse" - #28 by supermathie
Соответствующий пост с предложением дополнительных функций при сохранении контента из Discourse: Need Web Clipper for Discourse Post
Социальный обмен — это родственная концепция, но она использует простые URL: Social Share
Отзывы, идеи и вклад
Эта тема — отличное место для любых ваших отзывов. Я открыт к идеям по улучшению, пока они не усложняют расширение и/или не делают его менее полезным для меня!
Если вы хотите открыть проблемы (issues) или сделать запросы на слияние (PR), репозиторий GitHub находится здесь:
Это расширение — бесплатное, с открытым исходным кодом и ориентированное на конфиденциальность средство, созданное для сообщества Discourse моей компанией Koloki.co




