Upload files to "/"
This commit is contained in:
29
.gitignore
vendored
Normal file
29
.gitignore
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Editor files
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
|
||||
# Temporary files
|
||||
*.tmp
|
||||
*.bak
|
||||
|
||||
# Node modules (if you add build tools later)
|
||||
node_modules/
|
||||
package-lock.json
|
||||
|
||||
# Distribution files (if you build minified versions)
|
||||
dist/
|
||||
build/
|
||||
|
||||
# Test files (if you add tests later)
|
||||
coverage/
|
||||
.nyc_output/
|
||||
310
GITEA-SETUP-GUIDE.md
Normal file
310
GITEA-SETUP-GUIDE.md
Normal file
@@ -0,0 +1,310 @@
|
||||
# 🚀 Gitea Setup Guide - LinkedIn AI-Text Generator
|
||||
|
||||
## Steg-för-steg installation på din Gitea-server
|
||||
|
||||
---
|
||||
|
||||
## Steg 1: Skapa Repository i Gitea
|
||||
|
||||
1. **Logga in** på din Gitea-server (t.ex. `https://wolfnova.ai/gitea`)
|
||||
2. Klicka på **"+"** → **"New Repository"**
|
||||
3. **Repository name:** `linkedin-ai-tools`
|
||||
4. **Visibility:** Public (viktigt! annars fungerar inte bookmarklet)
|
||||
5. **Initialize repository:**
|
||||
- ✅ Kryssa i "Initialize Repository"
|
||||
- ✅ Add README: (vi ersätter den senare)
|
||||
- License: None (eller välj en)
|
||||
6. **Create Repository**
|
||||
|
||||
---
|
||||
|
||||
## Steg 2: Ladda upp filer
|
||||
|
||||
Du har tre alternativ:
|
||||
|
||||
### Alternativ A: Via Gitea Web UI (Enklast)
|
||||
|
||||
1. I ditt nya repo, klicka **"Upload file"**
|
||||
2. Dra och släpp dessa filer:
|
||||
- `linkedin-ai.js`
|
||||
- `version.json`
|
||||
- `README.md` (ersätter befintlig)
|
||||
3. **Commit message:** "Initial upload v2.0.0"
|
||||
4. **Commit Changes**
|
||||
|
||||
### Alternativ B: Via Git CLI
|
||||
|
||||
```bash
|
||||
# Klona repot
|
||||
git clone https://wolfnova.ai/gitea/DITTANVÄNDARNAMN/linkedin-ai-tools.git
|
||||
cd linkedin-ai-tools
|
||||
|
||||
# Kopiera filerna till mappen
|
||||
cp /path/to/linkedin-ai.js .
|
||||
cp /path/to/version.json .
|
||||
cp /path/to/README.md .
|
||||
|
||||
# Commit och pusha
|
||||
git add .
|
||||
git commit -m "Initial upload v2.0.0"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### Alternativ C: Direkt redigera i Gitea
|
||||
|
||||
1. Klicka på varje fil i repot
|
||||
2. Klicka **"Edit"**
|
||||
3. Klistra in innehållet
|
||||
4. **Commit Changes**
|
||||
|
||||
---
|
||||
|
||||
## Steg 3: Hitta Raw URL
|
||||
|
||||
1. I Gitea-repot, klicka på **`linkedin-ai.js`**
|
||||
2. Klicka på **"Raw"**-knappen
|
||||
3. Kopiera URL:en från adressfältet
|
||||
|
||||
**URL-format blir:**
|
||||
```
|
||||
https://wolfnova.ai/gitea/DITTANVÄNDARNAMN/linkedin-ai-tools/raw/branch/main/linkedin-ai.js
|
||||
```
|
||||
|
||||
**Exempel:**
|
||||
```
|
||||
https://wolfnova.ai/gitea/wolfnova/linkedin-ai-tools/raw/branch/main/linkedin-ai.js
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Steg 4: Skapa Bookmarklet
|
||||
|
||||
Nu skapar du bookmarklet som laddar från din Gitea:
|
||||
|
||||
### Bookmarklet-kod:
|
||||
|
||||
```javascript
|
||||
javascript:(function(){var s=document.createElement('script');s.src='https://wolfnova.ai/gitea/DITTANVÄNDARNAMN/linkedin-ai-tools/raw/branch/main/linkedin-ai.js';document.body.appendChild(s);})();
|
||||
```
|
||||
|
||||
**⚠️ VIKTIGT:** Byt ut `DITTANVÄNDARNAMN` och domänen mot din faktiska Gitea-URL!
|
||||
|
||||
### Skapa bokmärket:
|
||||
|
||||
1. **Högerklicka** i bokmärkesfältet
|
||||
2. **"Add bookmark"** eller **"Lägg till bokmärke"**
|
||||
3. **Name:** `✨ LinkedIn AI`
|
||||
4. **URL:** Klistra in bookmarklet-koden ovan (med din URL!)
|
||||
5. **Save**
|
||||
|
||||
---
|
||||
|
||||
## Steg 5: Testa
|
||||
|
||||
1. Gå till **LinkedIn.com**
|
||||
2. **Markera vilken text som helst**
|
||||
3. **Klicka på `✨ LinkedIn AI`** i bokmärkesfältet
|
||||
4. **Popup ska dyka upp!** ✨
|
||||
|
||||
Om det fungerar: 🎉 **Grattis!**
|
||||
|
||||
---
|
||||
|
||||
## Steg 6: Dela med teamet
|
||||
|
||||
### Intern distribution:
|
||||
|
||||
**Skapa en guide för ditt team:**
|
||||
|
||||
```markdown
|
||||
# Använd LinkedIn AI-Text Generator
|
||||
|
||||
1. Högerklicka i bokmärkesfältet
|
||||
2. Välj "Add bookmark"
|
||||
3. Namn: ✨ LinkedIn AI
|
||||
4. URL: [din bookmarklet-kod här]
|
||||
5. Spara
|
||||
|
||||
Klart! Nu kan du markera text och klicka på bokmärket.
|
||||
```
|
||||
|
||||
### Eller skapa en "installer-sida":
|
||||
|
||||
Skapa `install.html` i Gitea-repot:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>LinkedIn AI - Installation</title>
|
||||
<style>
|
||||
body { font-family: system-ui; max-width: 800px; margin: 50px auto; padding: 20px; }
|
||||
.bookmarklet {
|
||||
display: inline-block;
|
||||
background: #2c5aa0;
|
||||
color: white;
|
||||
padding: 12px 24px;
|
||||
border-radius: 8px;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
.bookmarklet:hover { background: #1e3a6b; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>✨ LinkedIn AI-Text Generator</h1>
|
||||
<p>Dra detta till ditt bokmärkesfält:</p>
|
||||
<a href="javascript:(function(){var s=document.createElement('script');s.src='https://wolfnova.ai/gitea/DITTANVÄNDARNAMN/linkedin-ai-tools/raw/branch/main/linkedin-ai.js';document.body.appendChild(s);})();" class="bookmarklet">
|
||||
✨ LinkedIn AI
|
||||
</a>
|
||||
<h2>Användning</h2>
|
||||
<ol>
|
||||
<li>Gå till LinkedIn</li>
|
||||
<li>Markera text</li>
|
||||
<li>Klicka på bokmärket</li>
|
||||
<li>Välj funktion</li>
|
||||
</ol>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Dela länken: `https://wolfnova.ai/gitea/DITTANVÄNDARNAMN/linkedin-ai-tools/src/branch/main/install.html`
|
||||
|
||||
---
|
||||
|
||||
## Hantera CORS (Om problem uppstår)
|
||||
|
||||
Om bookmarklet inte kan ladda scriptet på grund av CORS, lägg till dessa headers i Gitea:
|
||||
|
||||
### Nginx config (om du använder Nginx framför Gitea):
|
||||
|
||||
```nginx
|
||||
location /gitea/wolfnova/linkedin-ai-tools/raw/ {
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
add_header Access-Control-Allow-Methods "GET, OPTIONS";
|
||||
proxy_pass http://localhost:3000;
|
||||
}
|
||||
```
|
||||
|
||||
### Alternativt: Använd CDN
|
||||
|
||||
Om CORS är ett problem, använd en CDN som automatiskt lägger till CORS-headers:
|
||||
|
||||
1. Lägg scriptet på **jsDelivr** eller **cdnjs**
|
||||
2. Eller använd din egen Nginx/Apache med CORS-headers
|
||||
|
||||
---
|
||||
|
||||
## Uppdatera Scriptet
|
||||
|
||||
När du vill uppdatera:
|
||||
|
||||
1. **Redigera `linkedin-ai.js`** i Gitea
|
||||
2. **Uppdatera `version.json`:**
|
||||
```json
|
||||
{
|
||||
"version": "2.1.0",
|
||||
"released": "2026-01-20",
|
||||
...
|
||||
}
|
||||
```
|
||||
3. **Commit changes**
|
||||
4. **✅ Alla användare får automatiskt uppdateringen!**
|
||||
|
||||
Ingen behöver uppdatera sitt bokmärke manuellt!
|
||||
|
||||
---
|
||||
|
||||
## Felsökning
|
||||
|
||||
### Problem: Script laddar inte
|
||||
|
||||
**Kontrollera:**
|
||||
```bash
|
||||
# Testa om URL:en är tillgänglig
|
||||
curl https://wolfnova.ai/gitea/DITTANVÄNDARNAMN/linkedin-ai-tools/raw/branch/main/linkedin-ai.js
|
||||
|
||||
# Ska returnera JavaScript-kod, inte HTML
|
||||
```
|
||||
|
||||
**Lösning:**
|
||||
- Kontrollera att repot är Public
|
||||
- Verifiera att filen heter exakt `linkedin-ai.js`
|
||||
- Kolla att branch heter `main` (inte `master`)
|
||||
|
||||
### Problem: CORS-fel i Console
|
||||
|
||||
**Fel:**
|
||||
```
|
||||
Access to script at '...' from origin 'https://linkedin.com' has been blocked by CORS policy
|
||||
```
|
||||
|
||||
**Lösning:**
|
||||
1. Lägg till CORS-headers (se ovan)
|
||||
2. Eller använd **fallback inline bookmarklet** (se nedan)
|
||||
|
||||
### Problem: CSP-blockering
|
||||
|
||||
Vissa sidor (LinkedIn, GitHub) blockerar externa scripts.
|
||||
|
||||
**Lösning: Hybrid Bookmarklet**
|
||||
|
||||
```javascript
|
||||
javascript:(function(){
|
||||
fetch('https://wolfnova.ai/gitea/DITTANVÄNDARNAMN/linkedin-ai-tools/raw/branch/main/linkedin-ai.js')
|
||||
.then(r => r.text())
|
||||
.then(code => eval(code))
|
||||
.catch(e => {
|
||||
alert('❌ Kunde inte ladda script. Kontrollera att servern är tillgänglig.');
|
||||
console.error(e);
|
||||
});
|
||||
})();
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Backup: Fallback Inline Bookmarklet
|
||||
|
||||
Om Gitea-lösningen inte fungerar på grund av CORS/CSP, ha denna som backup:
|
||||
|
||||
**Minifierad inline-version** (ingen server behövs):
|
||||
```javascript
|
||||
[Din nuvarande inline bookmarklet-kod här som backup]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fördelar med Gitea-lösningen
|
||||
|
||||
✅ **Centraliserad uppdatering** - Uppdatera en gång, alla får uppdateringen
|
||||
✅ **Versionskontroll** - Git-historik över alla ändringar
|
||||
✅ **Collaboration** - Flera kan bidra till utvecklingen
|
||||
✅ **Self-hosted** - Full kontroll över koden
|
||||
✅ **Privat eller public** - Du bestämmer
|
||||
✅ **CI/CD möjligt** - Kan koppla på automatiska tester
|
||||
|
||||
---
|
||||
|
||||
## Nästa steg
|
||||
|
||||
Efter basic setup, överväg:
|
||||
|
||||
1. **Lägg till fler funktioner** i `linkedin-ai.js`
|
||||
2. **Skapa installer-sida** för enklare distribution
|
||||
3. **Sätt upp monitoring** - logga hur ofta scriptet laddas
|
||||
4. **Version check** - Notifiera användare om nya versioner
|
||||
5. **A/B testing** - Testa olika prompts och UI-varianter
|
||||
|
||||
---
|
||||
|
||||
## Support
|
||||
|
||||
Problem? Kontakta:
|
||||
- **Email:** [din email]
|
||||
- **Gitea:** https://wolfnova.ai/gitea/DITTANVÄNDARNAMN/linkedin-ai-tools/issues
|
||||
|
||||
---
|
||||
|
||||
**Lycka till! 🚀**
|
||||
|
||||
Wolfnova Innovation
|
||||
125
QUICKSTART.md
Normal file
125
QUICKSTART.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# 🚀 SNABBSTART - Gitea Setup
|
||||
|
||||
## I 5 minuter är du igång!
|
||||
|
||||
### Steg 1: Skapa repo i Gitea (2 min)
|
||||
1. Logga in på din Gitea: `https://wolfnova.ai/gitea`
|
||||
2. Klicka "+" → "New Repository"
|
||||
3. Namn: `linkedin-ai-tools`
|
||||
4. Visibility: **Public** (viktigt!)
|
||||
5. Initialize: Kryssa i
|
||||
6. Create Repository
|
||||
|
||||
### Steg 2: Ladda upp filer (2 min)
|
||||
Packa upp `gitea-linkedin-ai-tools.zip` och ladda upp dessa filer till repot:
|
||||
- ✅ linkedin-ai.js
|
||||
- ✅ version.json
|
||||
- ✅ README.md
|
||||
- ✅ install.html
|
||||
- ✅ .gitignore
|
||||
|
||||
**Snabbast:** Dra och släpp alla filer på en gång i Gitea web UI
|
||||
|
||||
### Steg 3: Hämta din URL (30 sek)
|
||||
1. Klicka på `linkedin-ai.js` i repot
|
||||
2. Klicka "Raw"
|
||||
3. Kopiera URL från adressfältet
|
||||
|
||||
**Din URL blir typ:**
|
||||
```
|
||||
https://wolfnova.ai/gitea/DITTNAMN/linkedin-ai-tools/raw/branch/main/linkedin-ai.js
|
||||
```
|
||||
|
||||
### Steg 4: Skapa bookmarklet (30 sek)
|
||||
1. Högerklicka i bokmärkesfältet
|
||||
2. "Add bookmark"
|
||||
3. Namn: `✨ LinkedIn AI`
|
||||
4. URL:
|
||||
```javascript
|
||||
javascript:(function(){var s=document.createElement('script');s.src='DIN-URL-HÄR';document.body.appendChild(s);})();
|
||||
```
|
||||
**Byt ut `DIN-URL-HÄR` mot din faktiska URL!**
|
||||
|
||||
5. Spara
|
||||
|
||||
### Steg 5: Testa! (30 sek)
|
||||
1. Gå till LinkedIn
|
||||
2. Markera text
|
||||
3. Klicka `✨ LinkedIn AI`
|
||||
4. 🎉 Fungerar det? Grattis!
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Alternativ: Använd install.html
|
||||
|
||||
**Enklare för teamet:**
|
||||
|
||||
1. Dela denna länk med teamet:
|
||||
```
|
||||
https://wolfnova.ai/gitea/DITTNAMN/linkedin-ai-tools/src/branch/main/install.html
|
||||
```
|
||||
|
||||
2. De drar bara knappen till bokmärkesfältet
|
||||
3. Klart! ✨
|
||||
|
||||
---
|
||||
|
||||
## ⚡ Fördelar med Gitea-lösningen
|
||||
|
||||
✅ **En uppdatering → alla får den** (ingen manuell uppdatering)
|
||||
✅ **Versionskontroll** med Git
|
||||
✅ **Self-hosted** - du kontrollerar allt
|
||||
✅ **Dela internt** enkelt med teamet
|
||||
|
||||
---
|
||||
|
||||
## 📝 Uppdatera senare
|
||||
|
||||
1. Redigera `linkedin-ai.js` i Gitea
|
||||
2. Uppdatera version i `version.json`
|
||||
3. Commit
|
||||
4. ✅ Alla användare får uppdateringen automatiskt!
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Om CORS-problem uppstår
|
||||
|
||||
**Lösning 1:** Lägg till CORS-headers i Nginx (se full guide)
|
||||
|
||||
**Lösning 2:** Använd fetch-baserad bookmarklet:
|
||||
```javascript
|
||||
javascript:(function(){fetch('DIN-URL').then(r=>r.text()).then(c=>eval(c));})();
|
||||
```
|
||||
|
||||
**Lösning 3:** Fallback till inline bookmarklet (funkar alltid)
|
||||
|
||||
---
|
||||
|
||||
## 🆘 Felsökning
|
||||
|
||||
**Problem:** Script laddar inte
|
||||
- Kolla att repot är Public
|
||||
- Verifiera att filen heter exakt `linkedin-ai.js`
|
||||
- Testa URL:en direkt i webbläsaren
|
||||
|
||||
**Problem:** Bookmarklet gör ingenting
|
||||
- Kontrollera att du markerat text först
|
||||
- Öppna Console (F12) och kolla efter fel
|
||||
- Prova på en annan sida (inte LinkedIn först)
|
||||
|
||||
---
|
||||
|
||||
## 📧 Support
|
||||
|
||||
Problem? Läs:
|
||||
- `GITEA-SETUP-GUIDE.md` (fullständig guide)
|
||||
- `README.md` (dokumentation)
|
||||
|
||||
Eller kontakta: [din email]
|
||||
|
||||
---
|
||||
|
||||
**Lycka till! 🚀**
|
||||
|
||||
Wolfnova Innovation
|
||||
www.wolfnova.ai
|
||||
256
install.html
Normal file
256
install.html
Normal file
@@ -0,0 +1,256 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>LinkedIn AI-Text Generator - Installation</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.container {
|
||||
background: white;
|
||||
border-radius: 16px;
|
||||
padding: 40px;
|
||||
max-width: 800px;
|
||||
box-shadow: 0 20px 60px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #2c5aa0;
|
||||
margin-bottom: 10px;
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
color: #666;
|
||||
margin-bottom: 30px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.bookmarklet-container {
|
||||
background: #f8f9fa;
|
||||
border: 2px dashed #2c5aa0;
|
||||
border-radius: 12px;
|
||||
padding: 30px;
|
||||
margin: 30px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.bookmarklet {
|
||||
display: inline-block;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white;
|
||||
padding: 16px 32px;
|
||||
border-radius: 8px;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.bookmarklet:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 6px 16px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.instruction {
|
||||
margin-top: 15px;
|
||||
color: #2c5aa0;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.features {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 20px;
|
||||
margin: 30px 0;
|
||||
}
|
||||
|
||||
.feature {
|
||||
background: #f8f9fa;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
border-left: 4px solid #2c5aa0;
|
||||
}
|
||||
|
||||
.feature-icon {
|
||||
font-size: 32px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.feature h3 {
|
||||
color: #333;
|
||||
margin-bottom: 8px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.feature p {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.steps {
|
||||
background: #fff;
|
||||
border: 1px solid #e0e0e0;
|
||||
border-radius: 12px;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
.steps h2 {
|
||||
color: #2c5aa0;
|
||||
margin-bottom: 15px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.steps ol {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.steps li {
|
||||
margin: 12px 0;
|
||||
color: #444;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #e0e0e0;
|
||||
color: #999;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.version {
|
||||
display: inline-block;
|
||||
background: #e3f2fd;
|
||||
color: #1976d2;
|
||||
padding: 4px 12px;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.alert {
|
||||
background: #fff3cd;
|
||||
border: 1px solid #ffc107;
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
color: #856404;
|
||||
}
|
||||
|
||||
.alert strong {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>✨ LinkedIn AI-Text Generator</h1>
|
||||
<p class="subtitle">Wolfnova Innovation <span class="version">v2.0.0</span></p>
|
||||
|
||||
<div class="alert">
|
||||
<strong>📌 Installationsinstruktion:</strong>
|
||||
Dra knappen nedan till din bokmärkesfält (Bookmarks bar). Visa bokmärkesfältet med Ctrl+Shift+B (Windows) eller Cmd+Shift+B (Mac).
|
||||
</div>
|
||||
|
||||
<div class="bookmarklet-container">
|
||||
<a href="javascript:(function(){var s=document.createElement('script');s.src='https://wolfnova.ai/gitea/wolfnova/linkedin-ai-tools/raw/branch/main/linkedin-ai.js';document.body.appendChild(s);})();" class="bookmarklet" draggable="true">
|
||||
✨ LinkedIn AI
|
||||
</a>
|
||||
<p class="instruction">👆 Dra denna knapp till din bokmärkesfält</p>
|
||||
</div>
|
||||
|
||||
<div class="features">
|
||||
<div class="feature">
|
||||
<div class="feature-icon">🧠</div>
|
||||
<h3>Generera LinkedIn Text</h3>
|
||||
<p>Skapa filosofiskt, djupgående innehåll från inspiration</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<div class="feature-icon">💡</div>
|
||||
<h3>Skapa från idé</h3>
|
||||
<p>Utveckla råa tankar till fullfjädrade inlägg</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<div class="feature-icon">🔄</div>
|
||||
<h3>Omarbeta</h3>
|
||||
<p>Fördjupa befintlig text med systemtänkande</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<div class="feature-icon">⚡</div>
|
||||
<h3>Bionic Reading</h3>
|
||||
<p>Komprimera långa texter till skannbart format</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="steps">
|
||||
<h2>📖 Så här använder du verktyget:</h2>
|
||||
<ol>
|
||||
<li><strong>Dra knappen ovan</strong> till din bokmärkesfält (visas med Ctrl+Shift+B)</li>
|
||||
<li><strong>Gå till LinkedIn</strong> eller vilken sida med text som helst</li>
|
||||
<li><strong>Markera text</strong> som du vill arbeta med</li>
|
||||
<li><strong>Klicka på bokmärket</strong> ✨ LinkedIn AI</li>
|
||||
<li><strong>Välj funktion</strong> i popup-menyn som dyker upp</li>
|
||||
<li><strong>Claude öppnas automatiskt</strong> med din text!</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="steps">
|
||||
<h2>💡 Tips & användningsområden:</h2>
|
||||
<ol>
|
||||
<li><strong>Snabbläsa rapporter:</strong> Markera långa texter → ⚡ Analysera → Få essensen på 30 sekunder</li>
|
||||
<li><strong>LinkedIn-innehåll:</strong> Se intressant inlägg → Markera → 🧠 Generera → Få djupt perspektiv</li>
|
||||
<li><strong>Utveckla idéer:</strong> Skriv ner tanke → Markera → 💡 Skapa från idé → Fullt inlägg</li>
|
||||
<li><strong>Research-sprint:</strong> Analysera 10 papers på 20 minuter istället för 5 timmar</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="alert" style="background: #e8f5e9; border-color: #4caf50; color: #2e7d32;">
|
||||
<strong>✅ Säkerhet & Integritet:</strong>
|
||||
Detta verktyg läser bara markerad text och öppnar Claude.ai. Ingen data skickas till tredje part, sparas eller loggas. All kod är öppen och kan granskas på Gitea.
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p><strong>Wolfnova Innovation</strong></p>
|
||||
<p>www.wolfnova.ai</p>
|
||||
<p style="margin-top: 10px; font-size: 12px;">
|
||||
Har du problem? Kontakta support eller läs dokumentationen på
|
||||
<a href="https://wolfnova.ai/gitea/wolfnova/linkedin-ai-tools" style="color: #2c5aa0;">Gitea</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Visa instruktion när användaren försöker klicka istället för dra
|
||||
document.querySelector('.bookmarklet').addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
alert('💡 Tips: Dra denna knapp till din bokmärkesfält istället för att klicka på den!\n\nVisa bokmärkesfältet med Ctrl+Shift+B (Windows) eller Cmd+Shift+B (Mac).');
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
310
linkedin-ai.js
Normal file
310
linkedin-ai.js
Normal file
@@ -0,0 +1,310 @@
|
||||
/**
|
||||
* LinkedIn AI-Text Generator v2.0
|
||||
* Wolfnova Innovation
|
||||
*
|
||||
* Detta script körs när bookmarklet aktiveras
|
||||
*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
// Hämta markerad text
|
||||
const selectedText = window.getSelection().toString().trim();
|
||||
|
||||
if (!selectedText) {
|
||||
alert('❌ Markera text först innan du använder LinkedIn AI!');
|
||||
return;
|
||||
}
|
||||
|
||||
// Definiera alla prompts
|
||||
const prompts = [
|
||||
{
|
||||
emoji: '🧠',
|
||||
name: 'Generera LinkedIn Text',
|
||||
description: 'Filosofiskt och djupgående innehåll',
|
||||
prompt: `📱 Använd linkedin-content-system skillen för att skapa djupgående LinkedIn-innehåll.
|
||||
|
||||
🎯 Basera innehållet på denna text/idé:
|
||||
"""
|
||||
${selectedText}
|
||||
"""
|
||||
|
||||
Skapa ett filosofiskt, substansfullt LinkedIn-inlägg som:
|
||||
- Utforskar teknologi och samhälle från ett djupare perspektiv
|
||||
- Tänker i civilisatoriska tidsskalor, inte kvartalsmått
|
||||
- Bygger trovärdighet genom substans, inte buzz
|
||||
- Är anti-hype och djupt reflekterande
|
||||
- Ställer existentiella frågor
|
||||
|
||||
✨ Inkludera relevanta emojis där det känns naturligt.`
|
||||
},
|
||||
{
|
||||
emoji: '💡',
|
||||
name: 'Skapa från idé',
|
||||
description: 'Utforska och utveckla en tanke',
|
||||
prompt: `💡 Använd linkedin-content-system skillen.
|
||||
|
||||
Jag har denna tanke/idé:
|
||||
"""
|
||||
${selectedText}
|
||||
"""
|
||||
|
||||
Hjälp mig att utforska och utveckla detta till ett genomtänkt LinkedIn-inlägg som:
|
||||
- Går djupare än ytan
|
||||
- Kopplar till större sammanhang
|
||||
- Balanserar flera perspektiv
|
||||
- Bygger på filosofi och historia där relevant
|
||||
- Talar till beslutsfattare och systemtänkare
|
||||
|
||||
✨ Inkludera emojis där passande.`
|
||||
},
|
||||
{
|
||||
emoji: '🔄',
|
||||
name: 'Omarbeta',
|
||||
description: 'Anpassa befintlig text',
|
||||
prompt: `🔄 Använd linkedin-content-system skillen.
|
||||
|
||||
Omarbeta denna text till LinkedIn-format som följer Wolfnovas filosofi:
|
||||
"""
|
||||
${selectedText}
|
||||
"""
|
||||
|
||||
Behåll kärnbudskapet men fördjupa perspektivet:
|
||||
- Mer filosofisk reflektion
|
||||
- Långsiktigt tänkande
|
||||
- Systemiskt perspektiv
|
||||
- Mindre hype, mer substans
|
||||
- Ställ djupare frågor
|
||||
|
||||
✨ Inkludera emojis där naturligt.`
|
||||
},
|
||||
{
|
||||
emoji: '⚡',
|
||||
name: 'Analysera (Bionic Reading)',
|
||||
description: 'Komprimerad analys i skannbart format',
|
||||
prompt: `⚡ KOMPRIMERAD ANALYS I BIONIC READING FORMAT
|
||||
|
||||
Analysera denna text/rapport och presentera essensen i bionic reading-format:
|
||||
"""
|
||||
${selectedText}
|
||||
"""
|
||||
|
||||
📊 INSTRUKTIONER:
|
||||
|
||||
1. EXTRAHERA ESSENSEN:
|
||||
- Identifiera kärnbudskap och huvudpoänger
|
||||
- Ta bort fluff och upprepningar
|
||||
- Komprimera till det väsentliga (max 30% av originallängd)
|
||||
|
||||
2. STRUKTURERA TYDLIGT:
|
||||
- Börja med 1-mening sammanfattning
|
||||
- Bullet points för huvudpoänger
|
||||
- Viktigaste insikter först
|
||||
|
||||
3. FORMATERA I BIONIC READING:
|
||||
- **Fet**stil på första delen av varje viktigt ord
|
||||
- Gör texten **skan**nbar och **snabb**läst
|
||||
- Hjäl**per** öga**t** att fix**a** snab**bare**
|
||||
- Exemp**el:** "Syst**em** kräv**er** helhets**syn** för **att** funk**era** stab**ilt**"
|
||||
|
||||
4. INKLUDERA:
|
||||
- 🎯 Huvudbudskap (1 mening)
|
||||
- 💡 Nyckelinsikter (3-5 punkter)
|
||||
- ⚠️ Varningar/risker (om relevanta)
|
||||
- ✅ Slutsats/rekommendation
|
||||
|
||||
5. ANVÄND EMOJIS för visuell struktur
|
||||
|
||||
Målet: Läsaren ska kunna skanna texten på 30 sekunder och få ALL viktig information!`
|
||||
}
|
||||
];
|
||||
|
||||
// Skapa modal
|
||||
const modal = createModal(prompts);
|
||||
document.body.appendChild(modal);
|
||||
|
||||
/**
|
||||
* Skapa modal UI
|
||||
*/
|
||||
function createModal(prompts) {
|
||||
const modal = document.createElement('div');
|
||||
modal.id = 'wolfnova-linkedin-ai-modal';
|
||||
modal.style.cssText = `
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 8px 32px rgba(0,0,0,0.3);
|
||||
padding: 24px;
|
||||
z-index: 999999;
|
||||
min-width: 420px;
|
||||
max-width: 90vw;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
`;
|
||||
|
||||
// Header
|
||||
const header = document.createElement('h3');
|
||||
header.style.cssText = `
|
||||
margin: 0 0 16px;
|
||||
color: #333;
|
||||
font-size: 18px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
`;
|
||||
header.innerHTML = `
|
||||
<span>✨ AI-Text Generator</span>
|
||||
<span style="font-size: 12px; color: #999;">v2.0 - Wolfnova</span>
|
||||
`;
|
||||
modal.appendChild(header);
|
||||
|
||||
// Buttons för varje prompt
|
||||
prompts.forEach((promptData, index) => {
|
||||
const button = createButton(promptData, () => {
|
||||
document.body.removeChild(modal);
|
||||
openClaude(promptData.prompt);
|
||||
});
|
||||
modal.appendChild(button);
|
||||
});
|
||||
|
||||
// Close button
|
||||
const closeBtn = document.createElement('button');
|
||||
closeBtn.textContent = '✕ Stäng';
|
||||
closeBtn.style.cssText = `
|
||||
width: 100%;
|
||||
padding: 8px;
|
||||
margin-top: 16px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 6px;
|
||||
background: #f5f5f5;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
transition: background 0.2s;
|
||||
`;
|
||||
closeBtn.onmouseover = () => closeBtn.style.background = '#e0e0e0';
|
||||
closeBtn.onmouseout = () => closeBtn.style.background = '#f5f5f5';
|
||||
closeBtn.onclick = () => document.body.removeChild(modal);
|
||||
modal.appendChild(closeBtn);
|
||||
|
||||
return modal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skapa knapp för varje alternativ
|
||||
*/
|
||||
function createButton(promptData, onClick) {
|
||||
const button = document.createElement('button');
|
||||
button.style.cssText = `
|
||||
width: 100%;
|
||||
padding: 12px 16px;
|
||||
margin: 8px 0;
|
||||
border: 2px solid #e0e0e0;
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
transition: all 0.2s;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
`;
|
||||
|
||||
button.innerHTML = `
|
||||
<div style="display: flex; align-items: center; gap: 10px;">
|
||||
<span style="font-size: 20px;">${promptData.emoji}</span>
|
||||
<strong style="flex: 1;">${promptData.name}</strong>
|
||||
</div>
|
||||
<div style="font-size: 11px; color: #666; margin-left: 30px;">
|
||||
${promptData.description}
|
||||
</div>
|
||||
`;
|
||||
|
||||
button.onmouseover = () => {
|
||||
button.style.background = '#f0f7ff';
|
||||
button.style.borderColor = '#2c5aa0';
|
||||
};
|
||||
button.onmouseout = () => {
|
||||
button.style.background = '#fff';
|
||||
button.style.borderColor = '#e0e0e0';
|
||||
};
|
||||
button.onclick = onClick;
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
/**
|
||||
* Öppna Claude med prompt
|
||||
*/
|
||||
function openClaude(prompt) {
|
||||
const claudeUrl = `https://claude.ai/new?q=${encodeURIComponent(prompt)}`;
|
||||
window.open(claudeUrl, '_blank');
|
||||
|
||||
// Visa notifikation
|
||||
showNotification('✨ Öppnar Claude AI med din markerade text!');
|
||||
}
|
||||
|
||||
/**
|
||||
* Visa notifikation
|
||||
*/
|
||||
function showNotification(message) {
|
||||
const notification = document.createElement('div');
|
||||
notification.style.cssText = `
|
||||
position: fixed;
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white;
|
||||
padding: 16px 24px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
|
||||
z-index: 9999999;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
animation: slideIn 0.3s ease-out;
|
||||
`;
|
||||
|
||||
notification.textContent = message;
|
||||
document.body.appendChild(notification);
|
||||
|
||||
// Auto-remove efter 3 sekunder
|
||||
setTimeout(() => {
|
||||
notification.style.animation = 'slideOut 0.3s ease-out';
|
||||
setTimeout(() => notification.remove(), 300);
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
// Lägg till CSS för animationer (om inte redan finns)
|
||||
if (!document.getElementById('wolfnova-animations')) {
|
||||
const style = document.createElement('style');
|
||||
style.id = 'wolfnova-animations';
|
||||
style.textContent = `
|
||||
@keyframes slideIn {
|
||||
from {
|
||||
transform: translateX(400px);
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
@keyframes slideOut {
|
||||
from {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
to {
|
||||
transform: translateX(400px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
|
||||
console.log('✅ LinkedIn AI-Text Generator v2.0 aktiverad!');
|
||||
})();
|
||||
Reference in New Issue
Block a user