您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
将对话保存为 .txt 文件
- // ==UserScript==
- // @name ChatGPT Save Conversation
- // @name:aa ChatGPTam walala
- // @name:ab ЧатГПТ Аицәажәара еиқәырхатәуп
- // @name:af Chatgpt stoor gesprek
- // @name:ak Chatgpt Sie Nkɔmmɔbɔ .
- // @name:am የውይይት ማቆሚያ ውይይት
- // @name:ar chatgpt حفظ المحادثة
- // @name:as Chatgpt কথোপকথন সংৰক্ষণ কৰক
- // @name:av ЧатГПТ Сохранить разговор
- // @name:ay Chatgpt ukax mä aruskipäwiwa.
- // @name:az ChatGPT Saxla Səs-küyü
- // @name:ba ChatGPT әңгәмәләшеү әңгәмә
- // @name:be Чатгпт захаваць размову
- // @name:bg Chatgpt Запазете разговор
- // @name:bh chatgpt बातचीत के बचाईं
- // @name:bm Chatgpt ka baro kɛ .
- // @name:bn চ্যাটজিপ্ট কথোপকথন সংরক্ষণ করুন
- // @name:bo ChatGPT སྲུང་སྐྱོབ།
- // @name:br ChatGPT Enrollañ ar gaozeadenn
- // @name:bs Chatgpt Sačuvaj razgovor
- // @name:ca Chatgpt desar la conversa
- // @name:ce ChatGPT Save къамел
- // @name:ceb Pag-istoryahanay sa Chatgpt
- // @name:ch IGIGPT Sa’
- // @name:ckb Chatgpt
- // @name:co Conversazione di Salva di ChatGPT
- // @name:cs CHATGPT Uložit konverzaci
- // @name:cv ЧатГПТ çăлăнăр калаçăва
- // @name:cy Chatgpt sgwrsio sgwrs
- // @name:da ChatGpt Save Conversation
- // @name:de Chatgpt speichern Gespräch
- // @name:dv CHATGPT ސޭވް ކޮންވާޝަން
- // @name:dz ChatGPT བློ་སླབ་སྲུངས།
- // @name:ee Chatgpt Ðe Dzeɖoɖo Ðe Ðoɖo Nu .
- // @name:el Chatgpt Αποθήκευση συνομιλίας
- // @name:en ChatGPT Save conversation
- // @name:en-GB ChatGPT Save conversation
- // @name:eo Chatgpt Konversacio
- // @name:es Chatgpt guardar conversación
- // @name:et Chatgpt salvestage vestlus
- // @name:eu Chatgpt-ek elkarrizketa gordetzea
- // @name:fa chatgpt مکالمه را ذخیره کنید
- // @name:ff ChatGPT Hisnu yeewtere
- // @name:fi Chatgpt Tallenna keskustelu
- // @name:fil Chatgpt i -save ang pag -uusap
- // @name:fj Na veivosaki ni Veitalanoa .
- // @name:fo ChatGPT Goym samrøða
- // @name:fr Chatppt enregistrer la conversation
- // @name:fr-CA Chatppt enregistrer la conversation
- // @name:fy Chatgpt bewarje petear
- // @name:ga Comhrá a shábháil comhrá
- // @name:gd Còmhradh Sàbhail còmhradh
- // @name:gl Chatgpt gardar conversa
- // @name:gn CHATGPT Ñongatu Ñomongeta .
- // @name:gsw-berne ChatGPT Save conversation
- // @name:gu ચેટગપ્ટ વાતચીત સાચવો
- // @name:gv ChatGPT Save
- // @name:ha Chattgt Ajiye hira
- // @name:he צ’טגפט שמור שיחה
- // @name:hi बातचीत सहेजें बातचीत
- // @name:hmn Chatgpt txuag kev sib tham
- // @name:hr Chatgpt spremi razgovor
- // @name:ht Chatgpt sove konvèsasyon
- // @name:hu Chatgpt mentse meg a beszélgetést
- // @name:hy CHATGPT Պահպանել խոսակցությունը
- // @name:id Chatgpt simpan percakapan
- // @name:ig Chatgwa eche nchedo
- // @name:is Chatgpt vistaðu samtal
- // @name:it CHATGPT Salva la conversazione
- // @name:iu ChatGPT Save ᓴᓂᕐᕙᐃᓂᖅ ᐅᖃᖃᑎᒌᖕᓂᖅ
- // @name:ja Chatgpt会話を保存します
- // @name:jv ChatGPT nyimpen obrolan
- // @name:ka Chatgpt შეინახეთ საუბარი
- // @name:kg ChatGPT ya kubumba disolo
- // @name:kk ChatGPT Сөйлесуді сақтаңыз
- // @name:kl ChatGPT Save oqaloqatigiinneq
- // @name:km ជជែកកំសាន្តការសន្ទនា
- // @name:kn ಚಾಟ್ಜಿಪಿಟಿ ಸಂಭಾಷಣೆಯನ್ನು ಉಳಿಸಿ
- // @name:ko Chatgpt 대화를 저장하십시오
- // @name:kr Zande ChatGPTbe
- // @name:ku Chatgpt danûstendinê xilas bike
- // @name:kv ЧатГПТ Сохранить сёрни
- // @name:ky Чатгып сүйлөшүү
- // @name:la Chatgpt nisi conversationem
- // @name:lb ChatGPT späichert Gespréich
- // @name:lg CHATGPT Teeka Emboozi .
- // @name:ln ChatGpt Bomba masolo .
- // @name:lo ສົນທະນາສົນທະນາ
- // @name:lt Chatgpt išsaugoti pokalbį
- // @name:lv Chatgpt Saglabāt sarunu
- // @name:mg Chatgpt Save resaka
- // @name:mh Kōjparok chat .
- // @name:mi Checkgpt Tiaki Korero
- // @name:mk Chatgpt Зачувај разговор
- // @name:ml ചാറ്റ്ഗേറ്റ് സംരക്ഷിക്കുക സംഭാഷണം
- // @name:mn CHALGPT-ийг хадгалах
- // @name:mo Chatgpt Salvați conversația
- // @name:mr Chatgpt संभाषण जतन करा
- // @name:ms Chatgpt simpan perbualan
- // @name:mt Chatgpt ħlief konversazzjoni
- // @name:my chatgpt စကားပြောပါ
- // @name:nb Chatgpt Lagre samtale
- // @name:ne कुराकानी बचत कुराकानी
- // @name:nl Chatgpt opslaan gesprek
- // @name:nr Umbuzo wezinhlobo we .
- // @name:ny ChatGTT Sungani zokambirana
- // @name:oc ChatGPT Enregistrar la conversacion
- // @name:om Chatgpt haasawa qusadhaa .
- // @name:or କଥାବାର୍ତ୍ତା ବାର୍ତ୍ତାଳାପ ସେଭ୍ କରନ୍ତୁ |
- // @name:os ChatGPT æрæвæрут ныхас
- // @name:pa ਗੱਲਬਾਤ ਸੇਵ
- // @name:pl Chatgpt Zapisz rozmowę
- // @name:ps خبرې کول خبرې کول
- // @name:pt Chatgpt Save conversa
- // @name:pt-BR Chatgpt Save conversa
- // @name:pt-PT Chatgpt Save conversa
- // @name:qu Chatgpt Waqaychay rimanakuy .
- // @name:rn Ikiyago ca ChatGPT kiza
- // @name:ro Chatgpt Salvați conversația
- // @name:ru Chatgpt сохранить разговор
- // @name:rw Ikiganiro Uzigame Ibiganiro
- // @name:sa गपशपं वीक्षते सम्भाषणम् .
- // @name:sd چيٽنگ کي سلائي گفتگو
- // @name:se ChatGPT Save ságastallan
- // @name:sg ChatGPT Save lisoro .
- // @name:sh ЦхатГПТ Сачувај разговор
- // @name:si චැසනස් සංවාදය සුරකින්න
- // @name:sk Chatgpt uložiť konverzáciu
- // @name:sl Chatgpt shrani pogovor
- // @name:sm Talatalanoaga Savet talanoaga
- // @name:sn Chatgpt chengetedza hurukuro
- // @name:so Sheekada sheekada sheekada
- // @name:sq Chatgpt ruaj bisedën
- // @name:sr ЦхатГПТ Сачувај разговор
- // @name:ss ChatGPT Gcina ingcoco
- // @name:st Potoloho ea Polelo
- // @name:su ChatGPT ngahemat paguneman
- // @name:sv Chatgpt spara konversation
- // @name:sw Chatgpt Hifadhi mazungumzo
- // @name:ta சாட்ஜ்ட் உரையாடலைச் சேமிக்கவும்
- // @name:te చాట్గ్ప్ట్ సంభాషణను సేవ్ చేయండి
- // @name:tg Chatgpt сӯҳбатро сарфа кунед
- // @name:th CHATGPT บันทึกการสนทนา
- // @name:ti chatgpt ዕላል ኣድሕን
- // @name:tk Söhbet söhbetdeşligi tygşytlaň
- // @name:tl Chatgpt i -save ang pag -uusap
- // @name:tn ChatGPT Boloka motlotlo
- // @name:to ChatGPT Save talanoa
- // @name:tr Chatgpt Sohbeti Kaydet
- // @name:ts Chatgpt Hlayisa Mbulavurisano .
- // @name:tt Шатгпт сөйләшүне саклагыз
- // @name:tw Chatgpt Sie Nkɔmmɔbɔ .
- // @name:ty Te aparauraa ChatGPT
- // @name:ug پاراڭلىشىش سۆھبەتنى ساقلاش
- // @name:uk Чатгпт Зберегти розмову
- // @name:ur چیٹ جی پی ٹی گفتگو کو بچائیں
- // @name:uz Chatgpt suhbatni saqlang
- // @name:ve ChatGPT Kha nyambedzano Vhulunga
- // @name:vi Chatgpt Lưu trò chuyện
- // @name:wo ChatGPT Save
- // @name:xh Incoko ye-Chatgppt
- // @name:yi טשאַטגפּט היט שמועס
- // @name:yo Fipamọ ibaraẹnisọrọ
- // @name:zh ChatGPT 保存对话
- // @name:zh-CN ChatGPT 保存对话
- // @name:zh-HK ChatGPT 保存對話
- // @name:zh-MO ChatGPT 保存對話
- // @name:zh-MY ChatGPT 保存对话
- // @name:zh-SG ChatGPT 保存对话
- // @name:zh-TW ChatGPT 保存對話
- // @name:zu I-Chatgpt Gcina ingxoxo
- // @name:es-419 Chatgpt guardar conversación
- // @description Save the conversation as a .txt file
- // @description:aa walal .txt faayilih innah
- // @description:ab Аицәажәара .txt фаилк аҳасабала еиқәырхатәуп
- // @description:af Stoor die gesprek as ’n .txt -lêer
- // @description:ak Fa nkɔmmɔbɔ no sie sɛ .txt fael .
- // @description:am ውይይቱን እንደ የ .Txt ፋይል ያስቀምጡ
- // @description:ar احفظ المحادثة كملف .txt
- // @description:as কথোপকথনক এটা .txt ফাইল হিচাপে সংৰক্ষণ কৰক
- // @description:av Хвасар гьабе гара-чӀвари .txt файл хӀисабалда
- // @description:ay Uka aruskipäwix .txt archiwjam imañamawa .
- // @description:az Söhbəti .txt faylı olaraq qeyd edin
- // @description:ba Һөйләшеүҙе .txt файлы булараҡ һаҡлау
- // @description:be Захавайце размову як файл .txt
- // @description:bg Запазете разговора като .txt файл
- // @description:bh बातचीत के .txt फाइल के रूप में सेव करीं
- // @description:bm Baro in mara i n’a fɔ .txt file .
- // @description:bn একটি .txt ফাইল হিসাবে কথোপকথনটি সংরক্ষণ করুন
- // @description:bo ཁ་བརྡ་དེ་.txtཡིག་ཆ་ལྟར་ཉར་ཚགས་བྱེད།
- // @description:br Enrollañ ar gaozeadenn evel ur restr .txt
- // @description:bs Spremite razgovor kao .txt datoteku
- // @description:ca Deseu la conversa com a fitxer .txt
- // @description:ce Къастаде къамел .txt файл санна .
- // @description:ceb I-save ang panag-istoryahanay ingon usa ka .txt File
- // @description:ch Guaha na biahi na i konbetsasion-ñiha gi .xy file .
- // @description:ckb گفتوگۆکە وەک فایلێکی .txt هەڵبگرە
- // @description:co Salvate a cunversazione cum’è un file .txt
- // @description:cs Uložit konverzaci jako soubor .txt
- // @description:cv Калаçăва .txt файл пек упрамалла
- // @description:cy Cadwch y sgwrs fel ffeil .txt
- // @description:da Gem samtalen som en .txt -fil
- // @description:de Speichern Sie die Konversation als .txt -Datei
- // @description:dv ވާހަކަ ދެއްކުން .txt ފައިލް އެއްގެ ގޮތުގައި ރައްކާކުރުން
- // @description:dz བློ་སླབ་འདི་ .txt ཡིག་སྣོད་སྦེ་སྲུང་བཞག་འབད།
- // @description:ee Dzra dzeɖoɖoa ɖo abe .txt faɛl ene .
- // @description:el Αποθηκεύστε τη συνομιλία ως αρχείο .txt
- // @description:en Save the conversation as a .txt file
- // @description:en-GB Save the conversation as a .txt file
- // @description:eo Konservu la konversacion kiel .txt -dosiero
- // @description:es Guarde la conversación como un archivo .txt
- // @description:es-419 Guarde la conversación como un archivo .txt
- // @description:et Salvestage vestlus .txt -failina
- // @description:eu Gorde elkarrizketa .txt fitxategi gisa
- // @description:fa مکالمه را به عنوان یک پرونده .txt ذخیره کنید
- // @description:ff Hisnu yeewtere ndee ko fiilde .txt
- // @description:fi Tallenna keskustelu .txt -tiedostona
- // @description:fil I -save ang pag -uusap bilang isang .txt file
- // @description:fj Me vakayagataki na veivosaki me vaka e dua na faile .txt .
- // @description:fo Goym samrøðuna sum eina .txt fílu
- // @description:fr Enregistrer la conversation en tant que fichier .txt
- // @description:fr-CA Enregistrer la conversation en tant que fichier .txt
- // @description:fy Bewarje it petear as in .txt-bestân
- // @description:ga Sábháil an comhrá mar chomhad .txt
- // @description:gd Sàbhail an còmhradh mar fhaidhle .Txt
- // @description:gl Garda a conversa como ficheiro .txt
- // @description:gn Eñongatu pe ñomongeta peteĩ .txt rembiapokueicha .
- // @description:gsw-berne Save the conversation as a .txt file
- // @description:gu વાતચીતને .txt ફાઇલ તરીકે સાચવો
- // @description:gv Save y cho-chowrey myr .txt file
- // @description:ha Ajiye tattaunawar azaman fayil .txt fayil
- // @description:he שמור את השיחה כקובץ .txt
- // @description:hi एक .txt फ़ाइल के रूप में बातचीत को सहेजें
- // @description:hmn Txuag cov kev sib tham raws li a .tXt cov ntaub ntawv
- // @description:hr Spremite razgovor kao .txt datoteku
- // @description:ht Sove konvèsasyon an kòm yon dosye .txt
- // @description:hu Mentse el a beszélgetést .txt fájlként
- // @description:hy Խոսքը պահեք որպես .txt ֆայլ
- // @description:id Simpan percakapan sebagai file .txt
- // @description:ig Chekwaa mkparịta ụka dị ka faịlụ .txt
- // @description:is Vistaðu samtalið sem .txt skrá
- // @description:it Salva la conversazione come file .txt
- // @description:iu ᓴᓂᕐᕙᐃᓗᑎᑦ ᐅᖃᖃᑎᒌᒍᑎᒥᒃ .txt ᑎᑎᖅᑲᖁᑎᒥᒃ
- // @description:ja .txtファイルとして会話を保存します
- // @description:jv Simpen pacelathon minangka file .txt
- // @description:ka შეინახეთ საუბარი .txt ფაილი
- // @description:kg Lunda disolo bonso fichier .txt .
- // @description:kk Сөйлесуді .txt файлы ретінде сақтаңыз
- // @description:kl Oqaloqatigiinneq .txt-imik filimik sipaarniaruk
- // @description:km រក្សាទុកការសន្ទនាជាឯកសារ .txt
- // @description:kn ಸಂಭಾಷಣೆಯನ್ನು .txt ಫೈಲ್ ಆಗಿ ಉಳಿಸಿ
- // @description:ko 대화를 .txt 파일로 저장하십시오
- // @description:kr Zandedəga .txt filero gənatə
- // @description:ku Gotûbêja wekî pelê .txt hilînin
- // @description:kv Сёрнисӧ видзӧй кыдзи .txt файл .
- // @description:ky Сүйлөшүүнү .txt файлы катары сактаңыз
- // @description:la Nisi colloquium ut a .txt lima
- // @description:lb Späichert d’Gespréich als .txt Datei
- // @description:lg Teeka emboozi nga fayiro ya .txt .
- // @description:ln Bomba lisolo lokola fisyé .txt .
- // @description:lo ບັນທຶກການສົນທະນາເປັນເອກະສານ .txt
- // @description:lt Išsaugokite pokalbį kaip .txt failą
- // @description:lv Saglabājiet sarunu kā .txt failu
- // @description:mg Tehirizo ny resaka ho rakitra. Kxt
- // @description:mh Kōjparok bwebwenato eo āinwōt juon file .
- // @description:mi Tiakina te korerorero hei tohu .txt
- // @description:mk Зачувајте го разговорот како датотека .txt
- // @description:ml സംഭാഷണം ഒരു .txt ഫയലായി സംരക്ഷിക്കുക
- // @description:mn Яриаг .txt файл болгон хадгал
- // @description:mo Salvați conversația ca fișier .txt
- // @description:mr संभाषण एक .txt फाईल म्हणून जतन करा
- // @description:ms Simpan perbualan sebagai fail .txt
- // @description:mt Issejvja l-konversazzjoni bħala fajl .txt
- // @description:my စကားဝိုင်းကို .txt ဖိုင်တစ်ခုအဖြစ်သိမ်းဆည်းပါ
- // @description:nb Lagre samtalen som en .txt -fil
- // @description:ne A.Txt फाईलको रूपमा कुराकानी बचत गर्नुहोस्
- // @description:nl Sla het gesprek op als een .txt -bestand
- // @description:nr Wahamba ubusuku umndeni.
- // @description:ny Sungani zokambirana monga .Txt fayilo
- // @description:oc Enregistratz la convèrsa coma un fichièr .txt .
- // @description:om Haasaa akka faayilii .txt tti saagi .
- // @description:or ବାର୍ତ୍ତାଳାପକୁ a .txt ଫାଇଲ୍ ଭାବରେ ସେଭ୍ କରନ୍ତୁ |
- // @description:os Ныхас .txt файлæй фервæзын кæнут.
- // @description:pa ਗੱਲਬਾਤ ਨੂੰ ਇੱਕ .txt ਫਾਈਲ ਦੇ ਤੌਰ ਤੇ ਸੁਰੱਖਿਅਤ ਕਰੋ
- // @description:pl Zapisz rozmowę jako plik .txt
- // @description:ps خبرې د .txt فایل په توګه خوندي کړئ
- // @description:pt Salve a conversa como um arquivo .txt
- // @description:pt-BR Salve a conversa como um arquivo .txt
- // @description:pt-PT Salve a conversa como um arquivo .txt
- // @description:qu Rimanakuyta .txt willañiqi hina waqaychay .
- // @description:rn Bika ikiyago nk’idosiye .txt
- // @description:ro Salvați conversația ca fișier .txt
- // @description:ru Сохраните разговор как файл .txt
- // @description:rw Bika ikiganiro nka dosiye .txt
- // @description:sa सम्भाषणं .txt सञ्चिकारूपेण रक्षन्तु ।
- // @description:sd گفتگو کي محفوظ ڪريو .txt فائل طور
- // @description:se Seastit ságastallama .txt-fiilan .
- // @description:sg Save lisoro ni tongana mbeni fichier .txt .
- // @description:sh Спремите разговор као .ткт датотеку
- // @description:si සංවාදය .txt ගොනුවක් ලෙස සුරකින්න
- // @description:sk Uložte konverzáciu ako súbor .txt
- // @description:sl Shranite pogovor kot datoteko .txt
- // @description:sm Sefe le talanoaga o se .txt faila
- // @description:sn Sevha iyo hurukuro seye .txt faira
- // @description:so Kaydi wada hadalka sida faylka .txt
- // @description:sq Ruani bisedën si një skedar .txt
- // @description:sr Спремите разговор као .ткт датотеку
- // @description:ss Gcina ingcoco njengefayela le-.txt
- // @description:st Boloka moqoqo joalo ka faele ea .TXT
- // @description:su Simpen paguneman salaku file .txt
- // @description:sv Spara konversationen som en .txt -fil
- // @description:sw Hifadhi mazungumzo kama faili ya .txt
- // @description:ta உரையாடலை .txt கோப்பாக சேமிக்கவும்
- // @description:te సంభాషణను .txt ఫైల్గా సేవ్ చేయండి
- // @description:tg Сӯҳбатро ҳамчун файли .txt захира кунед
- // @description:th บันทึกการสนทนาเป็นไฟล์. txt
- // @description:ti ነቲ ዕላል ከም .txt ፋይል ኣቐምጦ .
- // @description:tk Söhbetdeşligi .txt faýly hökmünde tygşytlaň
- // @description:tl I -save ang pag -uusap bilang isang .txt file
- // @description:tn Boloka motlotlo jaaka faele ya .txt
- // @description:to Fakahaofi ’a e talanoa ko ha faile .txt .
- // @description:tr Konuşmayı bir .txt dosyası olarak kaydedin
- // @description:ts Hlayisa mbulavurisano tanihi fayili ya .TXT .
- // @description:tt Сөйләшүне .txt файл итеп саклагыз
- // @description:tw Fa nkɔmmɔbɔ no sie sɛ .txt fael .
- // @description:ty A faanaho i te aparauraa mai te hoê kōnae .txt
- // @description:ug سۆھبەتنى بىردەك ساقلاش .txt ھۆججىتى سۈپىتىدە ساقلاڭ
- // @description:uk Збережіть розмову як файл .txt
- // @description:ur گفتگو کو .txt فائل کے بطور محفوظ کریں
- // @description:uz Suhbatni .Txt fayli sifatida saqlang
- // @description:ve Vhulungani nyambedzano sa faela ya .txt
- // @description:vi Lưu cuộc trò chuyện dưới dạng tệp .txt
- // @description:wo Jox waxtaan wi ni fichier .txt
- // @description:xh Gcina incoko njenge-.txt yefayile
- // @description:yi היט דעם שמועס ווי אַ. טקסט טעקע
- // @description:yo Ṣafipamọ ibaraẹnisọrọ bi faili .txt kan
- // @description:zh 将对话保存为 .txt 文件
- // @description:zh-CN 将对话保存为 .txt 文件
- // @description:zh-HK 將對話保存為 .txt 文件
- // @description:zh-MO 將對話保存為 .txt 文件
- // @description:zh-MY 将对话保存为 .txt 文件
- // @description:zh-SG 将对话保存为 .txt 文件
- // @description:zh-TW 將對話保存為 .txt 文件
- // @description:zu Gcina ingxoxo njengefayela le-.txt
- // @author Taylor-eOS,人民的勤务员 <china.qinwuyuan@gmail.com>
- // @namespace https://github.com/ChinaGodMan/UserScripts
- // @supportURL https://github.com/ChinaGodMan/UserScripts/issues
- // @homepageURL https://github.com/ChinaGodMan/UserScripts
- // @homepage https://github.com/ChinaGodMan/UserScripts
- // @license MIT
- // @match https://chatgpt.com/*
- // @match https://chat.deepseek.com/*
- // @icon https://raw.githubusercontent.com/ChinaGodMan/UserScriptsHistory/main/scriptsIcon/chatgpt-plus.png
- // @compatible chrome
- // @compatible firefox
- // @compatible edge
- // @compatible opera
- // @compatible safari
- // @compatible kiwi
- // @compatible qq
- // @compatible via
- // @compatible brave
- // @version 2025.6.3.1
- // ==/UserScript==
- (function () {
- 'use strict'
- function capitalizeRole(role) {
- if (role === 'user') return 'User'
- if (role === 'assistant') return 'Assistant'
- return role.charAt(0).toUpperCase() + role.slice(1)
- }
- function generateFileName(messages) {
- let raw = (document.querySelector('title') || {}).textContent
- if (raw) {
- let name = raw.trim()
- .slice(0, 40)
- return name || 'conversation'
- }
- let firstWords = messages[0].text.split(/\s+/).slice(0, 5).join(' ')
- let snippet = firstWords.toLowerCase()
- .replace(/[^a-z0-9 ]/g, '')
- .replace(/\s+/g, '_')
- .slice(0, 30)
- return snippet || 'conversation'
- }
- function saveConversation() {
- const containers = document.querySelectorAll('[data-message-id]')
- const messages = []
- containers.forEach(el => {
- const role = el.getAttribute('data-message-author-role')
- let content = el.querySelector('.whitespace-pre-wrap') || el.querySelector('.markdown')
- if (role && content) {
- let text = content.innerText.trim()
- messages.push({ role: capitalizeRole(role), text })
- }
- })
- if (!messages.length) {
- alert('No conversation found to save.')
- return
- }
- const body = messages.map(m => `${m.role}:\n${m.text}`).join('\n\n---\n\n')
- const blob = new Blob([body], { type: 'text/plain' })
- const url = URL.createObjectURL(blob)
- const a = document.createElement('a')
- a.href = url
- a.download = generateFileName(messages) + '.txt'
- document.body.appendChild(a)
- a.click()
- document.body.removeChild(a)
- URL.revokeObjectURL(url)
- }
- function createDownloadButton() {
- if (document.getElementById('save-convo-button')) return
- const btn = document.createElement('button')
- btn.id = 'save-convo-button'
- btn.title = 'Save conversation'
- btn.style.position = 'fixed'
- btn.style.top = '0'
- btn.style.left = '0'
- btn.style.width = '12px'
- btn.style.height = '30px'
- btn.style.backgroundColor = 'green'
- btn.style.borderRadius = '4px'
- btn.style.zIndex = 9999
- btn.style.cursor = 'pointer'
- btn.addEventListener('click', saveConversation)
- document.body.appendChild(btn)
- }
- const waitForBody = setInterval(() => {
- if (document.body && document.querySelector('[data-message-id]')) {
- clearInterval(waitForBody)
- createDownloadButton()
- }
- }, 500)
- })()