synops/tools/README.md
vegard 5dead5dac9 synops-clip: CLI for web article extraction (oppgave 25.1)
Nytt verktøy som henter og parser webartikler til ren tekst + metadata.
Bruker Mozilla Readability (via Node.js) for artikkelekstraksjon, med
Playwright som fallback for JS-rendrede sider.

Arkitektur:
- Rust CLI (clap, reqwest) håndterer HTTP-henting, paywall-deteksjon, JSON-output
- Node.js-hjelpeskript (readability.mjs) bruker @mozilla/readability + jsdom
- Playwright-script (playwright.mjs) for headless browser-fallback
- Støtter --payload-json for maskinrommet/jobbkø-integrasjon

Paywall-deteksjon basert på:
- Kort innhold (<200 tegn)
- Norske/engelske paywall-fraser i innholdet
- CSS-klasser/HTML-attributter (piano, schibsted, amedia, etc.)
- Schema.org isAccessibleForFree meta-tagg

Output: JSON med title, author, date, content, url, paywall, excerpt, source
2026-03-18 18:24:22 +00:00

51 lines
2.6 KiB
Markdown

# Synops CLI-verktøy
CLI-verktøy for Claude sin interaksjon med systemet. Bruker PG direkte
eller maskinrommet-API. Ligger i PATH via symlink eller direkte kall.
## Verktøy
| Verktøy | Beskrivelse | Status |
|---------|-------------|--------|
| `synops-transcribe` | Whisper-transkribering av lydfil fra CAS | Ferdig |
| `synops-audio` | FFmpeg lydprosessering med EDL (cut, normalize, EQ, m.m.) | Ferdig |
| `synops-render` | Tera HTML-rendering til CAS (artikler, forsider) | Ferdig |
| `synops-rss` | RSS/Atom-feed generering for samlinger | Ferdig |
| `synops-tts` | Tekst-til-tale via ElevenLabs, lagrer lyd i CAS | Ferdig |
| `synops-summarize` | AI-oppsummering av kommunikasjonsnode via LiteLLM | Ferdig |
| `synops-suggest-edges` | AI-foreslåtte edges (topics/mentions) for en node via LiteLLM | Ferdig |
| `synops-respond` | Claude chat-svar i kommunikasjonsnoder | Ferdig |
| `synops-prune` | Opprydding av gamle CAS-filer (TTL + disk-nødventil) | Ferdig |
| `synops-context` | Hent kontekst for en samtale (deltakere, historikk, spec, relaterte noder) | Ferdig |
| `synops-search` | Fulltekstsøk i noder (title + content, norsk tsvector) | Ferdig |
| `synops-tasks` | Parse tasks.md og vis oppgavestatus (filtrering på fase/status) | Ferdig |
| `synops-feature-status` | Sjekk feature-status: spec, oppgaver, commits, feedback | Ferdig |
| `synops-node` | Hent/vis en node med edges (UUID, --depth, --format json/md) | Ferdig |
| `synops-ai` | AI-assistert generering av orkestreringsscript fra fritekst | Ferdig |
| `synops-clip` | Hent og parse webartikler (Readability + Playwright-fallback, paywall-deteksjon) | Ferdig |
## Delt bibliotek
| Crate | Beskrivelse |
|-------|-------------|
| `synops-common` | Delt lib: PG-tilkobling (`db`), CAS-helpers (`cas`), logging (`logging`), node/edge-typer (`types`) |
Alle CLI-verktøy (unntatt `synops-tasks`) bruker `synops-common` som dependency.
Se `synops-common/src/lib.rs` for API-oversikt.
## Konvensjoner
- Navnekonvensjon: `synops-<verb>` (f.eks. `synops-context`)
- Shell-scripts eller Rust binaries
- Ett verktøy per oppgave — hold det enkelt
- Output: stdout, strukturert tekst (markdown eller JSON)
- DB-tilkobling: `$DATABASE_URL` eller fra `/tmp/maskinrommet.env`
## Planlagte verktøy
Ref: `docs/infra/agent_api.md`
- ~~`synops-context`~~ — implementert (se tabell over)
- ~~`synops-search`~~ — implementert (se tabell over)
- ~~`synops-tasks [--phase N] [--status S]`~~ — implementert (se tabell over)
- ~~`synops-feature-status <key>`~~ — implementert (se tabell over)
- ~~`synops-respond`~~ — implementert (se tabell over)
- `synops-update-spec <node_id>` — oppdater spec-node (stdin)