Browser-Plugin: Multi-User/X-API-Key + Footer-Download
Plugin (Manifest V3) refactored für gehostete Multi-User-Instanz: - Tracker-URL hardcoded https://nextjobs.cc (keine URL-Eingabe mehr) - Authentifizierung ausschließlich über persönlichen REST-API-Key (Header X-API-Key), pro Benutzer in chrome.storage.sync - Server: /api/indeed-import nutzt neuen requireApiKey-Middleware, ordnet Import dem Benutzerkonto mit passendem cfg:API_TOKEN zu Download: /plugin/nextjobs-stellen-import.zip packt extension/ on the fly (dep-freier STORE-Zip in lib/zipdir.js, deterministischer Timestamp), route hinter requireAuth. Footer-Link im App-Footer. Dockerfile kopiert extension/ ins Image. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+48
-37
@@ -1,50 +1,61 @@
|
||||
# NextJobs – Indeed Import (Browser-Erweiterung)
|
||||
# NextJobs – Stellen-Import (Browser-Erweiterung)
|
||||
|
||||
Chromium-Erweiterung (Manifest V3), die auf Indeed einen Button **direkt neben der
|
||||
Stellenbeschreibung** einfügt. Ein Klick sendet alle Stelleninformationen an den
|
||||
NextJobs. Dort wird die Stelle als **Entwurf** angelegt und die KI
|
||||
erstellt automatisch zugeschnittene Bewerbungsunterlagen (auf Basis der hinterlegten
|
||||
Vorlagen).
|
||||
Chromium-Erweiterung (Manifest V3), die **auf jeder Webseite** Stellen
|
||||
ausliest und an NextJobs (`https://nextjobs.cc`) sendet. Auf Indeed wird
|
||||
zusätzlich ein Button *direkt neben der Stellenbeschreibung* eingeblendet.
|
||||
Die Stelle wird im Tracker als **Entwurf** angelegt; die KI erstellt daraus
|
||||
zugeschnittene Bewerbungsunterlagen (auf Basis der hinterlegten Vorlagen).
|
||||
|
||||
## Multi-User & Authentifizierung
|
||||
|
||||
Die Tracker-Adresse ist fest `https://nextjobs.cc` (hardcodiert). Jeder
|
||||
Benutzer authentifiziert sich mit seinem **persönlichen REST-API-Key**:
|
||||
|
||||
- Im Tracker unter **Einstellungen → API-Token (X-API-Key)** einen Token
|
||||
setzen (falls noch keiner da ist: neu vergeben).
|
||||
- In der Erweiterung auf das Symbol klicken → **Einstellungen** → Token
|
||||
eintragen → **Speichern** + **Verbindung testen**.
|
||||
|
||||
Der Key wird im `X-API-Key`-Header gesendet; der Server ordnet den Import dem
|
||||
Benutzerkonto zu, das diesen Token hinterlegt hat. Ohne (oder mit ungültigem)
|
||||
Key antwortet der Server mit **401**. Der Key wird pro Browser-Profil in der
|
||||
`chrome.storage.sync` gespeichert — wer mehrere Konten verwaltet, kann den Key
|
||||
jederzeit in den Einstellungen wechseln.
|
||||
|
||||
## Installation (Entwicklermodus)
|
||||
|
||||
1. NextJobs starten (Standard: `http://localhost:3000`).
|
||||
2. In Chrome/Edge/Brave `chrome://extensions` öffnen.
|
||||
3. **Entwicklermodus** oben rechts aktivieren.
|
||||
4. **Entpackte Erweiterung laden** klicken und diesen `extension/`-Ordner auswählen.
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Auf das Erweiterungs-Symbol klicken und die **Tracker-Adresse** setzen
|
||||
(z. B. `http://localhost:3000` oder die Adresse deiner Deployment-Instanz).
|
||||
Mit **Verbindung testen** prüfen, ob der Tracker erreichbar ist.
|
||||
1. In Chrome/Edge/Brave `chrome://extensions` öffnen.
|
||||
2. **Entwicklermodus** oben rechts aktivieren.
|
||||
3. **Entpackte Erweiterung laden** klicken und diesen `extension/`-Ordner
|
||||
auswählen.
|
||||
4. API-Key eintragen (siehe oben).
|
||||
|
||||
## Verwendung
|
||||
|
||||
1. Auf `indeed.com` eine Stelle öffnen.
|
||||
2. Neben der Überschrift **„Vollständige Stellenbeschreibung"** erscheint der grüne
|
||||
Button **„An NextJobs senden"**.
|
||||
3. Klicken → die Stelle wird als Entwurf angelegt, die Unterlagen werden im
|
||||
Hintergrund generiert. Über den Link „Entwurf öffnen" gelangst du direkt zur
|
||||
Bewerbung im Tracker.
|
||||
1. Auf einer Stellenanzeige das Erweiterungs-Symbol klicken. Die Felder werden
|
||||
automatisch ausgelesen (Schema.org/JSON-LD → OpenGraph → Auswahl/Text).
|
||||
Text auf der Seite markieren → wird als Beschreibung übernommen.
|
||||
2. Felder prüfen, ggf. korrigieren und **An Tracker senden** klicken.
|
||||
Auf Indeed alternativ den grünen Button **„An NextJobs senden"** neben
|
||||
der Stellenbeschreibung.
|
||||
3. Über den Link **Entwurf öffnen** gelangst du direkt zur Bewerbung im Tracker.
|
||||
|
||||
## Voraussetzungen im Tracker
|
||||
|
||||
- Unter **Vorlagen** mindestens ein Basis-Dokument (z. B. Anschreiben, Lebenslauf)
|
||||
hinterlegen — diese dienen der KI als Faktengrundlage.
|
||||
- `OLLAMA_API_KEY` (Ollama Cloud) gesetzt – z. B. in der `.env`-Datei des Trackers –,
|
||||
damit die KI-Generierung läuft.
|
||||
- Unter **Vorlagen** mindestens ein Basis-Dokument (z. B. Anschreiben,
|
||||
Lebenslauf) hinterlegen — diese dienen der KI als Faktengrundlage.
|
||||
- `OLLAMA_API_KEY` (Ollama Cloud) gesetzt – z. B. in den Einstellungen des
|
||||
Benutzers – damit die KI-Generierung läuft.
|
||||
- Ein **API-Token (X-API-Key)** für den benutzten Account.
|
||||
|
||||
## Ausgelesene Felder
|
||||
## Berechtigungen
|
||||
|
||||
| Feld | Quelle (Indeed DOM) |
|
||||
|------|---------------------|
|
||||
| Stelle | `[data-testid="jobsearch-JobInfoHeader-title"]` |
|
||||
| Firma | `[data-testid="inlineHeader-companyName"]` (im `jobsearch-CompanyInfoContainer`) |
|
||||
| Ort | `[data-testid="jobsearch-JobInfoHeader-companyLocation"]` |
|
||||
| Gehalt/Art | `#salaryInfoAndJobType` |
|
||||
| Stellenbeschreibung | `#jobDescriptionText` |
|
||||
| Quelle-URL | aus `vjk`/`jk`-Parameter bzw. aktueller URL |
|
||||
| Berechtigung | Zweck |
|
||||
|---|---|
|
||||
| `storage` | API-Key speichern (`chrome.storage.sync`) |
|
||||
| `scripting` + `activeTab` | Stelle auf der aktiven Seite auslesen (nur auf Klick) |
|
||||
| `https://nextjobs.cc/*` | Import an den Tracker senden |
|
||||
| `*://*.indeed.com/*` | Inline-Button auf Indeed einblenden |
|
||||
|
||||
Indeed ist eine Single-Page-App; die Erweiterung erkennt Wechsel der geöffneten
|
||||
Stelle per `MutationObserver` und hält den Button aktuell.
|
||||
Die Erweiterung liest nur die aktive Seite aus, wenn du sie aufrufst, und
|
||||
sendet die Daten ausschließlich an `https://nextjobs.cc`.
|
||||
Reference in New Issue
Block a user