← Back to docs

RSS Watch

Language: SV | EN | SV

RSS Watch

RSS Watch ger feedvisning, kategorigruppering och valfria AI-sammanfattningar.

Publik feed-sida

  • URL: /feed
  • Bläddra feeds grupperade per kategori
  • Standardvärdet för Feeds per page är nu konfigurerbart från /feed-admin (query per_page kan fortfarande överstyra per anrop)
  • Öppna feed-källa eller kategori-RSS
  • Se första och senaste discovery-tid
  • Se cachade AI-sammanfattningar per kategori
  • Feeds som markeras som dolda visas inte i /feed utan får i stället en hash-baserad direkt-URL, till exempel /feed/key/{public-hash} och /api/rss/feed/{public-hash}
  • Analytics-feeds finns nu som dedikerade selectors under /api/rss/feed/{selector}:
    • analytics-daily (alias daily-analytics)
    • analytics-weekly (alias weekly-analytics)
    • analytics-monthly (alias monthly-analytics)
    • analytics-yearly (alias yearly-analytics)
    • analytics-bulk (alias bulk-analytics, kombinerar daily/weekly/monthly/yearly)
  • Analytics-feedposter länkar nu tillbaka till relevant kategori/site där det går (/api/rss/feed/{category-slug} för kategori-analytics och /feed/{site-urlid} för site-analytics)
  • /feed har nu ett mini-kort Ask about all open feeds där besökare kan ställa fria frågor mot den öppna RSS-datan

Feed-frågor och historik

  • Skicka fråga: POST /feed/user-questions
  • Historiksida: GET /feed/user-questions
  • Gäster måste passera Cloudflare Turnstile innan submit och begränsas av konfigurerbara dygns-/veckokvoter
  • Inloggade användare har också kvoter (högre standardvärden), med separat konfigurerbar dygns-/veckogräns
  • Admin-användare är obegränsade och slipper Turnstile för den här funktionen
  • Gästintag har även ett konfigurerbart samtidighetsskydd (distinkta aktiva gäst-IP i kort processfönster)
  • Varje fråga sparar tidpunkt, aktör (user_id eller gäst), IP, user-agent, status, svar/fel och svarsmetadata för audit/historik
  • Frågeformuläret på /feed är nu AJAX-först och visar svar/fel inline; vanlig form post/redirect finns kvar som fallback utan JavaScript
  • Feed-Q&A har nu admin-konfigurerbart scope: tidsfönster (daily/weekly/monthly/yearly), tillåtna kategorier, tillåtna sajter, context-cap för antal poster, max antal meningar i svaret och antal minihistorikrader på /feed
  • /feed visar nu också en liten inline-historik över de senaste färdiga frågorna direkt i frågekortet
  • /feed/user-questions har nu paginering med valbart antal rader per sida för att hantera spammig historik bättre
  • Admin kan nu ta bort frågerader direkt från /feed/user-questions via AJAX (vanlig redirect-fallback fungerar fortsatt utan JavaScript)
  • Admininställningarna på /feed/user-questions och i /feed-admin innehåller nu även val av svarsmodell och tonalitet för OpenAI-svar
  • Adminvyn för historik har nu filter för status, user_id (eller guest), ip och deleted-scope (active/deleted/all)
  • Adminmoderering stöder nu både single-row och bulk-delete med explicit delete-mode:
    • hard delete tar bort raden permanent
    • soft delete sparar raden med raderingsmetadata (deleted_at, deleted_by_user_id, deleted_reason)
  • Soft-deletade rader kan nu återställas via adminåtgärd (POST /feed/user-questions/{question}/restore) för undo-flöde.

Entry-baserade kontroller för brusiga inlägg (/feed/entry/{contentId})

  • För admin finns nu per-inläggskontroller på entry-sidan för länkar som cyklar/brusar:
    • Markera/avmarkera cautious (auto-purge av brusiga dubbletter vid framtida import)
    • Ignore this post at import (feed-scope eller globalt), så inkommande scraper-rapporter för länken släpps
    • Purge noisy duplicates (behåller senaste representant per distinkt meaningful hash)
    • Purge all except one latest row (hård reset)

Analytics-kort på /feed

  • Vecko-/månads-/årskort visas per kategori endast när cachad analytics faktiskt finns
  • Korten är färgkodade per period
  • Klicka Read more för att expandera längre analyser
  • Markdown renderas till HTML för bättre läsbarhet

Redaktörssida

  • URL: /rss
  • Kräver permission:rss
  • Hantera feed-URL:er och metadata
  • Se cachad kategori-analytics
  • Site Type stöder nu explicit xpath och json utöver rss och wp
  • När sitetype=xpath krävs elements-regler i JSON och valideras server-side innan sparning
  • elements accepterar båda stödda regel-formaten:
    • objektformat (begin + table) för JSON-traversering
    • äldre pipeline-array-format för HTML/XPath-extraktion
  • I listvyn på /rss visas elements-redigering nu bara för xpath-rader och ligger i en kollapsbar panel med AJAX-sparning på blur
  • Ny visuell hjälpsida: /rss/xpath-lab låter redaktörer klistra in HTML-snippets, inspektera DOM-översikt, testa XPath-uttryck och granska en SimpleXML-liknande XML-preview innan regler sparas

Feed admin

  • URL: /feed-admin
  • Generera daglig, veckovis, månadsvis eller årsvis kategori-analys
  • Generera daglig, veckovis, månadsvis eller årsvis site-analys per feed/nyhetskälla
  • Använd kalenderfältet Anchor date för att generera historiska perioder (t.ex. förra veckan/månaden/året/dagen om cron missat)
  • Kategori- och site-kort har nu även valfria segmentspecifika Anchor date-fält; prioritet är segment anchor -> global anchor -> dagens datum
  • Nuvarande periodlogik är rullande fönster från valt ankardatum (weekly = senaste 7 dagar, monthly = senaste 30 dagar), medan yearly fortsatt är year-to-date från ankarårets start
  • Välj modell per körning
  • Fyll i valfri watch_for-text före generering
  • Befintliga cachade varianter har nu åtgärder per variant för Retranslate och Regenerate (replace) (både för kategori och site)
  • När Regenerate (replace) används skrivs vald variant/period över i stället för att skapa en extra dubblettvariant
  • Site-generering har nu ett separat valfritt titelfält per site (skilt från den globala titeln)
  • Feed-admin innehåller nu även en separat ruta för Feed Q&A scope and brevity settings där admin kan begränsa vilka kategorier/sajter som frågefunktionen på /feed får använda

Scheduler-notering

  • Analytics-schemat är nu admin-konfigurerbart i /feed-admin med separata aktivera/inaktivera- och tidsfält per period för daily, weekly, monthly och yearly.
  • Cron bör köra scheduler-kontrollen varje minut (antingen via Laravel schedule:run eller direkt via php artisan rss:run-scheduled-analytics).
  • Schedulern kör varje period en gång per relevant cykel efter konfigurerad servertid; missade körningar fångas upp så snart som möjligt.
  • Om en period saknar tidigare scheduler-timestamp betraktas den som aldrig körd och körs direkt en gång.
  • Automatiska scheduler-körningar använder en dedikerad auto-varianttitel ([AUTO] Scheduled analytics) och kör alltid med overwrite-current-semantik så att automatiska varianter uppdateras på plats.
  • Manuella CLI/API-körningar finns fortfarande kvar vid behov.
  • Manuella CLI-körningar hoppar nu över oförändrade bucket+variant-signaturer som standard för att undvika onödiga upprepade AI-anrop.
  • Använd php artisan rss:generate-analytics --period=yearly --force (eller --overwrite-current) för att uttryckligen köra om och skriva över den aktuella bucketraden även när underliggande snapshot är oförändrat.

RSS Maintenance Admin

  • URL: /rss-maintenance-admin
  • Listar misstänkta länkar med ovanligt många versioner på kort tid
  • Jämför rå hash-churn mot meaningful hash-churn för att hitta brusiga pseudo-uppdateringar
  • Stöd för dry-run och live-purge per länk, där senaste representant per meningsfull förändring behålls

Scraper-API (/api/rss/urls)

  • Endpoint: GET /api/rss/urls
  • Obligatorisk query-parameter: scraper=1 (annars avvisas anropet)
  • always=0 returnerar ett begränsat due-urval för anropande scraper-agent (agent_id, fallback agent_name):
    • Due-kontroll använder varje URL:s readinterval
    • Due-kontroll körs mot agentens egen seen-state (senast sedd + nästa tillåtna tid)
    • En scrapers senaste claims blockerar inte längre andra scraper-agenter
  • always=1 hoppar över intervallfiltrering och returnerar alla skrapbara URL:er (deleted=0, noscrape=0)
  • Rekommendation: skicka alltid ett stabilt agent_id (t.ex. hostname eller worker-id)

Prenumerationer

Inloggade användare kan prenumerera per:

  • Feed
  • Kategori

Tillgängliga kanaler beror på kontoinställningar.

/feed/subscriptions är kanalinställningarna nu AJAX-first med autosave:

  • Av/på på kanal-checkboxar sparas direkt via AJAX
  • Text-/webhookfält sparas på blur (när fältet lämnas)
  • Pause/Resume och Remove uppdateras också inline via AJAX
  • Det är nu tillåtet att avchecka alla kanaler explicit (alla leveranskanaler avstängda)

Om JavaScript saknas finns fortfarande fallback till vanlig server-post/redirect.

Discord-setup på /feed/subscriptions:

  • Du kan antingen klistra in Discord-webhook manuellt eller använda Connect Discord app (get webhook).
  • OAuth-flödet använder webhook.incoming och går tillbaka via callback (/oauth/discord/callback).
  • Callback-URL visas på sidan så admin vet vilken URL som ska registreras i Discord Developer Portal.
  • Efter callback sparas senaste Discord-webhook-payload i session och kan återanvändas per prenumeration med ett klick.

Leveransbeteende:

  • Nya RSS-importer försöker nu göra en omedelbar prenumerationsnotifiering direkt efter att /api/rss/update har konverterat inbound-rader
  • Prenumerationsutskick innehåller nu direktlänk till Tools-entry först (/feed/entry/{contentId}), med originallänken som sekundär fallback
  • Det schemalagda kommandot rss:notify-subscribers körs fortfarande var femtonde minut som fallback/återförsök om en omedelbar leverans missas eller en kanal tillfälligt fallerar