THETA

Chrome Extension

Flyttebilen

Arkiver dit fællesskabs historik fra Facebook, automatisk pseudonymisering, beskyttelse af personoplysninger og portabelt format til migration til en ny platform.

01

Problemet

Facebook-grupper rummer årtiers fællesskabshistorik, samtaler, billeder, begivenheder, filer, låst inde på en platform, hvor I ikke ejer jeres egne data.

Hvis gruppen skal flytte, er der ingen nem vej ud. Og en manuel flytning risikerer at eksponere medlemmernes personlige oplysninger.

  • Data er låst inde

    Ingen officiel eksportmulighed for gruppeindhold

  • Privatlivsrisiko

    Manuel kopiering eksponerer medlemmers personoplysninger

  • Flyttebilen

    Automatiseret udtrækning med privatlivsbeskyttelse

02

Brugerrejsen

To adskilte flows. Admins arkiveringsproces i fire trin, og medlemmets rejse til at tilknytte sit indhold på den nye platform.

Adminens rejse

  1. 1 Opsætning

    Forbind til platformen

    Admin installerer Chrome-udvidelsen og forbinder den til den nye platform via OAuth. Udvidelsen gemmer et auth-token og er klar til brug.

    Når admin navigerer til en Facebook-gruppe, detekterer udvidelsen automatisk gruppen og viser en arkiveringsknap.

  2. 2 Udtrækning

    Udtræk alt indhold

    Udvidelsen scroller automatisk gennem gruppens feed, udfolder kommentartråde og udtrækker alt indhold, tekst, billeder, videoer, begivenheder og filer.

    For hvert element beregnes et pseudonym for forfatteren, og teksten scannes for personoplysninger. Indhold streames løbende til staging-serveren. Admin kan lade browseren køre i baggrunden.

  3. 3 Review

    Gennemgå fundne personoplysninger

    Når udtrækningen er fuldført, præsenterer udvidelsen et review-interface med alle steder hvor maskeren har fundet potentielle personoplysninger.

    For hvert flag kan admin vælge at beholde maskeringen, gendanne originalteksten eller lave en tilpasset redigering. Ingen data publiceres uden eksplicit godkendelse.

  4. 4 Publicering

    Godkend arkivet

    Når alle flag er gennemgået, godkender admin det samlede arkiv. Et overblik viser antal opslag, kommentarer, medier og behandlede personoplysninger.

    Med et klik importeres arkivet til den nye platform med alle pseudonymer og maskeringer intakte. Herefter er adminens arbejde færdigt.

Medlemmets rejse

Når arkivet er importeret, kan hvert gruppemedlem tilknytte sit indhold på den nye platform.

  1. 1 Invitation

    Se invitationen

    Medlemmet modtager besked om at gruppen er flyttet. På den nye platform vises en velkomstside med mulighed for at tilknytte sit indhold.

    Ingen konto er oprettet på forhånd. Medlemmet vælger selv om de vil tilknytte sig. Indholdet forbliver pseudonymiseret indtil da.

  2. 2 Claiming

    Log ind og bekræft

    Medlemmet logger ind med Facebook OAuth. Platformen modtager brugerens Facebook-ID, hasher det med samme salt og matcher mod pseudonymerne i arkivet.

    På få sekunder tilknyttes alle opslag, kommentarer og begivenheder til den nye konto. Medlemmet kan straks se og administrere sit indhold.

03

Arkitektur

Tre lag, fra brugerens browser til den nye platform.

Chrome-udvidelse

Brugerens browser

  • Scroll og parse DOM
  • Maskering
  • Upload-kø
  • Review UI

Staging API

Server

  • Auth og tokens
  • Indholdslagring
  • Medier via S3
  • Flag og kryptering

Platform

Discourse eller custom

  • Import af arkiv
  • Brugerkonti
  • Claiming-flow
  • Browser sender maskeret indhold til serveren over HTTPS med kortlivede, arkiv-scopede tokens.
  • Staging-serveren holder et kladde-arkiv med krypteret originaltekst og auto-sletter efter 30 dage uden godkendelse.
  • Ved godkendelse importeres arkivet til platformen i neutralt JSON-format uden platform-lock.

04

Privatlivsmodellen

Tre mekanismer sikrer at medlemmernes privatliv beskyttes gennem hele processen.

Pseudonymisering

Facebook bruger

Hans Jensen

fb:100082345678

Hash-funktion

SHA-256(ID + salt)

Salt opbevares server-side

Pseudonym

user_7f3a2b

Irreversibelt uden salt

Maskering af personoplysninger

Originaltekst

Hej alle! Ring til mig på 23 45 67 89 eller skriv til hans@jensen.dk, jeg bor på Adelgade 12, 8660 Skanderborg

Maskeret

Hej alle! Ring til mig på [TELEFON] eller skriv til [EMAIL], jeg bor på [ADRESSE]

Tekst scannes automatisk for telefonnumre, email-adresser, fysiske adresser og CPR-numre. Fundne oplysninger erstattes med mærkater. Admin gennemgår alle fund manuelt inden godkendelse.

Claiming

Når arkivet er importeret, kan hvert gruppemedlem selv vælge at tilknytte sit indhold via Facebook OAuth. Platformen modtager brugerens Facebook-ID, beregner samme hash og matcher mod pseudonymerne i arkivet. Alle opslag og kommentarer tilknyttes herefter den nye konto.

05

Teknologi og API

Teknologivalg og API-oversigt for den tekniske målgruppe.

Teknologistak

  • Extension: TypeScript + React
  • Maskering (lokal): Ollama med lille model
  • Maskering (API): Custom service
  • Staging API: Node.js eller Go
  • Storage: S3-kompatibel
  • Database: PostgreSQL

API-endpoints

Autentificering

  • POST /auth/connect
  • GET /auth/me

Arkiver

  • POST /archives
  • GET /archives/:id
  • PATCH /archives/:id

Streaming

  • POST /archives/:id/posts
  • POST /archives/:id/media
  • POST /archives/:id/events

Personoplysninger

  • GET /archives/:id/pii-flags
  • PATCH /archives/:id/pii-flags/:id

06

Roadmap

Hvad der er inkluderet i v1, og hvad der kommer senere.

Version 1
  • Komplet gruppeindholds-udtrækning

    Opslag, kommentarer, medier, begivenheder, filer

  • Automatisk pseudonymisering

    Server-side salt, irreversibel hash

  • Maskering med admin-gennemgang

    LLM-baseret detektion, manuelt review

  • Claiming via Facebook OAuth

    Brugere tilknytter eget indhold

  • Portabelt JSON-format

    Platformuafhængig eksport

Fremtidige versioner
  • Genoptagelig udtrækning

    Checkpoints for store grupper

  • Billed- og video-maskering

    OCR og ansigtsblurring

  • Direkte Discourse-import

    Nativt importformat

  • Batch-arkivering

    Flere grupper i sekvens

  • Kollaborativ gennemgang

    Flere admins, tildelte flags

07

Variant B, Krypteret indhold

En alternativ tilgang med stærkere privatlivsbeskyttelse, alt indhold er krypteret og forbliver utilgængeligt, indtil hvert medlem selv vælger at låse det op.

A

Pseudonymisering

Indhold er læsbart fra dag ét, men tilskrevet pseudonyme forfattere. Medlemmer kan efterfølgende tilknytte deres indhold via Facebook OAuth.

  • Indhold tilgængeligt med det samme
  • Søgbart og navigerbart fra start
  • Indhold synligt uden forfatterens samtykke
  • Ingen incitament til at tilknytte sig
B

Kryptering med oplåsning

Alt indhold er krypteret per forfatter. Opslag vises som skjulte på den nye platform, indtil forfatteren selv melder sig og låser sit indhold op.

  • Intet indhold synligt uden forfatterens samtykke
  • Indbygget incitament: progressbar driver tilmelding
  • Stærkere GDPR-profil
  • Tomt forum indtil nok medlemmer tilmelder sig

Sådan virker det

  1. 1 Arkivering

    Admin arkiverer gruppen som normalt. Hvert opslag krypteres med en nøgle afledt af forfatterens Facebook-ID. Kun den krypterede version importeres til den nye platform.

  2. 2 Skjult visning

    Den nye platform viser krypterede opslag som skjulte blokke, synlig dato og trådstruktur, men sløret indhold. En progressbar viser hvor stor en del af arkivet der er låst op.

  3. 3 Oplåsning

    Når et medlem logger ind med Facebook OAuth, genskabes deres nøgle. Alle deres opslag og kommentarer dekrypteres og vises med deres nye brugernavn. Progressbaren stiger.