🧑‍💻 Bruker Gmail + Calendar
OAuth 2.0
🌐 dabis.site PHP / Hostinger
API-nøkkel
⚙️ N8N Workflow-motor
Anthropic API
🤖 Claude AI Sonnet 4.6

Systemet består av tre uavhengige lag: en PHP-nettside på Hostinger som håndterer brukerkontoer og OAuth-pålogging, en N8N-workflow som kjøres automatisk hvert 15. minutt og orkestrerer dataflyten, og Claude AI som analyserer e-postinnhold og identifiserer kalenderhendelser.

🔐

Innlogging med Google OAuth 2.0

Du logger inn via Google sin offisielle OAuth-flyt. Vi ber om tilgang til Gmail (lese/redigere e-post) og Google Calendar (opprette hendelser). Google utsteder to tokens: ett kortvarig access token og ett refresh token for automatisk fornyelse.

accounts.google.com
🔒

Tokens krypteres og lagres

Begge tokens krypteres med AES-256-GCM før de skrives til databasen. Krypteringsnøkkelen (ENCRYPT_KEY) lagres i en .env-fil som ligger utenfor den offentlig tilgjengelige public_html-mappen, og er aldri tilgjengelig via nettleseren.

AES-256-GCM · 96-bit IV
⏱️

N8N starter workflow hvert 15. minutt

En planlagt N8N-workflow kjøres automatisk hvert kvarter. Den starter med å hente en liste over alle aktive brukere fra nettsidens interne API-endepunkt. Endepunktet er beskyttet med en tilfeldig generert X-API-Key header som kun N8N kjenner til.

Cron: */15 * * * *
📧

Henter nye e-poster fra Gmail

For hver aktive bruker dekrypteres access token i minnet (aldri på disk) og brukes til å kalle Gmail API. Kun e-poster mottatt etter last_processed-tidsstempelet hentes inn – systemet ser altså ikke på gamle e-poster.

Gmail API · since:last_processed
🤖

Claude AI analyserer innholdet

E-postens tekst sendes til Claude Sonnet 4.6 via Anthropic API med en presis prompt. Claude returnerer alltid strukturert JSON: { isEvent, title, date, time, location, description }. Hvis isEvent er false gjøres ingenting videre. E-postinnholdet lagres ikke – det prosesseres kun i minnet.

claude-sonnet-4-6 · JSON-output
📅

Hendelse opprettes i Google Calendar

Hvis Claude identifiserte en hendelse opprettes den automatisk i Google Calendar med tittel, dato, tid, sted og beskrivelse. Deretter merkes den opprinnelige e-posten som lest og får en etikett i Gmail så du enkelt kan se hva som er behandlet.

Google Calendar API · gmail.modify

Logg oppdateres

Gmail-meldings-ID og kalender-hendelse-ID registreres i databasen slik at samme e-post aldri behandles to ganger. Tidsstempelet last_processed oppdateres, og du kan se historikken i dashboardet ditt.

MySQL · INSERT IGNORE

Lagres i databasen

  • E-postadresse – for å identifisere kontoen din
  • Krypterte tokens – AES-256-GCM, aldri i klartekst
  • Gmail meldings-ID – kun ID-streng, ikke innhold
  • Kalender-hendelse-ID – referanse til opprettet hendelse
  • last_processed – tidsstempel for siste kjøring

Lagres IKKE

  • E-postinnhold – prosesseres kun i minnet
  • Emnelinjer – sendes til Claude, lagres ikke
  • Avsenderinformasjon – leses ikke av systemet
  • Vedlegg – berøres aldri
  • Claude sine svar – brukes og forkastes
🛡️

AES-256-GCM kryptering

Alle Google-tokens krypteres med industristandardkryptering (samme som brukes i banktjenester) før lagring. En tilfeldig 96-bit IV genereres for hver kryptering, slik at samme token aldri gir samme kryptert verdi.

📁

Nøkler utenfor nettrot

Krypteringsnøkkelen og alle hemmeligheter ligger i en .env-fil ett nivå over public_html/. Selv om noen skulle finne en sårbarhet i webserveren, er nøklene utilgjengelige fra nett.

🔑

API-beskyttede endepunkter

Interne API-endepunkter som N8N bruker er beskyttet med en tilfeldig generert 64-tegns API-nøkkel. Uten denne nøkkelen i X-API-Key-headeren returneres 401 Unauthorized.

⏸️

Full kontroll

Du kan når som helst deaktivere tjenesten fra dashboardet. Da stoppes all videre e-postprosessering umiddelbart. Du kan også koble fra Google-kontoen din og slette all data.

🎯

Minimal datatilgang

Vi ber kun om de Google-tillatelsene vi trenger: gmail.modify (lese + merke e-post) og calendar (opprette hendelser). Vi ber ikke om tilgang til Drive, Contacts eller andre Google-tjenester.

🔄

Automatisk token-fornyelse

Access tokens utløper etter én time. Systemet fornyer dem automatisk med refresh token uten at du trenger å logge inn på nytt. Tokens oppdateres kryptert i databasen.

Nettside PHP 8.2 + MySQL Hostet på Hostinger shared hosting, PDO med prepared statements mot SQL-injeksjon
Autentisering Google OAuth 2.0 Standard autorisasjonsflyt med PKCE. Sessions håndteres med PHP med regenerering av session-ID ved innlogging
Kryptering AES-256-GCM OpenSSL-implementasjon innebygd i PHP. Autentisert kryptering – gir både konfidensialitet og integritet
Workflow-motor N8N (self-hosted) Kjøres på egen server, ikke tredjepartstjeneste. Full kontroll over dataflyt og ingen data deles med N8N Cloud
AI-analyse Claude Sonnet 4.6 Kun e-posttekst sendes, ikke metadata eller avsenderinfo. Anthropic lagrer ikke meldinger etter standard API-bruk
E-post API Gmail API v1 Leser kun uleste e-poster siden siste kjøring. Markerer lest og legger til etikett – sletter ingenting
Kalender API Google Calendar API v3 Kun skrivetilgang for å opprette nye hendelser. Leser ikke eksisterende kalenderdata

Klar til å prøve?

Koble til Google-kontoen din og la Personal Assistant ta seg av innboksen.

Kom i gang gratis