ℹ️ Versione 1.2 – Questa release introduce un'ulteriore robustezza contro i cambiamenti del DOM di ChatGPT, così l'export rimane affidabile anche dopo gli aggiornamenti dell'interfaccia.
🦊 Disponibile ora su Firefox Add-ons
Estensione Firefox (Manifest V2) pensata per esportare una conversazione di ChatGPT in Markdown con un singolo clic, direttamente dall'interfaccia ufficiale di ChatGPT/ChatGPT.com. Il risultato viene mostrato in una tendina laterale in-page da cui è possibile copiare, aggiornare o chiudere il pannello senza ricaricare la pagina.
- Side panel contestuale – Il pannello viene iniettato nella pagina corrente e può essere aperto/chiuso con l'icona dell'estensione.
- Aggiornamento on-demand – Rigenera il Markdown della conversazione ogni volta che apri il pannello o premi "Aggiorna".
- Copia negli appunti – Copia l'intero contenuto Markdown con feedback visivo sullo stato dell'operazione.
- Parsing robusto – I selettori di fallback assicurano la compatibilità con i cambi DOM di ChatGPT.
- Serializzazione configurabile – Supporto per diversi "flavour" Markdown (Base, GFM, Obsidian) con gestione di tabelle, code fence e blocchi matematici.
- Privacy by design – Nessuna chiamata esterna: l'intero export avviene localmente nel browser.
- Apri Firefox e visita
about:debugging
. - Seleziona Questo Firefox nella sidebar.
- Clicca su Carica componente aggiuntivo temporaneo….
- Seleziona il file
manifest.json
contenuto nella cartella del progetto. - Vai su chat.openai.com o chatgpt.com e premi l'icona dell'estensione per aprire il pannello.
ℹ️ Fino all'approvazione sullo store, questo è il metodo consigliato per provare l'estensione.
- Apri una conversazione ChatGPT.
- Premi l'icona di ChatGPT → Markdown nella toolbar di Firefox.
- La tendina laterale appare sulla destra con il contenuto formattato in Markdown.
- Usa i pulsanti Aggiorna, Copia o Chiudi in base alle necessità.
- Cliccando fuori dal pannello questo si chiuderà automaticamente.
chatgpt-md-sidepanel/
├── manifest.json # Configurazione dell'estensione
├── background.js # Gestione click sull'icona e messaggistica
├── content.js # Creazione UI, toggle del pannello e interazioni utente
├── utils/
│ ├── exporter.js # Coordinamento export + lettura preferenze flavour
│ ├── extractors.js # Selettori resilienti e detection ruolo messaggio
│ ├── markdown.js # (legacy) helper vari
│ └── markdownFlavours.js # Serializzazione Markdown con più flavour
└── icons/
├── icon-48.png
└── icon-96.png
Il modulo utils/markdownFlavours.js
espone una mappa flavours
con tre profili predefiniti:
base
: Markdown minimale con normalizzazione degli spazi (default).gfm
: GitHub Flavoured Markdown con supporto per tabelle e formule$…$
.obsidian
: pensato per Obsidian, evita la compressione delle nuove righe.
La preferenza viene letta da browser.storage.sync
(chiave markdownFlavour
). È possibile modificarla manualmente dalla console del browser:
await browser.storage.sync.set({ markdownFlavour: 'gfm' });
Il prossimo export userà automaticamente il nuovo flavour.
- Log: background e content script utilizzano
console.log
/console.error
; controlla il pannello di debug del componente aggiuntivo per i messaggi. - Hot reload rudimentale: se il content script non risponde al click, il background forza il
tab.reload()
come fallback. - Script modulari:
content.js
caricautils/exporter.js
dinamicamente tramiteimport()
per ridurre l'impatto iniziale.
Se l'estensione smette di leggere correttamente i messaggi dopo un aggiornamento dell'interfaccia ChatGPT:
- Aggiorna l'array
messageSelectors
inutils/extractors.js
con i nuovi selettori individuati. - Assicurati che
getMarkdownContainer
punti ancora al nodo che contiene il markup della risposta. - Verifica l'estrazione con
window.__exportConversation()
dalla console del sito.
activeTab
per interagire con la pagina corrente.clipboardWrite
per copiare negli appunti.storage
per ricordare il flavour Markdown preferito.- Accesso alle origin
https://chat.openai.com/*
ehttps://chatgpt.com/*
dove viene eseguito il content script.
- Posso usare l'estensione su Chromium? Attualmente il progetto è ottimizzato per Firefox (Manifest V2). Per Chromium servirebbe il porting a Manifest V3.
- È previsto un packaging automatico? Al momento no: l'installazione temporanea è sufficiente per i test durante la revisione.
- Dove segnalare bug/migliorie? Apri un'issue o contattami dal blog personale.
Realizzata con ❤️ per semplificare l'archiviazione delle chat più importanti.