← Back to docs

RSS Feed Analytics API

Language: SV | EN | SV

RSS Feed Analytics API

Använd funktionen för att skapa AI-sammanfattningar per kategori och spara flera namngivna analysvarianter per period.

Målgrupp

  • Redaktörer i /feed-admin
  • Team som vill ha olika analysstilar för samma kategori och tidsperiod
  • Autentiserade användare som triggar generering via webbgränssnittet

Åtkomst

  • Webbgränssnitt: /feed-admin
  • Kräver inloggning + permission:rss
  • Replace-in-place syns nu direkt på cachade varianter för daily, weekly, monthly och yearly; efter generering uppdateras sidan så den överskrivna variantlistan visas exakt som den lagrats

Trigga cron / manuella körningar

Du kan köra analytics på tre sätt:

  1. Scheduler (styrt av cron)
  • Laravel scheduler läser jobb från app/Console/Kernel.php.
  • Nuvarande standardschema för analytics är rss:generate-analytics --period=daily klockan 20:00.
  • Typisk cronrad på server:
* * * * * cd /path/to/tools && php artisan schedule:run >> /dev/null 2>&1

Om din miljö avsiktligt kör schedule:run bara en gång per dag ska den körningen ligga på 20:00 för att matcha analytics-schemat. Weekly/monthly/yearly kan fortfarande köras manuellt vid behov.

  1. Manuell CLI-körning
php artisan rss:generate-analytics --period=daily
php artisan rss:generate-analytics --period=weekly
php artisan rss:generate-analytics --period=monthly
php artisan rss:generate-analytics --period=yearly
php artisan rss:generate-analytics --period=all
  1. API-trigger (extern cron/webhook)
  • Endpoint: POST /api/rss/analytics/run
  • Auth: Authorization: Bearer <ANALYTICS_CRON_SECRET>
curl -X POST "https://tools.tornevall.com/api/rss/analytics/run" \
  -H "Authorization: Bearer YOUR_ANALYTICS_CRON_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"period":"daily","categories":"all","sites":false}'

Godkända period-värden för CLI/API: daily, weekly, monthly, yearly, all.

Generera analys

POST /feed-admin/analytics/generate

Fält

  • category (obligatorisk)
  • period (obligatorisk): daily, weekly, monthly, yearly
  • model (valfri): t.ex. gpt-4o-mini, gpt-4o, gpt-4-turbo
  • language (valfri): t.ex. sv, en, de, fr, es
  • variant_title (valfri): sparad titel för analysvarianten
  • tone (valfri): t.ex. neutral, critical, humorous, satirical, aggressive, analytical
  • variant_description (valfri): vad den här sparade analysen ska fokusera på
  • watch_for (valfri): analystext som läggs till i prompten
  • category_watch_for (valfri): kategorispecifikt fokus som kombineras med watch_for
  • generate_all_languages (valfri, standard true): generera alla stödda språk i samma körning
  • set_as_default (valfri): markera varianten som standardval för den period-bucketen

Exempel

curl -X POST "https://tools.tornevall.com/feed-admin/analytics/generate" \
  -H "Content-Type: application/json" \
  -H "X-CSRF-TOKEN: DIN_TOKEN" \
  --cookie "LARAVEL_SESSION=DIN_SESSION" \
  -d '{
    "category": "Right Wing",
    "period": "weekly",
    "model": "gpt-4o-mini",
    "language": "en",
    "variant_title": "Critical English Variant",
    "tone": "critical",
    "variant_description": "En kritisk engelskspråkig veckoanalys med fokus på aktiva skribenter och kraftigt redigerade inlägg.",
    "watch_for": "Håll utkik efter eskalerande språk och upprepade talking points",
    "set_as_default": false
  }'

Sparade analysvarianter

Du kan spara flera analyser för samma kategori och periodbucket.

Exempel:

  • en svensk standardöversikt
  • en kritisk engelsk variant
  • en humoristisk variant för samma vecka
  • en årsvis längre trendöversikt

Standardanalys

Om du lämnar titel/beskrivning tom beter sig genereringen som en generisk standardanalys.

Om en variant markeras som standard:

  • blir den första valda analysen på /feed
  • prioriteras den i sammanfattande vyer
  • finns övriga varianter fortfarande kvar i dropdownen för samma kategori/periodbucket

Flerspråkigt som standard

När generate_all_languages=true skapas/uppdateras poster för alla stödda språk i samma request-cykel.

Nuvarande språklista:

  • sv, en, de, fr, es, da, no

Svaret innehåller generated_languages så UI:t kan visa exakt vilka språk som uppdaterades.

Kategorispecifikt analyst-fokus

Varje kategori har en egen sparad analyst-fokus i /feed-admin.

  • övre fokusruta = global guidance
  • kategoriruta = kategorispecifik guidance

Båda kombineras innan prompten skickas.

Periodbucket-beteende

Generering uppdaterar en rad per:

  • kategori
  • periodtyp
  • periodbucket
  • analysvariant

Buckets:

  • Daily -> dagsbucket (exempel: 2026-03-22)
  • Vecka -> ISO-vecka (exempel: 2026-W11)
  • Månad -> månad (exempel: 2026-03)
  • År -> år (exempel: 2026)

Det betyder att:

  • samma veckovariant samma vecka skriver över samma sparade rad
  • en annan titel/språk/ton skapar en separat variant i samma bucket
  • samma beteende gäller för daily, monthly och yearly (samma variant + samma bucket => uppdatera/skriv över befintlig rad)

Analysverktyg på sitenivå

I /feed-admin kan du även generera analyser per enskild site/feed (inte bara per kategori).

Endpoint för site-generering:

POST /feed-admin/analytics/site/generate

Viktiga fält:

  • site_urlid (obligatorisk)
  • period, model, language, variant_title, tone, variant_description
  • watch_for (globalt analyst-fokus)
  • site_watch_for (sitespecifikt fokus)

watch_for och site_watch_for kombineras i prompten.

Det gör att du kan spara separata site-bedömningar för day/vecka/månad/år.

Publika analytics-selectors i RSS API

GET /api/rss/feed/{selector} stöder nu:

  • 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) för kombinerad daily/weekly/monthly/yearly-output

Selector-posterna går också att upptäcka via GET /api/rss i urls[].

Publikt val på /feed

/feed kan kategori-analyser exponera flera sparade varianter via en dropdown.

Varje alternativ kan visa:

  • titel
  • språk
  • ton
  • default-status

Den valda analysen renderas direkt i webbläsaren, och långa analyser kan expanderas med Read more / Show less.

Promptberikning

Analys-prompten kan nu innehålla:

  • analyst guidance (watch_for)
  • valt språk
  • vald ton
  • sparad analystitel och beskrivning
  • exempelposter med länkar
  • källänkar och feed-permalänkar
  • aktivitetssignaler som aktiva källor/skribenter och redigeringstungt beteende

Rendering i UI

Analyser lagras som markdown och renderas som HTML i:

  • /feed-admin
  • /rss
  • /feed

Tips

  • Använd watch_for för att styra analysen mot specifika fokusområden.
  • Använd variant_title och variant_description när du vill skapa en återanvändbar namngiven analys.
  • Använd set_as_default om varianten ska vara första publika valet.
  • Kör yearly för längre trendbilder.