Liebe Discourse-Community, hier ist mein kleines Weihnachtsgeschenk für euch alle. Es ist einfach, aber nützlich, und wurde rein deshalb erstellt, weil ich es haben wollte.
Inspiriert von Simons Willisons großartigem Blogbeitrag über die Nutzung von LLMs für die Entwicklung, habe ich dies über die Feiertage „vibe-coding“-mäßig erstellt – zwischen gesellschaftlichen Terminen, Filmen und Geschenke-Einwickeln! Ich habe keinen einzigen Zeile Code geschrieben, aber ich habe den Code überprüft und das LLM beaufsichtigt. Alles wurde aus spec.md und roadmap.md gesteuert.
Wofür ist es da?
Ich nutze einen selbst gehosteten, persönlichen Discourse als Notizbuch, Tagebuch, Blog, Lebenslauf, Wiki, KI-Tool und Entwickler-Wissensdatenbank. Häufig möchte ich Inhalte aus dem Web „clipsen“ und direkt in meinen Discourse einfügen, von wo aus ich sie in einen Notiz- oder Tagebucheintrag integrieren kann.
Clip To Discourse unterstützt nun vier Clipping-Stile: Seitentitel + URL, Titel + URL + Auszug, Volltext der Seite und ausgewählter Text.
Datenschutz
Der Entwickler sammelt keine Daten über die Nutzung der Erweiterung.
Geklipse Inhalte und Anmeldedaten werden direkt von deinem Browser an die von dir konfigurierte Discourse-Instanz gesendet.
Es ist kein Clip-To-Discourse-Zwischendienst beteiligt.
Profile und Anmeldedaten werden lokal im Erweiterungsspeicher von Chrome auf deinem Gerät gespeichert.
Eine Seite als Titel + URL, Titel + URL + Auszug, Volltext oder Textauswahl clippen.
Mit jedem Clip ein neues Thema erstellen oder Clips als Antworten zu einem vorhandenen Thema hinzufügen.
Autorisierung über die Discourse User API, ohne dass ein Administrator einen API-Schlüssel erstellen muss. Ein von einem Administrator bereitgestellter, nutzerbezogener API-Schlüssel steht weiterhin als Fallback zur Verfügung.
Unterstützt mehrere Profile für verschiedene Discourse-Instanzen, Benutzer, Anmeldedaten, Vorlagen und Standardwerte. Profile können umbenannt, dupliziert oder gelöscht werden.
Wähle eine Zielkategorie aus den für das verbundene Konto verfügbaren Kategorien.
Passe Titel- und Inhaltsvorlagen mit Seitenmetadaten, Auszügen, Volltext, ausgewähltem Text und Datumsplatzhaltern an.
Wähle zwischen System-, Hell- oder Dunkelmodus.
Ändere optional das Clip-To-Discourse-Toolbar-Symbol in die Favicon der ausgewählten Profil-Website, damit du leicht erkennen kannst, wohin du clippst.
Öffne das Pop-up mit Strg+Shift+K (auf macOS Command+Shift+K), konfigurierbar unter chrome://extensions/shortcuts.
Einschränkungen
Die Discourse-Website muss User-API-Schlüssel aktivieren und die Autorisierung für die Gruppe deines Kontos erlauben. Wenn die User-API-Autorisierung nicht verfügbar ist, kann ein Website-Administrator einen API-Schlüssel für einen einzelnen Benutzer mit detaillierten Berechtigungen bereitstellen.
Klar ist, dass die Clip-To-Discourse-Funktion, wenn sie für zu viele Benutzer aktiviert ist, auf einer geteilten oder öffentlichen Discourse-Instanz viele Beiträge von geringer Qualität erzeugen könnte. Daher richtet sich diese Erweiterung in erster Linie an diejenigen unter euch, die wie ich Discourse als persönliches Notizbuch nutzen.
Befestige die Erweiterung optional in der Browser-Toolbar.
Klicke auf das Erweiterungssymbol, öffne Einstellungen und gib deine Discourse-Basis-URL ein.
Wähle User API und klicke auf Clip To Discourse autorisieren. Melde dich bei deinem Discourse-Konto an, gib den angezeigten Gerätecode ein, wenn gefordert, und genehmige den Zugriff.
Wenn die User-API-Autorisierung nicht verfügbar ist, verwende den Tab Admin API Key mit einem von einem Administrator bereitgestellten API-Schlüssel für einen einzelnen Benutzer. Vermeide globale API-Schlüssel.
Wähle deinen Standard-Clipping-Stil, das Ziel, die Kategorie oder die vorhandene Themen-ID und passe die Vorlagen optional an.
Speichere die Einstellungen und teste optional die Verbindung.
Schließe die Einstellungen und clippe etwas zum Testen!
Ich plane keine Erweiterung für Firefox oder Safari (da ich diese Browser nicht nutze), würde mich aber freuen, wenn jemand die Aufgabe übernimmt, diese Erweiterung zu portieren. Wir könnten zusammenarbeiten, um alles in einem Repo zu halten und die Funktionsgleichheit zu gewährleisten.
Mögliche zukünftige Ergänzungen umfassen Tags, zusätzliche Tastenkombinationen und weitere Verfeinerungen des Clipping-Workflows.
Social Share ist ein verwandtes Konzept, verwendet aber einfache URLs: Social Share
Feedback, Ideen und Mitmachen
Dieses Thema ist ein ziemlich guter Ort, um Feedback zu hinterlassen. Ich bin für Verbesserungsvorschläge offen, solange sie die Erweiterung nicht überkomplizieren und/oder für mich weniger nützlich machen!
Wenn du Issues eröffnen oder PRs einreichen möchtest, findest du das GitHub-Repo hier:
Diese Erweiterung ist ein kostenloses, Open-Source- und datenschutzfreundliches Tool, das von meinem Unternehmen Koloki.co für die Discourse-Community erstellt wurde.
Das könnte auch mein Anwendungsfall sein. Idealerweise würde beim Ausschneiden in ein neues Thema der hervorgehobene Link verwendet werden, diesen nutze ich intensiv (benutzerdefiniertes Layout ignorieren):
Ich wäre auch froh, wenn das Ausschneiden den aktuell auf der Seite ausgewählten Text importieren würde, ich bin mir nicht sicher, ob das möglich ist.
Ich stelle mir das so vor: Ich bin auf einer Seite mit einem interessanten Text. Ich wähle den Text aus, schneide ihn in ein neues Thema aus, und es:
Fügt den Seitenlink als hervorgehobenen Link ein
Setzt den Titel als den ausgeschnittenen Seitentitel
Setzt den ausgewählten HTML-Inhalt als Beitragstext
Bearbeitung: Für die ersten beiden Schritte funktioniert Davids ausgezeichnete Lösung sehr gut. Es erfordert, dass ich das Thema manuell poste, aber für meinen Gebrauch denke ich, dass es in Ordnung ist
Ich hatte dieselbe Idee schon vor langer Zeit, habe es aber erst vor einer Woche endlich geschafft, es einzurichten.
Unabhängig von Discourse ist die Methode, die ich persönlich seit langem verwende, die Browsererweiterung SingleFile. Sie speichert die aktuell angezeigte Seite als einzelne HTML-Datei und bewahrt sie so genau wie möglich so, wie Sie sie sehen, damit Sie sie offline lesen können. Unzählige HTML-Dateien schlummern in meinem Ordner \~/Downloads.
Da Informationen im Internet nicht ewig dort bleiben, ist der zuverlässigste Weg, das, was Sie gerade sehen, exakt so, wie es ist, auf Ihrem eigenen Computer zu speichern.
Ich habe bereits viele HTML-Dateien gespeichert, und in Zukunft werden noch viele weitere hinzukommen, daher habe ich über eine Funktion nachgedacht, mit der ich diese Dateien in Discourse importieren könnte, um sie dort anzuzeigen und zu verwalten.
Wenn Sie planen, eine Funktion zum „Scrappen“ oder zum Ausschneiden von Webinhalten hinzuzufügen, wird diese sich stark mit dem überschneiden, was die SingleFile-Erweiterung bereits gut kann.
Es wäre großartig, wenn es eine Möglichkeit gäbe, sich direkt in SingleFile zu integrieren oder HTML-Dateien zu importieren.
Vielen Dank für das Teilen der SingleFile-Erweiterung – das ist ein großartiges Werkzeug, mit dem ich wahrscheinlich nicht zu viel konkurrieren oder mich überschneiden möchte. Ich habe auch denselben Anwendungsfall – ich möchte einfach eine funktionierende Version der Seite in einer einzigen HTML-Datei speichern, also habe ich SingleFile auch installiert. Ich wusste nichts von dieser großartigen Erweiterung!
Sobald Sie „Clipped To Discourse“ haben, könnten Sie diese HTML-Datei auch als Anhang an den Beitrag hochladen. So würde ich es wahrscheinlich als Alternative zu archive.org verwenden.
Für zukünftige Versionen von Clip To Discourse werde ich mich auf Folgendes konzentrieren:
Vom Benutzer ausgewählter Textbereich als Auszug (Excerpt)
Verbesserte Markdown-Formatierung dieses Auszuginhalts
Einige kleine Updates für Clip To Discourse in Version 0.19.2
Verbessertes „Ganze Seite“-Clipping (verwendet Mozilla Readability, um den Seitentext genauer und lesbarer auszuschneiden).
Es wurde ein Limit von 50.000 Zeichen für Text in Beiträgen eingeführt (der Discourse-Themenkörper darf nicht größer als 50.000 Zeichen sein, da sonst Fehler auftreten).
Habe gerade eine neue Version von Clip To Discourse veröffentlicht.
Neuigkeiten
Automatische Auswahl-Erkennung: Wenn Sie Text auf einer Seite markiert haben, erkennt die Erweiterung diesen nun automatisch und zeigt Ihnen genau an, was ausgeschnitten wird (Zeichen- und Wortanzahl).
Neuer „Textauswahl“-Clip-Stil: Ergänzt die bestehenden Optionen Titel+URL, Auszug und Volltext als 4. Clip-Stil.
Intelligente automatische Auswahl: Wenn Text markiert ist, schaltet die Erweiterung automatisch in den Modus „Textauswahl“, damit Sie genau wissen, was Sie ausschneiden.
Rechtsklick-Kontextmenü: Ein einfaches Kontextmenü-Element „An Discourse senden“ wurde hinzugefügt, das das Popup öffnet (funktioniert mit oder ohne Auswahl).
Anpassbare Vorlage: Die Vorlage für die Textauswahl kann wie bei den anderen Clip-Stilen in den Einstellungen angepasst werden.
Dies ermöglicht es, ein Zitat oder eine Passage sehr schnell zu markieren und sie direkt mit dem richtigen Kontext (Seitentitel + URL + Ihr ausgewählter Text) an Ihr Discourse zu senden.
Demnächst
Aktuell arbeiten wir an der Implementierung des Discourse User API Flows, der es Benutzern ermöglichen wird, die Erweiterung über OAuth zu autorisieren, ohne dass ein Administrator API-Schlüssel erstellen muss. Dies wird die Verwendung der Erweiterung auf gemeinsam genutzten oder öffentlichen Discourse-Instanzen erheblich vereinfachen!
Ein wesentlicher Usability-Update: Clip To Discourse unterstützt jetzt die Discourse User API.
Das bedeutet, dass normale Discourse-Nutzer nicht mehr auf einen Administrator angewiesen sind, der manuell einen API-Schlüssel für sie erstellt. Geben Sie Ihre Discourse-URL ein, klicken Sie auf Clip To Discourse autorisieren, melden Sie sich an, geben Sie den angezeigten Gerätecode ein (falls erforderlich) und genehmigen Sie den Zugriff.
Die Website muss weiterhin die User API Keys global aktiviert haben (aktivierte Scopes: read und write, und eine Gruppe, der Ihr Benutzer angehört, muss für die Nutzung der User API berechtigt sein), aber sobald dies konfiguriert ist, ist der Onboarding-Vorgang für Nicht-Administratoren deutlich einfacher.
Von Administratoren bereitgestellte, benutzerspezifische API-Schlüssel bleiben als Fallback für Websites verfügbar, auf denen die Autorisierung über die User API nicht möglich ist.