ChatGPT 保存對話

將對話保存為 .txt 文件

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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,人民的勤务员 <[email protected]>
// @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)
})()