Skip to content

Gabizoc/Scrip

Repository files navigation

Scrip

Transforme tes photos de notes manuscrites en Markdown structure, synchronise avec Obsidian.

photo  ->  IA vision  ->  Markdown  ->  vault Obsidian


Node.js React Vite Tailwind Gratuit Obsidian Licence


Table des matieres


Apercu

Scrip est une PWA qui transforme automatiquement tes photos de cours en notes Markdown structurees, puis les synchronise avec ton vault Obsidian via WebDAV.

[Photo]  ->  [OCR + IA vision]  ->  [Markdown structure]  ->  [Obsidian vault]
                    |
          Structuration automatique
          Correction OCR contextuelle
          Regions visuelles detectees

100% gratuit

Composant Option gratuite
OCR + structuration Ollama - gemma4:31b-cloud en cloud, sans GPU (recommande)
Alt. cloud Google AI Studio - Gemini avec quota genereux
Hebergement VPS ~3-5 EUR/mois, ou en local
Sync Obsidian WebDAV integre, aucun service tiers

Config recommandee : PIPELINE_MODE=ollama + OLLAMA_MODEL=gemma4:31b-cloud - aucune cle API requise.


Configuration IA

Choisis ton provider selon tes besoins - tu peux en activer plusieurs, Scrip bascule automatiquement :

Ollama  -  recommande, 100% gratuit

Les modeles :cloud sont heberges sur les serveurs Ollama. Pas de GPU, pas de frais, pas de cle API.

Linux (serveur) :

curl -fsSL https://ollama.com/install.sh | sh
systemctl enable ollama && systemctl start ollama
ollama pull gemma4:31b-cloud

Mac / Windows : telecharger sur ollama.com, puis :

ollama pull gemma4:31b-cloud

Modeles recommandes - voir tous les modeles vision+cloud :

Modele Qualite Quota
gemma4:31b-cloud Tres bon sur le francais Modere - recommande
qwen3-vl:32b-cloud Excellent sur tableaux et schemas Eleve
qwen3.5:cloud Tres bonne comprehension Modere+

.env :

OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=gemma4:31b-cloud
OLLAMA_VALIDATION=true
Google Gemini  -  quota gratuit genereux
  1. Va sur aistudio.google.com/apikey
  2. Clique Create API key - pas de carte bancaire requise
  3. Copie dans .env :
GOOGLE_API_KEY=ta_cle_ici

Scrip essaie gemini-2.5-flash en premier et bascule automatiquement sur gemini-1.5-flash-latest puis gemini-1.5-flash-8b si le quota est atteint.

NVIDIA Build  -  quota offert a la creation
  1. Cree un compte sur build.nvidia.com
  2. Genere une cle dans API Keys
  3. Copie dans .env :
PIPELINE_MODE=nvidia
NVIDIA_API_KEY=ta_cle_ici
Mistral  -  OCR manuscrit dedie

Utilise pixtral-large-latest pour l'OCR des notes manuscrites - excellent sur l'ecriture a la main.

  1. Cree un compte sur console.mistral.ai
  2. Genere une cle dans API Keys
  3. Copie dans .env :
PIPELINE_MODE=mistral
MISTRAL_API_KEY=ta_cle_ici
OpenRouter  -  dizaines de modeles gratuits

OpenRouter donne acces a des dizaines de modeles, dont plusieurs gratuits (suffixe :free).

  1. Cree un compte sur openrouter.ai
  2. Cree une cle dans Keys
  3. Copie dans .env :
OPENROUTER_API_KEY=ta_cle_ici

Modeles gratuits recommandes (configurables via OPENROUTER_VISION_MODEL) :

  • google/gemma-4-26b-a4b-it:free
  • google/gemma-4-31b-it:free
  • meta-llama/llama-3.3-70b-instruct:free

Scrip bascule sur openrouter/auto si la limite journaliere est atteinte.


Stack

Couche Technologies
Backend Node.js 20, Express, lowdb (JSON)
Frontend React 18, Vite, Tailwind CSS
IA Ollama / Google Gemini / NVIDIA / Mistral / OpenRouter
Sync WebDAV natif, compatible Obsidian Remotely Save

Installation

Prerequis : Node.js 20+, Ollama (recommande, gratuit)

git clone https://github.com/Gabizoc/Scrip.git
cd Scrip
chmod +x setup.sh && ./setup.sh

Le script installe toutes les dependances, pose les questions de configuration (auth, pipeline, cles API, modeles) et genere le .env automatiquement.

Installation manuelle (sans le script)
cp .env.example .env
# Editer .env manuellement
npm install
cd backend && npm install && cd ..
cd frontend && npm install && npm run build && cd ..

Minimum requis dans .env : AUTH_PASSWORD, SESSION_SECRET


Configuration

Copier .env.example en .env et remplir :

Variable Requis Description
AUTH_PASSWORD oui Mot de passe pour se connecter
SESSION_SECRET oui Secret aleatoire (32+ chars)
PUBLIC_URL non URL publique (pour les liens WebDAV)
GOOGLE_API_KEY non Cle Google AI Studio pour Gemini
OLLAMA_BASE_URL non URL du serveur Ollama
PIPELINE_MODE non auto (defaut) / ollama / google / nvidia / mistral

Generer un SESSION_SECRET :

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Deploiement

Developpement local
cd backend && npm install && cd ..
npm run dev

Ouvre http://localhost:5000

Le frontend est servi par Vite en dev - pas besoin de le builder.

Production (VPS + PM2)
cd backend && npm install && cd ..
cd frontend && npm run build && cd ..
pm2 start ecosystem.config.cjs

Reset de la base de donnees :

node backend/scripts/reset-db.js
Nginx
cp nginx/scrip.conf.example /etc/nginx/sites-available/scrip
# Editer le fichier et remplacer YOUR_DOMAIN par ton domaine
ln -s /etc/nginx/sites-available/scrip /etc/nginx/sites-enabled/scrip
nginx -t && systemctl reload nginx
HTTPS avec Certbot (Let's Encrypt)
apt install certbot python3-certbot-nginx
certbot --nginx -d ton-domaine.com

Certbot modifie automatiquement la config Nginx et renouvelle le certificat via un cron. Pour verifier le renouvellement automatique :

certbot renew --dry-run

Sync Obsidian

  1. Installer le plugin Remotely Save dans Obsidian
  2. Choisir WebDAV, entrer l'URL : https://ton-domaine.com/webdav
  3. Identifiant et mot de passe : configures dans Parametres > WebDAV
  4. Remote base dir : meme valeur que "Dossier de synchronisation" dans Parametres

Reglages recommandes dans Remotely Save :

Parametre Valeur recommandee
Synchronisation automatique au demarrage Une fois, 1 seconde apres le demarrage
Sync a la sauvegarde (experimental) Activer
Annuler la sync si modification superieure a % 100 (protection desactivee)

Prompts IA personnalises

Ajouter un fichier dans backend/prompts/ en suivant le template prompt.example.js :

export const name = 'Ma matiere';
export const prompt = `Ton prompt personnalise...`;

Il apparait automatiquement dans le dropdown lors de la creation d'une matiere.


Questions / Support

Un bug ? Une question sur l'installation ? Tu veux adapter Scrip a ta propre utilisation ?

D'autres projets disponibles sur gabizoc.fr.

About

Transforme tes photos de cours en Markdown structuré, synchronisé avec Obsidian

Topics

Resources

License

Stars

4 stars

Watchers

0 watching

Forks

Contributors