[Notizzettel, wandert in eigenes Repo] RSS-Pipeline und Auth-/Fetch-Dienst für Paywall-Artikel #87

Open
opened 2026-09-10 19:42:05 +00:00 by torben · 1 comment
Owner

Kein Stack-Thema. Notizzettel für Infrastruktur außerhalb von chemenu. Bleibt hier auf Wunsch des Betreibers offen, bis ein eigenes Repo existiert; dann wird dieser Body dorthin übernommen und das Issue geschlossen. Gebaut wird hier nichts. Bewusst ohne area/-Label - keines passt.

Der Tracker ist öffentlich: keine Hostnamen, Zugangsdaten oder sonstigen privaten Infrastrukturdaten hier eintragen.

Ursprünglicher Stub (2026-09-10) wörtlich im ersten Kommentar. Überarbeitet 2026-10-02.

Ziel

Zwei Wünsche, ein gemeinsamer Kern:

  1. Lesen unterwegs, Volltext später: Artikel im RSS-Reader (FieryFeeds auf iOS, Backend Nextcloud News) mit einem Stern markieren; der Volltext landet ohne Desktop-Handarbeit im Notiz-/Wissensspeicher. Bisher: Obsidian Web Clipper am Desktop, der eine laufende Obsidian-Instanz braucht.
  2. Paywall-Artikel ins Wiki: wikitool raw fetch (chemenu #120) lädt nur ohne Login. Paywall-Inhalt (Beispiel heise+) braucht eine eingeloggte Session.

Gemeinsamer Kern: ein Auth-/Fetch-Dienst, der Sessions hält und eine einzige Frage beantwortet: URL rein, HTML raus (eingeloggt, wo nötig). Beide Wünsche nutzen ihn.

Architektur (Stand der Überlegung)

FieryFeeds --Stern--> Nextcloud News
                          |
                     Poll-Job (Cron)  --URL-->  Auth-/Fetch-Dienst  <--URL--  wikitool raw fetch
                          |                      (Sessions, Adapter)           (via #169)
                          v                              |
                 Ziel (Vault / Instanz)  <----HTML-------+

Auth-/Fetch-Dienst

  • Schnittstelle: "URL rein, HTML-Bytes raus". Für wikitool als Kommandozeilenbefehl <befehl> <url> -> HTML auf stdout, exit 0; Fehler -> exit ≠ 0 + Meldung auf stderr. Verbindlich ist das Protokoll in chemenu #169, nicht dieser Absatz; ändert es sich, wird es dort geändert. Der Befehl kann ein dünner Client sein, der einen Dienst im Netz anspricht.
  • Adapter pro Domain (aus dem ursprünglichen Entwurf): matches(url), needs_auth(), load_session(), login(), fetch(). extract() muss der Dienst nicht können, wenn das Ziel eine chemenu-Instanz ist: wikitool leitet den Text selbst ab (#120); der Dienst liefert nur HTML. Für das Vault-Ziel ohne wikitool bleibt extract() nötig - Option: im Dienst dieselbe Ableitung wie #120 verwenden oder Trafilatura/Readability.
  • Login technisch: Vermutlich ist ein Headless-Browser nötig (Playwright mit persistentem Storage-State), nicht nur Requests+Formular-POST - Verlags-Logins haben oft Bot-Schutz/Captcha und JS-gerenderte Inhalte. Ungeprüft, ebenso wie der konkrete heise+-Login-Ablauf (Formularfelder, 2FA, SSO).
  • Nutzungsbedingungen: Ob heise+ (und jede weitere Site) automatisierten Abruf durch den Abonnenten erlaubt, ist nicht geprüft. Vor dem ersten Adapter nachlesen.
  • Wartung: Jeder Login-Adapter bricht, wenn die Site ihren Login ändert. Ein Adapter pro Site, Ausfall muss gemeldet werden (siehe Benachrichtigung).
  • Zugangsdaten: verschlüsselt at-rest (age/GPG oder Secret-Store der Laufzeitumgebung) - nicht entschieden. Nie im chemenu-Arbeitsbaum.

RSS-Pipeline (aus dem ursprünglichen Entwurf)

  1. Trigger: Stern in FieryFeeds (normale App-Funktion; FieryFeeds' Siri-Shortcuts-Support wurde vom Entwickler weitgehend entfernt, daher kein Shortcuts-Trigger).
  2. Poll-Job (Cron, etwa alle 10-15 Min): GET /items/updated?lastModified=<ts>&type=2 der Nextcloud-News-API liefert seit dem letzten Lauf geänderte Starred-Items.
  3. Je Artikel: Auth-/Fetch-Dienst aufrufen.
  4. Ergebnis ans Ziel liefern (siehe unten).
  5. Erfolg: PUT /items/unstar/multiple entsternt als Fertig-Signal. Fehler: Stern bleibt, Benachrichtigung (ntfy/Pushcut o.ä.).

Verworfen: Pushcut Automation Server als Trigger (zugunsten Poll); Obsidian Local REST API und Clipper-URI als Ziel-Schnittstelle (beide brauchen eine laufende Obsidian-Instanz - genau der ursprüngliche Blocker).

Ziel: wohin der Artikel geht

Ziel Weg Bemerkung
Obsidian-Vault (ursprünglich) Git-Commit ins Vault-Repo, Note mit Frontmatter (Titel, URL, Datum, Quelle) Auslösung offen: Runner mit Deploy-Key oder Push vom Server
chemenu-Instanz, lokal Pipeline legt HTML in incoming/ ab; Ingest dann mit wikitool raw fetch --html incoming/<datei>.html --url <url> (#120) incoming/ ist lokal und gitignored - nur machbar, wenn die Pipeline auf derselben Maschine wie die Instanz läuft
chemenu-Instanz, entfernt MCP-Tool submit der Instanz -> mcp-upload/, Mensch gibt per wikitool upload accept frei (Upload Review Gate) Bestehender Weg für entfernte Aufrufer, siehe raw/CONTRACT.md § mcp-upload; braucht einen laufenden MCP-Server mit .wikitool-upload.json. Ungeprüft, ob submit zwei Dateien (HTML) sauber transportiert
chemenu-Instanz, Ingest auf Abruf Kein Push: wikitool raw fetch <url> nutzt den Dienst über #169, wenn der Nutzer eine URL ingesten will Kein Poll nötig; deckt Wunsch 2 ab, nicht Wunsch 1

Nicht entschieden, ob Wunsch 1 überhaupt in chemenu landen soll oder im Vault.

Abgrenzung zu chemenu (verbindlich in den jeweiligen Issues)

  • #120 raw fetch <url> und raw fetch --html <datei> --url <url>: Abruf ohne Login, Ableitung HTML -> Text, Bundle HTML + .md in incoming/. Keine Zugangsdaten, keine Login-Adapter, kein Headless-Browser im Tool.
  • #169 .wikitool-fetch.json: optionaler externer Abrufbefehl pro Host, die Andockstelle für den Dienst hier. Wartet (prio/waiting) unter anderem darauf, dass dieser Dienst existiert.
  • Alles andere hier - Poll, Dienst, Adapter, Zugangsdaten, Benachrichtigung, Deployment - gehört nicht in chemenu.

Offene Fragen

  • Wo laufen Poll-Job und Dienst (Homelab-Container, bestehende Infrastruktur)?
  • heise+-Login: Ablauf, 2FA, Bot-Schutz - reicht Requests oder braucht es Playwright?
  • Nutzungsbedingungen der Paywall-Sites zu automatisiertem Abruf.
  • Speicherort und Verschlüsselung der Zugangsdaten/Sessions.
  • Benachrichtigungskanal bei Fehlern (ntfy, Pushcut, Mail).
  • Ziel für Wunsch 1: Vault, chemenu-Instanz oder beides (Tabelle oben)?
  • Wie der Dienst für wikitool erreichbar ist: lokaler Befehl, oder dünner Client gegen einen Netzdienst (dann: Authentisierung zwischen Client und Dienst).

Auslöser (prio/waiting)

Ein eigenes Repo für diese Infrastruktur wird angelegt. Dann: Body dorthin übernehmen, hier mit Verweis schließen. Bis dahin wird hier gesammelt.

Quellen aus der Recherche (2026-09-09/10)

> **Kein Stack-Thema.** Notizzettel für Infrastruktur außerhalb von chemenu. Bleibt hier auf Wunsch des Betreibers offen, bis ein eigenes Repo existiert; dann wird dieser Body dorthin übernommen und das Issue geschlossen. Gebaut wird hier nichts. Bewusst ohne `area/`-Label - keines passt. > > Der Tracker ist öffentlich: keine Hostnamen, Zugangsdaten oder sonstigen privaten Infrastrukturdaten hier eintragen. > > Ursprünglicher Stub (2026-09-10) wörtlich im ersten Kommentar. Überarbeitet 2026-10-02. ## Ziel Zwei Wünsche, ein gemeinsamer Kern: 1. **Lesen unterwegs, Volltext später:** Artikel im RSS-Reader (FieryFeeds auf iOS, Backend Nextcloud News) mit einem Stern markieren; der Volltext landet ohne Desktop-Handarbeit im Notiz-/Wissensspeicher. Bisher: Obsidian Web Clipper am Desktop, der eine laufende Obsidian-Instanz braucht. 2. **Paywall-Artikel ins Wiki:** `wikitool raw fetch` (chemenu #120) lädt nur ohne Login. Paywall-Inhalt (Beispiel heise+) braucht eine eingeloggte Session. Gemeinsamer Kern: ein **Auth-/Fetch-Dienst**, der Sessions hält und eine einzige Frage beantwortet: *URL rein, HTML raus (eingeloggt, wo nötig)*. Beide Wünsche nutzen ihn. ## Architektur (Stand der Überlegung) ``` FieryFeeds --Stern--> Nextcloud News | Poll-Job (Cron) --URL--> Auth-/Fetch-Dienst <--URL-- wikitool raw fetch | (Sessions, Adapter) (via #169) v | Ziel (Vault / Instanz) <----HTML-------+ ``` ### Auth-/Fetch-Dienst - **Schnittstelle:** "URL rein, HTML-Bytes raus". Für `wikitool` als Kommandozeilenbefehl `<befehl> <url>` -> HTML auf stdout, exit 0; Fehler -> exit ≠ 0 + Meldung auf stderr. **Verbindlich ist das Protokoll in chemenu #169**, nicht dieser Absatz; ändert es sich, wird es dort geändert. Der Befehl kann ein dünner Client sein, der einen Dienst im Netz anspricht. - **Adapter pro Domain** (aus dem ursprünglichen Entwurf): `matches(url)`, `needs_auth()`, `load_session()`, `login()`, `fetch()`. `extract()` muss der Dienst **nicht** können, wenn das Ziel eine chemenu-Instanz ist: `wikitool` leitet den Text selbst ab (#120); der Dienst liefert nur HTML. Für das Vault-Ziel ohne `wikitool` bleibt `extract()` nötig - Option: im Dienst dieselbe Ableitung wie #120 verwenden oder Trafilatura/Readability. - **Login technisch:** Vermutlich ist ein Headless-Browser nötig (Playwright mit persistentem Storage-State), nicht nur Requests+Formular-POST - Verlags-Logins haben oft Bot-Schutz/Captcha und JS-gerenderte Inhalte. **Ungeprüft**, ebenso wie der konkrete heise+-Login-Ablauf (Formularfelder, 2FA, SSO). - **Nutzungsbedingungen:** Ob heise+ (und jede weitere Site) automatisierten Abruf durch den Abonnenten erlaubt, ist **nicht geprüft**. Vor dem ersten Adapter nachlesen. - **Wartung:** Jeder Login-Adapter bricht, wenn die Site ihren Login ändert. Ein Adapter pro Site, Ausfall muss gemeldet werden (siehe Benachrichtigung). - **Zugangsdaten:** verschlüsselt at-rest (age/GPG oder Secret-Store der Laufzeitumgebung) - nicht entschieden. Nie im chemenu-Arbeitsbaum. ### RSS-Pipeline (aus dem ursprünglichen Entwurf) 1. Trigger: Stern in FieryFeeds (normale App-Funktion; FieryFeeds' Siri-Shortcuts-Support wurde vom Entwickler weitgehend entfernt, daher kein Shortcuts-Trigger). 2. Poll-Job (Cron, etwa alle 10-15 Min): `GET /items/updated?lastModified=<ts>&type=2` der Nextcloud-News-API liefert seit dem letzten Lauf geänderte Starred-Items. 3. Je Artikel: Auth-/Fetch-Dienst aufrufen. 4. Ergebnis ans Ziel liefern (siehe unten). 5. Erfolg: `PUT /items/unstar/multiple` entsternt als Fertig-Signal. Fehler: Stern bleibt, Benachrichtigung (ntfy/Pushcut o.ä.). Verworfen: Pushcut Automation Server als Trigger (zugunsten Poll); Obsidian Local REST API und Clipper-URI als Ziel-Schnittstelle (beide brauchen eine laufende Obsidian-Instanz - genau der ursprüngliche Blocker). ### Ziel: wohin der Artikel geht | Ziel | Weg | Bemerkung | |---|---|---| | Obsidian-Vault (ursprünglich) | Git-Commit ins Vault-Repo, Note mit Frontmatter (Titel, URL, Datum, Quelle) | Auslösung offen: Runner mit Deploy-Key oder Push vom Server | | chemenu-Instanz, lokal | Pipeline legt HTML in `incoming/` ab; Ingest dann mit `wikitool raw fetch --html incoming/<datei>.html --url <url>` (#120) | `incoming/` ist lokal und gitignored - nur machbar, wenn die Pipeline auf derselben Maschine wie die Instanz läuft | | chemenu-Instanz, entfernt | MCP-Tool `submit` der Instanz -> `mcp-upload/`, Mensch gibt per `wikitool upload accept` frei (Upload Review Gate) | Bestehender Weg für entfernte Aufrufer, siehe `raw/CONTRACT.md` § mcp-upload; braucht einen laufenden MCP-Server mit `.wikitool-upload.json`. Ungeprüft, ob `submit` zwei Dateien (HTML) sauber transportiert | | chemenu-Instanz, Ingest auf Abruf | Kein Push: `wikitool raw fetch <url>` nutzt den Dienst über #169, wenn der Nutzer eine URL ingesten will | Kein Poll nötig; deckt Wunsch 2 ab, nicht Wunsch 1 | Nicht entschieden, ob Wunsch 1 überhaupt in chemenu landen soll oder im Vault. ## Abgrenzung zu chemenu (verbindlich in den jeweiligen Issues) - **#120** `raw fetch <url>` und `raw fetch --html <datei> --url <url>`: Abruf ohne Login, Ableitung HTML -> Text, Bundle HTML + `.md` in `incoming/`. Keine Zugangsdaten, keine Login-Adapter, kein Headless-Browser im Tool. - **#169** `.wikitool-fetch.json`: optionaler externer Abrufbefehl pro Host, die Andockstelle für den Dienst hier. Wartet (`prio/waiting`) unter anderem darauf, dass dieser Dienst existiert. - Alles andere hier - Poll, Dienst, Adapter, Zugangsdaten, Benachrichtigung, Deployment - gehört **nicht** in chemenu. ## Offene Fragen - Wo laufen Poll-Job und Dienst (Homelab-Container, bestehende Infrastruktur)? - heise+-Login: Ablauf, 2FA, Bot-Schutz - reicht Requests oder braucht es Playwright? - Nutzungsbedingungen der Paywall-Sites zu automatisiertem Abruf. - Speicherort und Verschlüsselung der Zugangsdaten/Sessions. - Benachrichtigungskanal bei Fehlern (ntfy, Pushcut, Mail). - Ziel für Wunsch 1: Vault, chemenu-Instanz oder beides (Tabelle oben)? - Wie der Dienst für `wikitool` erreichbar ist: lokaler Befehl, oder dünner Client gegen einen Netzdienst (dann: Authentisierung zwischen Client und Dienst). ## Auslöser (`prio/waiting`) Ein eigenes Repo für diese Infrastruktur wird angelegt. Dann: Body dorthin übernehmen, hier mit Verweis schließen. Bis dahin wird hier gesammelt. ## Quellen aus der Recherche (2026-09-09/10) - Nextcloud News External API v1-2 (`items/updated`, `items/star(unstar)/multiple`): https://github.com/nextcloud/news/blob/master/docs/api/api-v1-2.md - Nextcloud News Nutzer-Doku (Mark Read/Starred): https://nextcloud.github.io/news/user/ - FieryFeeds' reduzierter Shortcuts-/Siri-Support (Entwickler-Blog): https://voidstern.net/archives/3101 - Obsidian Web Clipper - Einführung (setzt laufende Obsidian-Instanz voraus): https://obsidian.md/help/web-clipper - Obsidian Web Clipper - Capture-Mechanik (Obsidian-URI): https://obsidian.md/help/web-clipper/capture - Obsidian Local REST API (setzt ebenfalls laufende Instanz voraus): https://coddingtonbear.github.io/obsidian-local-rest-api/ - Web-Scraping hinter Login mit Python/Requests+BeautifulSoup (Heise-Ratgeber, Session-Cookie-Ansatz): https://www.heise.de/ratgeber/Python-Websitedaten-nach-einem-Login-auslesen-4681895.html - n8n-Workflow-Beispiel "Send RSS feed data to webhook": https://n8n.io/workflows/159-send-rss-feed-data-to-webhook/ - Pushcut Automation Server (als Trigger verworfen): https://www.pushcut.io/support/automation-server
torben added the status/incoming label 2026-09-10 19:42:05 +00:00
Author
Owner

Changelog: Auf Wunsch des Betreibers (2026-10-02) bleibt dieses Issue offen, als Sammelstelle für alles zur Infrastruktur außerhalb des Stacks (RSS-Poll, Auth-/Fetch-Dienst), bis es in ein eigenes Repo wandert. Body neu gegliedert: ursprünglicher Entwurf erhalten, ergänzt um die Abgrenzung zum Stack (#120 raw fetch + --html, #169 Andockstelle .wikitool-fetch.json), die Idee eines zentralen Auth-Dienstes für beide Verbraucher, ungeprüfte Annahmen zum heise+-Login und eine Option, Artikel über MCP-submit in eine Instanz zu liefern. Titel angepasst. status/incoming entfernt; kind/decision, prio/waiting, size/L gesetzt, bewusst ohne area/ (kein Stack-Thema).

Der ursprüngliche Stub, wörtlich:

Herkunft: Aus einer Diskussion in der LLM-Wiki-Space-Session vom 2026-09-09/10, keine wikitool-Ausarbeitung.

Ausgangsproblem: Torben liest RSS über FieryFeeds (iOS) mit Nextcloud-News-Backend. Artikel, die den vollen Text erfordern (z. B. hinter Paywall wie Heise+), werden bisher manuell später am Desktop per Obsidian Web Clipper in den Vault übernommen — unbequem, weil das Lesen typischerweise abends im Bett passiert und der Clipper eine laufende Desktop-Instanz von Obsidian voraussetzt.

Skizzierter Ansatz:

  1. Trigger: Artikel in FieryFeeds als "Starred" markieren (normale App-Funktion, kein fragiles Shortcuts-Feature — FieryFeeds' Siri-Shortcuts-Support wurde vom Entwickler aus technischen Gründen größtenteils entfernt).
  2. Poll-Job (Cron, z. B. alle 10–15 Min) fragt die Nextcloud-News-API ab: GET /items/updated?lastModified=<ts>&type=2 liefert alle seit dem letzten Lauf geänderten Starred-Items.
  3. Für jeden neuen Artikel: Domain-Matching gegen eine Adapter-Registry (siehe unten), Volltext holen, zu Markdown extrahieren.
  4. Note mit Frontmatter (Titel, URL, Datum, Quelle) wird per Git-Commit direkt ins Vault-Repo geschrieben — bewusst nicht über Obsidian Local REST API oder eine Clipper-artige URI, weil beide eine laufende, erreichbare Obsidian-Instanz voraussetzen (das war der ursprüngliche Bequemlichkeits-Blocker).
  5. Erfolgreich verarbeitete Items werden per PUT /items/unstar/multiple (Nextcloud News API) entsternt als Fertig-Signal; bei Fehlern bleibt der Stern stehen und der Job meldet sich (z. B. ntfy/Pushcut-Notification).

Plugin-Infrastruktur für das Auth-/Paywall-Problem:

Adapter-Registry mit gemeinsamem Interface pro Domain (matches(url), needs_auth(), load_session(), login(), fetch(), extract()). Default-Adapter für unauthentifizierte Seiten (Readability/Trafilatura-artige Extraktion); domainspezifische Adapter (z. B. für heise.de) kapseln Login-Flow und Session-Handling (Cookie/Storage-State, verschlüsselt at-rest). Neue Paywall-Site = neue Adapter-Datei, Rest der Pipeline bleibt unverändert.

Offene Fragen:

  • Wo läuft der Poll-Job/die Adapter-Pipeline (Homelab-Container? bestehende Infrastruktur?).
  • Konkreter Login-Flow für Heise+ (Formularfelder, 2FA?) ungeklärt.
  • Speicherort/Verschlüsselung der Zugangsdaten (age/GPG?) nur als Idee, nicht entschieden.
  • Wie wird ein fehlgeschlagener Adapter dem Nutzer gemeldet — Kanal noch offen.
  • Wie wird der Git-Commit ins Vault-Repo ausgelöst (lokaler Runner mit SSH-Deploy-Key? Push von einem Server aus?) — ungeklärt.

Quellen aus der Recherche:

Hinweis zur Einordnung in diesen Tracker: Dies ist kein Chemenu-Stack-Thema im Sinne von instructions/dev/issue-tracking.md — es betrifft eine private RSS-zu-Obsidian-Automatisierung außerhalb dieses Repos. Keines der bestehenden area/*-Labels passt inhaltlich, daher bewusst ohne area/-Label angelegt. Als status/incoming ist das laut Konvention unproblematisch (die vier Pflichtlabels sind bei diesem Flag noch nicht fällig) — bei der Triage muss aber geklärt werden, ob dieser Tracker überhaupt der richtige Ort für das Thema ist.

**Changelog:** Auf Wunsch des Betreibers (2026-10-02) bleibt dieses Issue offen, als Sammelstelle für alles zur Infrastruktur außerhalb des Stacks (RSS-Poll, Auth-/Fetch-Dienst), bis es in ein eigenes Repo wandert. Body neu gegliedert: ursprünglicher Entwurf erhalten, ergänzt um die Abgrenzung zum Stack (#120 `raw fetch` + `--html`, #169 Andockstelle `.wikitool-fetch.json`), die Idee eines zentralen Auth-Dienstes für beide Verbraucher, ungeprüfte Annahmen zum heise+-Login und eine Option, Artikel über MCP-`submit` in eine Instanz zu liefern. Titel angepasst. `status/incoming` entfernt; `kind/decision`, `prio/waiting`, `size/L` gesetzt, bewusst ohne `area/` (kein Stack-Thema). Der ursprüngliche Stub, wörtlich: > **Herkunft:** Aus einer Diskussion in der LLM-Wiki-Space-Session vom 2026-09-09/10, keine wikitool-Ausarbeitung. > > **Ausgangsproblem:** Torben liest RSS über FieryFeeds (iOS) mit Nextcloud-News-Backend. Artikel, die den vollen Text erfordern (z. B. hinter Paywall wie Heise+), werden bisher manuell später am Desktop per Obsidian Web Clipper in den Vault übernommen — unbequem, weil das Lesen typischerweise abends im Bett passiert und der Clipper eine laufende Desktop-Instanz von Obsidian voraussetzt. > > **Skizzierter Ansatz:** > > 1. Trigger: Artikel in FieryFeeds als "Starred" markieren (normale App-Funktion, kein fragiles Shortcuts-Feature — FieryFeeds' Siri-Shortcuts-Support wurde vom Entwickler aus technischen Gründen größtenteils entfernt). > 2. Poll-Job (Cron, z. B. alle 10–15 Min) fragt die Nextcloud-News-API ab: `GET /items/updated?lastModified=<ts>&type=2` liefert alle seit dem letzten Lauf geänderten Starred-Items. > 3. Für jeden neuen Artikel: Domain-Matching gegen eine Adapter-Registry (siehe unten), Volltext holen, zu Markdown extrahieren. > 4. Note mit Frontmatter (Titel, URL, Datum, Quelle) wird per Git-Commit direkt ins Vault-Repo geschrieben — bewusst **nicht** über Obsidian Local REST API oder eine Clipper-artige URI, weil beide eine laufende, erreichbare Obsidian-Instanz voraussetzen (das war der ursprüngliche Bequemlichkeits-Blocker). > 5. Erfolgreich verarbeitete Items werden per `PUT /items/unstar/multiple` (Nextcloud News API) entsternt als Fertig-Signal; bei Fehlern bleibt der Stern stehen und der Job meldet sich (z. B. ntfy/Pushcut-Notification). > > **Plugin-Infrastruktur für das Auth-/Paywall-Problem:** > > Adapter-Registry mit gemeinsamem Interface pro Domain (`matches(url)`, `needs_auth()`, `load_session()`, `login()`, `fetch()`, `extract()`). Default-Adapter für unauthentifizierte Seiten (Readability/Trafilatura-artige Extraktion); domainspezifische Adapter (z. B. für heise.de) kapseln Login-Flow und Session-Handling (Cookie/Storage-State, verschlüsselt at-rest). Neue Paywall-Site = neue Adapter-Datei, Rest der Pipeline bleibt unverändert. > > **Offene Fragen:** > > - Wo läuft der Poll-Job/die Adapter-Pipeline (Homelab-Container? bestehende Infrastruktur?). > - Konkreter Login-Flow für Heise+ (Formularfelder, 2FA?) ungeklärt. > - Speicherort/Verschlüsselung der Zugangsdaten (age/GPG?) nur als Idee, nicht entschieden. > - Wie wird ein fehlgeschlagener Adapter dem Nutzer gemeldet — Kanal noch offen. > - Wie wird der Git-Commit ins Vault-Repo ausgelöst (lokaler Runner mit SSH-Deploy-Key? Push von einem Server aus?) — ungeklärt. > > **Quellen aus der Recherche:** > > - Nextcloud News External API v1-2 (Endpunkte `items/updated`, `items/star(unstar)/multiple`): https://github.com/nextcloud/news/blob/master/docs/api/api-v1-2.md > - Nextcloud News Nutzer-Doku (Mark Read/Starred): https://nextcloud.github.io/news/user/ > - FieryFeeds' reduzierter Shortcuts-/Siri-Support (Entwickler-Blog): https://voidstern.net/archives/3101 > - Obsidian Web Clipper – offizielle Einführung (setzt laufende Obsidian-Instanz voraus): https://obsidian.md/help/web-clipper > - Obsidian Web Clipper – Capture-Mechanik (Obsidian-URI): https://obsidian.md/help/web-clipper/capture > - Obsidian Local REST API (Plugin, Alternative zur URI, setzt ebenfalls laufende Instanz voraus): https://coddingtonbear.github.io/obsidian-local-rest-api/ > - Web-Scraping hinter Login mit Python/Requests+BeautifulSoup (Heise-Ratgeber, Beispiel für Session-Cookie-Ansatz): https://www.heise.de/ratgeber/Python-Websitedaten-nach-einem-Login-auslesen-4681895.html > - n8n-Workflow-Beispiel "Send RSS feed data to webhook": https://n8n.io/workflows/159-send-rss-feed-data-to-webhook/ > - Pushcut Automation Server (Alternative Trigger-Mechanik, in der Diskussion zugunsten des Poll-Ansatzes verworfen): https://www.pushcut.io/support/automation-server > > **Hinweis zur Einordnung in diesen Tracker:** Dies ist kein Chemenu-Stack-Thema im Sinne von `instructions/dev/issue-tracking.md` — es betrifft eine private RSS-zu-Obsidian-Automatisierung außerhalb dieses Repos. Keines der bestehenden `area/*`-Labels passt inhaltlich, daher bewusst ohne `area/`-Label angelegt. Als `status/incoming` ist das laut Konvention unproblematisch (die vier Pflichtlabels sind bei diesem Flag noch nicht fällig) — bei der Triage muss aber geklärt werden, ob dieser Tracker überhaupt der richtige Ort für das Thema ist.
torben changed title from RSS-zu-Obsidian-Pipeline: Star-Flag-Poll über Nextcloud-News-API mit Adapter-Plugin für Paywall-Auth (Entwurf) to [Notizzettel, wandert in eigenes Repo] RSS-Pipeline und Auth-/Fetch-Dienst für Paywall-Artikel 2026-10-02 20:03:41 +00:00
torben added prio/waitingsize/Lkind/decision and removed status/incoming labels 2026-10-02 20:03:41 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#87