Userscript that imports game logs into Backloggd from other platforms via a unified transfer JSON (or CSV). Backloggd has no native import/export — this fills that gap.
Compatible with Tampermonkey, Violentmonkey, Greasemonkey, ScriptCat, and similar managers.
Status: early (
0.7.0). Runs on Backloggd only. Transfer format v2 mirrors the native log POST body. Import, CSV mapping, match cache, and multi-log cleanup are live; full library export is next.
Companion to Backloggd Plus (enrichment UI). Not affiliated with Backloggd.
Other platforms / CSV / tools
│
▼
transfer JSON (v2) ──► Backloggd Data Transfer ──► POST logs
▲
│
Backloggd library ──► transfer JSON (export — planned)
backloggd-transfer file (format spec), or a CSV you’ll map in the panel.Prefixes bdt_ / data-bdt-* keep storage and DOM separate from Backloggd Plus (blp_).
https://raw.githubusercontent.com/NemoKing1210/backloggd-data-transfer/main/backloggd-data-transfer.user.js
Local build: run npm run build and install backloggd-data-transfer.user.js from the repo root (do not hand-edit that file — it is generated).
Updates: managers pick up new versions via @updateURL / @version when you bump and rebuild.
| Entry point | Where |
|---|---|
| Navbar Transfer | Same slot as Log a Game / Plus (#bdt-nav-transfer) |
| Userscript menu | “Backloggd Data Transfer” |
| Tab | Purpose |
|---|---|
| Import | Stepped wizard: JSON or CSV → match → write logs |
| Export | Placeholder until library export ships |
| Cleanup | Scan for games with 2+ logs; deep-link to tidy |
| History | Recent transfer sessions |
| Cache | Match cache meter, stats, clear actions |
| Settings | Language, delays, parallelism, debug |
| About | Version, author, links |
UI languages: English and Russian (or follow browser locale).
| Step | What happens |
|---|---|
| File | Choose Transfer JSON or CSV, drop/browse a file, optional example download |
| Map | CSV only — column mapping + status / rating / platform value maps |
| Review | Parallel title match, filters, selection, summary stats |
| Import | Parallel POST of selected matches with live progress |
Use the canonical backloggd-transfer document (version 2). Fields align with Backloggd’s create-log form (log, playthroughs, dates). v1 files are still accepted and migrated on read.
game_id / slug.Import existing off).game_id or /games/slug/ URL to resolve manually.After imports (or anytime), open Cleanup:
Scanning uses the same parallel request pool as import (library pages + per-game probes).
Keeps the latest transfer sessions so you can see what you imported recently.
| Setting | Notes |
|---|---|
| Language | Auto, English, or Russian |
| Import delay | Pause between network waves (ms) |
| Parallel requests | Concurrent lookups / library / import (1–8) |
| Debug mode | Extra detail on Review (e.g. indexed library sources) |
Full specification: docs/transfer-format.md.
Minimal document:
{
"format": "backloggd-transfer",
"version": 2,
"exportedAt": "2026-07-18T12:00:00.000Z",
"source": {
"platform": "custom",
"label": "my-library.json"
},
"entries": [
{
"game_id": null,
"title": "Raft",
"slug": "",
"log": {
"game_liked": false,
"is_play": true,
"is_playing": false,
"is_backlog": false,
"is_wishlist": false,
"status": "completed",
"total_hours": null,
"total_minutes": null,
"time_source": 1,
"override_cover_id": null
},
"playthroughs": [
{
"title": "Windows PC",
"rating": 5,
"review": "",
"review_spoilers": false,
"platform": 6,
"start_date": "2024-08-02",
"finish_date": "2024-08-03"
}
],
"dates": []
}
]
}
log.status |
Meaning on Backloggd |
|---|---|
wishlist |
Wishlist |
backlog |
Backlog |
playing |
Playing |
played |
Played (nothing specific) |
completed |
Completed (main objective) |
shelved |
Shelved |
abandoned |
Abandoned |
retired |
Retired |
Ratings use Backloggd’s 1–10 half-star scale. game_id may be null — the Read step resolves it from title.
External tools and future source adapters should emit this JSON; the Backloggd importer stays shared. Notion already has native export — this project does not scrape Notion.
Same toolchain as backloggd-plus: Vite + vite-plugin-monkey.
npm install
npm run dev # Vite serve — install the "dev:" userscript from the open URL
npm run build # Production → dist/ + copy to root install artifacts
npm run ci # build + verify dist ↔ committed .user.js / .meta.js
Requires Node.js 20+ (see .nvmrc).
| Path | Role |
|---|---|
src/main.js |
Bootstrap |
src/format/ |
Schema, parse, serialize, CSV, status maps |
src/destinations/backloggd/ |
Search, create-log, library, multi-log scan |
src/features/ |
Panel, import, cleanup, cache, settings, toast |
src/i18n/ |
en + ru |
docs/transfer-format.md |
Format spec |
backloggd-data-transfer.user.js |
Canonical install artifact (generated) |
Edit under src/, then npm run build. Version source of truth: package.json → drives @version, in-app version, and CI artifact checks. User-visible changes: bump version + CHANGELOG.md, then rebuild. See AGENTS.md for conventions.