將 ChatGPT、Gemini、Grok、Claude 的聊天紀錄導出為 Markdown、JSON、CSV、TXT、HTML 格式。
// ==UserScript==
// @name Export ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:af UITVOER ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:am ኤክስፖርት ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ar تصدير ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:as এক্সপোর্ট ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:az İXRAC ET ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:be ЭКСПАРТ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:bg ЕКСПОРТИРАНЕ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:bn এক্সপোর্ট ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:bs IZVEZI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ca EXPORTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:cs EXPORTOVAT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:da EKSPORTER ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:de EXPORTIEREN ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:dz ཕྱིར་འདྲེན། ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:el ΕΞΑΓΩΓΗ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:en EXPORT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:en-GB EXPORT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:en-US EXPORT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:eo EKSPORTI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:es EXPORTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:es-419 EXPORTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:es-US EXPORTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:et EKSPORDI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:eu ESPORTATU ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:fa خروجی ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:fi VIE ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:fil I-EXPORT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:fr EXPORTER ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:fr-CA EXPORTER ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ga EASPUITÁIL ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:gl EXPORTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:gn EXPORTA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:gu એક્સપોર્ટ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ha FITARWA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:hi एक्सपोर्ट ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:hr IZVEZI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:hu EXPORTÁLÁS ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:hy ԱՐՏԱՀԱՆԵԼ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:id EKSPOR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ig BUPỤ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:is ÚTFLYTJA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:it ESPORTA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:iw ייצוא ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ja エクスポート ChatGPT/Gemini/Grok/Claude チャット -> MD, JSON, CSV, TXT, HTML
// @name:jv EKSPOR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ka ᲔᲥᲡᲞᲝᲠᲢᲘ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:kk ЭКСПОРТТАУ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:km នាំចេញ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:kn ರಫ್ತು ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ko 내보내기 ChatGPT/Gemini/Grok/Claude 채팅 -> MD, JSON, CSV, TXT, HTML
// @name:ky ЭКСПОРТТОО ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:lo ສົ່ງອອກ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:lt EKSPORTUOTI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:lv EKSPORTĒT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:mg HONDRAINA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:mk ЕКСПОРТ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ml കയറ്റുമതി ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:mn ЭКСПОРТЛОХ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:mr निर्यात ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ms EKSPORT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:mt ESPORTA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:my ထုတ်ယူ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ne निर्यात ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:nl EXPORTEREN ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:no EKSPORTER ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:om ERGUU ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:or ଏକ୍ସପୋର୍ଟ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:pa ਨਿਰਯਾਤ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:pl EKSPORTUJ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ps صادرول ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:pt EXPORTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:pt-BR EXPORTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:pt-PT EXPORTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ro EXPORTĂ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ru ЭКСПОРТ ChatGPT/Gemini/Grok/Claude Чат -> MD, JSON, CSV, TXT, HTML
// @name:rw KOHEREZA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:si අපනයනය ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:sk EXPORTOVAŤ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:sl IZVOZI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:sn TUMIRA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:so DHOOFI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:sq EKSPORTO ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:sr IZVEZI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:sr-Latn IZVEZI ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:st ROMELA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:sv EXPORTERA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:sw HAMISHA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ta ஏற்றுமதி ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:te ఎగుమతి ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:tg СОДИРОТ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:th ส่งออก ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ti ሰደድ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:tk EKSPORT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:tr DIŞA AKTAR ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ug چىقىرىش ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:uk ЕКСПОРТУВАТИ ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:ur برآمد ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:uz EKSPORT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:vi XUẤT ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:yo ṢE IṢIPO ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @name:zh-CN 导出 ChatGPT/Gemini/Grok/Claude 聊天记录 -> MD, JSON, CSV, TXT, HTML
// @name:zh-HK 導出 ChatGPT/Gemini/Grok/Claude 聊天紀錄 -> MD, JSON, CSV, TXT, HTML
// @name:zh-TW 導出 ChatGPT/Gemini/Grok/Claude 聊天紀錄 -> MD, JSON, CSV, TXT, HTML
// @name:zu THUMELA ChatGPT/Gemini/Grok/Claude Chat -> MD, JSON, CSV, TXT, HTML
// @description Export ChatGPT, Gemini, Grok, Claude conversations to Markdown, JSON, CSV, TXT, HTML
// @description:af UITVOER ChatGPT, Gemini, Grok, Claude gesprekke na Markdown, JSON, CSV, TXT, HTML
// @description:am ኤክስፖርት ChatGPT, Gemini, Grok, Claude ንግግሮች ወደ Markdown, JSON, CSV, TXT, HTML
// @description:ar تصدير محادثات ChatGPT و Gemini و Grok و Claude إلى Markdown و JSON و CSV و TXT و HTML
// @description:as এক্সপোর্ট ChatGPT, Gemini, Grok, Claude কথাবতৰা Markdown, JSON, CSV, TXT, HTML লৈ
// @description:az ChatGPT, Gemini, Grok, Claude söhbətlərini Markdown, JSON, CSV, TXT, HTML olaraq ixrac edin
// @description:be Экспарт размоў ChatGPT, Gemini, Grok, Claude у Markdown, JSON, CSV, TXT, HTML
// @description:bg Експортирайте разговорите от ChatGPT, Gemini, Grok, Claude в Markdown, JSON, CSV, TXT, HTML
// @description:bn এক্সপোর্ট ChatGPT, Gemini, Grok, Claude কথোপকথন Markdown, JSON, CSV, TXT, HTML-এ
// @description:bs Izvezi ChatGPT, Gemini, Grok, Claude razgovore u Markdown, JSON, CSV, TXT, HTML
// @description:ca Exporta les converses de ChatGPT, Gemini, Grok, Claude a Markdown, JSON, CSV, TXT, HTML
// @description:cs Exportujte konverzace ChatGPT, Gemini, Grok, Claude do Markdown, JSON, CSV, TXT, HTML
// @description:da Eksporter ChatGPT, Gemini, Grok, Claude samtaler til Markdown, JSON, CSV, TXT, HTML
// @description:de Exportieren Sie ChatGPT-, Gemini-, Grok-, Claude-Unterhaltungen in Markdown, JSON, CSV, TXT, HTML
// @description:dz ཕྱིར་འདྲེན། ChatGPT, Gemini, Grok, Claude ཁ་བརྡ་ Markdown, JSON, CSV, TXT, HTML ལུ།
// @description:el Εξαγωγή συνομιλιών ChatGPT, Gemini, Grok, Claude σε Markdown, JSON, CSV, TXT, HTML
// @description:en Export ChatGPT, Gemini, Grok, Claude conversations to Markdown, JSON, CSV, TXT, HTML
// @description:en-GB Export ChatGPT, Gemini, Grok, Claude conversations to Markdown, JSON, CSV, TXT, HTML
// @description:en-US Export ChatGPT, Gemini, Grok, Claude conversations to Markdown, JSON, CSV, TXT, HTML
// @description:eo Eksportu konversaciojn de ChatGPT, Gemini, Grok, Claude al Markdown, JSON, CSV, TXT, HTML
// @description:es Exporta conversaciones de ChatGPT, Gemini, Grok, Claude a Markdown, JSON, CSV, TXT, HTML
// @description:es-419 Exporta conversaciones de ChatGPT, Gemini, Grok, Claude a Markdown, JSON, CSV, TXT, HTML
// @description:es-US Exporta conversaciones de ChatGPT, Gemini, Grok, Claude a Markdown, JSON, CSV, TXT, HTML
// @description:et Ekspordi ChatGPT, Gemini, Grok, Claude vestlused Markdowni, JSONi, CSV-sse, TXTi, HTMLi
// @description:eu Esportatu ChatGPT, Gemini, Grok, Claude elkarrizketak Markdown, JSON, CSV, TXT, HTML formatuetara
// @description:fa خروجی مکالمات ChatGPT، Gemini، Grok، Claude به Markdown، JSON، CSV، TXT، HTML
// @description:fi Vie ChatGPT-, Gemini-, Grok-, Claude-keskustelut Markdown-, JSON-, CSV-, TXT- tai HTML-muotoon
// @description:fil I-export ang mga pag-uusap sa ChatGPT, Gemini, Grok, Claude sa Markdown, JSON, CSV, TXT, HTML
// @description:fr Exportez les conversations ChatGPT, Gemini, Grok, Claude en Markdown, JSON, CSV, TXT, HTML
// @description:fr-CA Exportez les conversations ChatGPT, Gemini, Grok, Claude en Markdown, JSON, CSV, TXT, HTML
// @description:ga Easpórtáil comhráite ChatGPT, Gemini, Grok, Claude go Markdown, JSON, CSV, TXT, HTML
// @description:gl Exportar conversas de ChatGPT, Gemini, Grok, Claude a Markdown, JSON, CSV, TXT, HTML
// @description:gn Exporta ñemongeta ChatGPT, Gemini, Grok, Claude Markdown, JSON, CSV, TXT, HTML-pe
// @description:gu ChatGPT, Gemini, Grok, Claude વાતચીતોને Markdown, JSON, CSV, TXT, HTML માં એક્સપોર્ટ કરો
// @description:ha Fitar da tattaunawar ChatGPT, Gemini, Grok, Claude zuwa Markdown, JSON, CSV, TXT, HTML
// @description:hi ChatGPT, Gemini, Grok, Claude वार्तालापों को Markdown, JSON, CSV, TXT, HTML में एक्सपोर्ट करें
// @description:hr Izvezi ChatGPT, Gemini, Grok, Claude razgovore u Markdown, JSON, CSV, TXT, HTML
// @description:hu Exportálja a ChatGPT, Gemini, Grok, Claude beszélgetéseket Markdown, JSON, CSV, TXT, HTML formátumba
// @description:hy Արտահանել ChatGPT, Gemini, Grok, Claude խոսակցությունները Markdown, JSON, CSV, TXT, HTML
// @description:id Ekspor percakapan ChatGPT, Gemini, Grok, Claude ke Markdown, JSON, CSV, TXT, HTML
// @description:ig Bupụ mkparịta ụka ChatGPT, Gemini, Grok, Claude na Markdown, JSON, CSV, TXT, HTML
// @description:is Flytja út ChatGPT, Gemini, Grok, Claude samtöl í Markdown, JSON, CSV, TXT, HTML
// @description:it Esporta le conversazioni di ChatGPT, Gemini, Grok, Claude in Markdown, JSON, CSV, TXT, HTML
// @description:iw ייצוא שיחות ChatGPT, Gemini, Grok, Claude ל-Markdown, JSON, CSV, TXT, HTML
// @description:ja ChatGPT、Gemini、Grok、Claudeの会話をMarkdown、JSON、CSV、TXT、HTMLにエクスポート
// @description:jv Ekspor obrolan ChatGPT, Gemini, Grok, Claude menyang Markdown, JSON, CSV, TXT, HTML
// @description:ka Ექსპორტი ChatGPT, Gemini, Grok, Claude საუბრების Markdown, JSON, CSV, TXT, HTML-ში
// @description:kk ChatGPT, Gemini, Grok, Claude сұхбаттарын Markdown, JSON, CSV, TXT, HTML форматына экспорттау
// @description:km នាំចេញការសន្ទនា ChatGPT, Gemini, Grok, Claude ទៅជា Markdown, JSON, CSV, TXT, HTML
// @description:kn ChatGPT, Gemini, Grok, Claude ಸಂಭಾಷಣೆಗಳನ್ನು Markdown, JSON, CSV, TXT, HTML ಗೆ ರಫ್ತು ಮಾಡಿ
// @description:ko ChatGPT, Gemini, Grok, Claude 대화를 Markdown, JSON, CSV, TXT, HTML로 내보내기
// @description:ky ChatGPT, Gemini, Grok, Claude баарлашууларын Markdown, JSON, CSV, TXT, HTMLге экспорттоо
// @description:lo ສົ່ງອອກບົດສົນທະນາ ChatGPT, Gemini, Grok, Claude ເປັນ Markdown, JSON, CSV, TXT, HTML
// @description:lt Eksportuokite ChatGPT, Gemini, Grok, Claude pokalbius į Markdown, JSON, CSV, TXT, HTML
// @description:lv Eksportēt ChatGPT, Gemini, Grok, Claude sarunas uz Markdown, JSON, CSV, TXT, HTML
// @description:mg Hondrana ny resaka ChatGPT, Gemini, Grok, Claude ho Markdown, JSON, CSV, TXT, HTML
// @description:mk Експортирајте разговори од ChatGPT, Gemini, Grok, Claude во Markdown, JSON, CSV, TXT, HTML
// @description:ml ChatGPT, Gemini, Grok, Claude സംഭാഷണങ്ങൾ Markdown, JSON, CSV, TXT, HTML എന്നിവയിലേക്ക് കയറ്റുമതി ചെയ്യുക
// @description:mn ChatGPT, Gemini, Grok, Claude харилцан яриаг Markdown, JSON, CSV, TXT, HTML руу экспортлох
// @description:mr ChatGPT, Gemini, Grok, Claude संभाषणे Markdown, JSON, CSV, TXT, HTML मध्ये निर्यात करा
// @description:ms Eksport perbualan ChatGPT, Gemini, Grok, Claude ke Markdown, JSON, CSV, TXT, HTML
// @description:mt Esporta konversazzjonijiet ChatGPT, Gemini, Grok, Claude għal Markdown, JSON, CSV, TXT, HTML
// @description:my ChatGPT, Gemini, Grok, Claude စကားပြောများကို Markdown, JSON, CSV, TXT, HTML သို့ ထုတ်ယူပါ
// @description:ne ChatGPT, Gemini, Grok, Claude कुराकानीहरूलाई Markdown, JSON, CSV, TXT, HTML मा निर्यात गर्नुहोस्
// @description:nl Exporteer ChatGPT-, Gemini-, Grok-, Claude-gesprekken naar Markdown, JSON, CSV, TXT, HTML
// @description:no Eksporter ChatGPT-, Gemini-, Grok-, Claude-samtaler til Markdown, JSON, CSV, TXT, HTML
// @description:om Marii ChatGPT, Gemini, Grok, Claude gara Markdown, JSON, CSV, TXT, HTMLtti ergi
// @description:or ChatGPT, Gemini, Grok, Claude କଥାବାର୍ତ୍ତାକୁ Markdown, JSON, CSV, TXT, HTML କୁ ଏକ୍ସପୋର୍ଟ କରନ୍ତୁ
// @description:pa ChatGPT, Gemini, Grok, Claude ਗੱਲਬਾਤਾਂ ਨੂੰ Markdown, JSON, CSV, TXT, HTML ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ
// @description:pl Eksportuj rozmowy ChatGPT, Gemini, Grok, Claude do Markdown, JSON, CSV, TXT, HTML
// @description:ps د ChatGPT، Gemini، Grok، Claude خبرې اترې Markdown، JSON، CSV، TXT، HTML ته صادر کړئ
// @description:pt Exportar conversas do ChatGPT, Gemini, Grok, Claude para Markdown, JSON, CSV, TXT, HTML
// @description:pt-BR Exportar conversas do ChatGPT, Gemini, Grok, Claude para Markdown, JSON, CSV, TXT, HTML
// @description:pt-PT Exportar conversas do ChatGPT, Gemini, Grok, Claude para Markdown, JSON, CSV, TXT, HTML
// @description:ro Exportați conversațiile ChatGPT, Gemini, Grok, Claude în Markdown, JSON, CSV, TXT, HTML
// @description:ru Экспорт разговоров ChatGPT, Gemini, Grok, Claude в форматы Markdown, JSON, CSV, TXT, HTML
// @description:rw Kohereza ibiganiro bya ChatGPT, Gemini, Grok, Claude muri Markdown, JSON, CSV, TXT, HTML
// @description:si ChatGPT, Gemini, Grok, Claude සංවාද Markdown, JSON, CSV, TXT, HTML වෙත අපනයනය කරන්න
// @description:sk Exportujte konverzácie ChatGPT, Gemini, Grok, Claude do Markdown, JSON, CSV, TXT, HTML
// @description:sl Izvozite pogovore ChatGPT, Gemini, Grok, Claude v Markdown, JSON, CSV, TXT, HTML
// @description:sn Tumira hurukuro dzeChatGPT, Gemini, Grok, Claude kuMarkdown, JSON, CSV, TXT, HTML
// @description:so U dhoofi wada-hadallada ChatGPT, Gemini, Grok, Claude qaabka Markdown, JSON, CSV, TXT, HTML
// @description:sq Eksporto bisedat e ChatGPT, Gemini, Grok, Claude në Markdown, JSON, CSV, TXT, HTML
// @description:sr Izvezi ChatGPT, Gemini, Grok, Claude razgovore u Markdown, JSON, CSV, TXT, HTML
// @description:sr-Latn Izvezi ChatGPT, Gemini, Grok, Claude razgovore u Markdown, JSON, CSV, TXT, HTML
// @description:st Romela lipuisano tsa ChatGPT, Gemini, Grok, Claude ho Markdown, JSON, CSV, TXT, HTML
// @description:sv Exportera ChatGPT-, Gemini-, Grok-, Claude-konversationer till Markdown, JSON, CSV, TXT, HTML
// @description:sw Hamisha mazungumzo ya ChatGPT, Gemini, Grok, Claude hadi Markdown, JSON, CSV, TXT, HTML
// @description:ta ChatGPT, Gemini, Grok, Claude உரையாடல்களை Markdown, JSON, CSV, TXT, HTML ஆக ஏற்றுமதி செய்
// @description:te ChatGPT, Gemini, Grok, Claude సంభాషణలను Markdown, JSON, CSV, TXT, HTMLకు ఎగుమతి చేయండి
// @description:tg Муколамаҳои ChatGPT, Gemini, Grok, Claude-ро ба Markdown, JSON, CSV, TXT, HTML содирот кунед
// @description:th ส่งออกบทสนทนา ChatGPT, Gemini, Grok, Claude เป็น Markdown, JSON, CSV, TXT, HTML
// @description:ti ናይ ChatGPT, Gemini, Grok, Claude ዝርርባት ናብ Markdown, JSON, CSV, TXT, HTML ሰደድ
// @description:tk ChatGPT, Gemini, Grok, Claude gepleşiklerini Markdown, JSON, CSV, TXT, HTML-a eksport ediň
// @description:tr ChatGPT, Gemini, Grok, Claude konuşmalarını Markdown, JSON, CSV, TXT, HTML olarak dışa aktarın
// @description:ug ChatGPT, Gemini, Grok, Claude سۆھبەتلىرىنى Markdown, JSON, CSV, TXT, HTML غا چىقىرىڭ
// @description:uk Експортувати розмови ChatGPT, Gemini, Grok, Claude у формати Markdown, JSON, CSV, TXT, HTML
// @description:ur ChatGPT، Gemini، Grok، Claude کی گفتگو کو Markdown، JSON، CSV، TXT، HTML میں برآمد کریں
// @description:uz ChatGPT, Gemini, Grok, Claude suhbatlarini Markdown, JSON, CSV, TXT, HTML formatlariga eksport qilish
// @description:vi Xuất các cuộc trò chuyện ChatGPT, Gemini, Grok, Claude sang Markdown, JSON, CSV, TXT, HTML
// @description:yo Ṣe iṣipo awọn ibaraẹnisọrọ ChatGPT, Gemini, Grok, Claude si Markdown, JSON, CSV, TXT, HTML
// @description:zh-CN 将 ChatGPT、Gemini、Grok、Claude 的聊天记录导出为 Markdown、JSON、CSV、TXT、HTML 格式。
// @description:zh-HK 將 ChatGPT、Gemini、Grok、Claude 的聊天紀錄導出為 Markdown、JSON、CSV、TXT、HTML 格式。
// @description:zh-TW 將 ChatGPT、Gemini、Grok、Claude 的聊天紀錄導出為 Markdown、JSON、CSV、TXT、HTML 格式。
// @description:zu Thumela izingxoxo ze-ChatGPT, Gemini, Grok, Claude ku-Markdown, JSON, CSV, TXT, HTML
// @namespace AI_I18N_Final
// @version 1.0.0
// @author Kairox
// @include *://chatgpt.com/*
// @include *://grok.com/*
// @include *://gemini.google.com/*
// @include *://claude.ai/*
// @noframes
// @license MIT
// @run-at document-idle
// @grant GM_addStyle
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
(function () {
'use strict';
const i18n = {
"af": "UITVOER", "am": "ኤክስፖርት", "ar": "تصدير", "as": "এক্সপোর্ট", "az": "İXRAC ET",
"be": "ЭКСПАРТ", "bg": "ЕКСПОРТИРАНЕ", "bn": "এক্সপোর্ট", "bs": "IZVEZI", "ca": "EXPORTAR",
"cs": "EXPORTOVAT", "da": "EKSPORTER", "de": "EXPORTIEREN", "dz": "ཕྱིར་འདྲེན།", "el": "ΕΞΑΓΩΓΗ",
"en": "EXPORT", "en-GB": "EXPORT", "en-US": "EXPORT", "eo": "EKSPORTI", "es": "EXPORTAR",
"es-419": "EXPORTAR", "es-US": "EXPORTAR", "et": "EKSPORDI", "eu": "ESPORTATU", "fa": "خروجی",
"fi": "VIE", "fil": "I-EXPORT", "fr": "EXPORTER", "fr-CA": "EXPORTER", "ga": "EASPUITÁIL",
"gl": "EXPORTAR", "gn": "EXPORTA", "gu": "એક્સપોર્ટ", "ha": "FITARWA", "hi": "एक्सपोर्ट",
"hr": "IZVEZI", "hu": "EXPORTÁLÁS", "hy": "ԱՐՏԱՀԱՆԵԼ", "id": "EKSPOR", "ig": "BUPỤ",
"is": "ÚTFLYTJA", "it": "ESPORTA", "iw": "ייצוא", "ja": "エクスポート", "jv": "EKSPOR",
"ka": "ᲔᲥᲡᲞᲝᲠᲢᲘ", "kk": "ЭКСПОРТТАУ", "km": "នាំចេញ", "kn": "ರಫ್ತು", "ko": "내보내기",
"ky": "ЭКСПОРТТОО", "lo": "ສົ່ງອອກ", "lt": "EKSPORTUOTI", "lv": "EKSPORTĒT", "mg": "HONDRAINA",
"mk": "ЕКСПОРТ", "ml": "കയറ്റുമതി", "mn": "ЭКСПОРТЛОХ", "mr": "निर्यात", "ms": "EKSPORT",
"mt": "ESPORTA", "my": "ထုတ်ယူ", "ne": "निर्यात", "nl": "EXPORTEREN", "no": "EKSPORTER",
"om": "ERGUU", "or": "ଏକ୍ସପୋର୍ଟ", "pa": "ਨਿਰਯਾਤ", "pl": "EKSPORTUJ", "ps": "صادرول",
"pt": "EXPORTAR", "pt-BR": "EXPORTAR", "pt-PT": "EXPORTAR", "ro": "EXPORTĂ", "ru": "ЭКСПОРТ",
"rw": "KOHEREZA", "si": "අපනයනය", "sk": "EXPORTOVAŤ", "sl": "IZVOZI", "sn": "TUMIRA",
"so": "DHOOFI", "sq": "EKSPORTO", "sr": "IZVEZI", "sr-Latn": "IZVEZI", "st": "ROMELA",
"sv": "EXPORTERA", "sw": "HAMISHA", "ta": "ஏற்றுமதி", "te": "ఎగుమతి", "tg": "СОДИРОТ",
"th": "ส่งออก", "ti": "ሰደድ", "tk": "EKSPORT", "tr": "DIŞA AKTAR", "ug": "چىقىرىش",
"uk": "ЕКСПОРТУВАТИ", "ur": "برآمد", "uz": "EKSPORT", "vi": "XUẤT", "yo": "ṢE IṢIPO",
"zh-CN": "导出", "zh-HK": "導出", "zh-TW": "導出", "zu": "THUMELA"
};
const sysLang = navigator.language || 'en';
const langKey = i18n[sysLang] ? sysLang : sysLang.split('-')[0];
const exportLabel = i18n[langKey] || i18n['en'];
const CommonUtil = {
createElement: function(tag, opts = {}) {
const el = document.createElement(tag);
if (opts.html) el.innerHTML = opts.html;
if (opts.text) el.textContent = opts.text;
if (opts.className) el.className = opts.className;
if (opts.style) Object.assign(el.style, opts.style);
if (opts.childrens) opts.childrens.forEach(c => el.appendChild(c));
return el;
}
};
const HtmlToMarkdown = {
to: function(html, platform) {
const parser = new DOMParser();
const doc = parser.parseFromString(html, "text/html");
const isChatGPT = platform === "chatGPT", isGemini = platform === "gemini", isGrok = platform === "grok", isClaude = platform === "claude";
if (!isGemini) doc.querySelectorAll("span.katex-html").forEach(el => el.remove());
doc.querySelectorAll("mrow").forEach(m => m.remove());
doc.querySelectorAll('annotation[encoding="application/x-tex"]').forEach(el => {
if (el.closest(".katex-display")) el.replaceWith(`\n$$\n${el.textContent.trim()}\n$$\n`);
else el.replaceWith(`$${el.textContent.trim()}$`);
});
doc.querySelectorAll("strong, b").forEach(b => b.parentNode.replaceChild(document.createTextNode(`**${b.textContent}**`), b));
doc.querySelectorAll("em, i").forEach(i => i.parentNode.replaceChild(document.createTextNode(`*${i.textContent}*`), i));
doc.querySelectorAll("p code").forEach(c => c.parentNode.replaceChild(document.createTextNode(`\`${c.textContent}\``), c));
doc.querySelectorAll("a").forEach(a => a.parentNode.replaceChild(document.createTextNode(`[${a.textContent}](${a.href})`), a));
doc.querySelectorAll("img").forEach(img => img.parentNode.replaceChild(document.createTextNode(``), img));
if (isChatGPT) {
doc.querySelectorAll("pre").forEach(pre => {
const type = pre.querySelector("div > div:first-child")?.textContent || "";
const code = pre.querySelector("div > div:nth-child(3) > code")?.textContent || pre.textContent;
pre.innerHTML = `\n\`\`\`${type}\n${code}\n\`\`\`\n`;
});
} else if (isGrok) {
doc.querySelectorAll("div.not-prose").forEach(div => {
const type = div.querySelector("div > div > span")?.textContent || "";
const code = div.querySelector("div > div:nth-child(3) > code")?.textContent || div.textContent;
div.innerHTML = `\n\`\`\`${type}\n${code}\n\`\`\`\n`;
});
} else if (isGemini) {
doc.querySelectorAll("code-block").forEach(div => {
const type = div.querySelector("div > div > span")?.textContent || "";
const code = div.querySelector("div > div:nth-child(2) > div > pre")?.textContent || div.textContent;
div.innerHTML = `\n\`\`\`${type}\n${code}\n\`\`\`\n`;
});
} else if (isClaude) {
doc.querySelectorAll("pre").forEach(pre => {
const code = pre.querySelector("code");
const type = code ? Array.from(code.classList).find(c => c.startsWith('language-'))?.replace('language-', '') : "";
pre.innerHTML = `\n\`\`\`${type || ''}\n${code ? code.textContent : pre.textContent}\n\`\`\`\n`;
});
}
doc.querySelectorAll("ul").forEach(ul => {
let m = "";
ul.querySelectorAll(":scope > li").forEach(li => m += `- ${li.textContent.trim()}\n`);
ul.parentNode.replaceChild(document.createTextNode("\n" + m.trim()), ul);
});
doc.querySelectorAll("ol").forEach(ol => {
let m = "";
ol.querySelectorAll(":scope > li").forEach((li, idx) => m += `${idx + 1}. ${li.textContent.trim()}\n`);
ol.parentNode.replaceChild(document.createTextNode("\n" + m.trim()), ol);
});
for (let i = 1; i <= 6; i++) {
doc.querySelectorAll(`h${i}`).forEach(h => h.parentNode.replaceChild(document.createTextNode(`\n${"#".repeat(i)} ${h.textContent}\n`), h));
}
doc.querySelectorAll("p").forEach(p => p.parentNode.replaceChild(document.createTextNode("\n" + p.textContent + "\n"), p));
return doc.body.innerHTML.replace(/<[^>]*>/g, "").replace(/&/g, "&").trim();
}
};
const Chat = {
getElements: function() {
const h = window.location.href, res = [];
let p = "", t = document.title || "Export";
if (h.includes("chatgpt.com")) {
p = "chatGPT"; t = document.querySelector("#history a[data-active]")?.textContent || t;
res.push(...document.querySelectorAll("div[data-message-id]"));
} else if (h.includes("grok.com")) {
p = "grok"; res.push(...document.querySelectorAll("div.message-bubble"));
} else if (h.includes("gemini.google.com")) {
p = "gemini"; t = document.querySelector("conversations-list div.selected")?.textContent || t;
const qs = document.querySelectorAll("user-query-content"), rs = document.querySelectorAll("model-response");
for (let i = 0; i < qs.length; i++) { res.push(qs[i]); if (rs[i]) res.push(rs[i]); }
} else if (h.includes("claude.ai")) {
p = "claude"; res.push(...document.querySelectorAll('[data-testid="user-message"], .font-claude-response'));
}
return { res, p, t: t.replace(/[\/\\\?\%\*\:\|"<>\.]/g, "_") };
},
export: function(fmt) {
const { res, p, t } = this.getElements();
if (!res.length) return;
let c = "", m = 'text/plain';
if (fmt === 'json') {
c = JSON.stringify(res.reduce((a, x, i) => { if(i%2===0 && res[i+1]) a.push({q: HtmlToMarkdown.to(x.innerHTML,p), a: HtmlToMarkdown.to(res[i+1].innerHTML,p)}); return a; }, []), null, 2);
m = 'application/json';
} else if (fmt === 'csv') {
c = "Q,A\n" + res.reduce((a, x, i) => { if(i%2===0 && res[i+1]) a += `"${HtmlToMarkdown.to(x.innerHTML,p).replace(/"/g,'""')}","${HtmlToMarkdown.to(res[i+1].innerHTML,p).replace(/"/g,'""')}"\n`; return a; }, "");
m = 'text/csv';
} else if (fmt === 'html') {
c = `<html><body style="font-family:sans-serif;max-width:800px;margin:auto;padding:30px;line-height:1.7;">${res.reduce((a, x, i) => { if(i%2===0 && res[i+1]) a += `<div style="background:#f4f4f5;padding:15px;border-radius:12px;margin:20px 0;"><b>Q:</b> ${x.innerHTML}</div><div><b>A:</b> ${res[i+1].innerHTML}</div><hr/>`; return a; }, "")}</body></html>`;
m = 'text/html';
} else if (fmt === 'md') {
c = res.reduce((a, x, i) => { if(i%2===0 && res[i+1]) a += `\n# Q:\n${HtmlToMarkdown.to(x.innerHTML,p)}\n\n# A:\n${HtmlToMarkdown.to(res[i+1].innerHTML,p)}\n\n---\n`; return a; }, "");
m = 'text/markdown';
} else {
c = res.reduce((a, x, i) => { if(i%2===0 && res[i+1]) a += `\nQ:\n${x.textContent.trim()}\n\nA:\n${res[i+1].textContent.trim()}\n\n---\n`; return a; }, "");
}
const b = new Blob([c.replace(/&/g, "&")], { type: m });
const u = URL.createObjectURL(b), a = document.createElement("a");
a.href = u; a.download = `${t}.${fmt}`; document.body.appendChild(a); a.click();
setTimeout(() => { document.body.removeChild(a); URL.revokeObjectURL(u); }, 0);
}
};
GM_addStyle(`
.ai-export-drag-box { position: fixed; z-index: 2147483646; display: flex; flex-direction: column; align-items: center; justify-content: center; background: rgba(28,28,30,0.85); backdrop-filter: blur(12px); color: #fff; border-radius: 100px; box-shadow: 0 8px 32px rgba(0,0,0,0.2); cursor: move; user-select: none; border: 1px solid rgba(255,255,255,0.1); padding: 10px 20px; font-family: system-ui; font-size: 14px; font-weight: 600; transition: transform 0.2s ease, opacity 0.2s; white-space: nowrap; }
.ai-export-drag-box:hover { transform: scale(1.05); }
.ai-export-menu-panel { position: absolute; width: max-content; min-width: 150px; background: rgba(255,255,255,0.95); backdrop-filter: blur(20px); border-radius: 16px; padding: 6px; display: none; flex-direction: column; }
.pos-bottom-right { bottom: calc(100% + 15px); right: 0; transform-origin: bottom right; animation: aiPopUp 0.3s cubic-bezier(0.16, 1, 0.3, 1); box-shadow: 0 -10px 50px rgba(0,0,0,0.2); }
.pos-bottom-left { bottom: calc(100% + 15px); left: 0; transform-origin: bottom left; animation: aiPopUp 0.3s cubic-bezier(0.16, 1, 0.3, 1); box-shadow: 0 -10px 50px rgba(0,0,0,0.2); }
.pos-top-right { top: calc(100% + 15px); right: 0; transform-origin: top right; animation: aiPopDown 0.3s cubic-bezier(0.16, 1, 0.3, 1); box-shadow: 0 10px 50px rgba(0,0,0,0.2); }
.pos-top-left { top: calc(100% + 15px); left: 0; transform-origin: top left; animation: aiPopDown 0.3s cubic-bezier(0.16, 1, 0.3, 1); box-shadow: 0 10px 50px rgba(0,0,0,0.2); }
@media (prefers-color-scheme: dark) {
.ai-export-menu-panel { background: rgba(30,30,34,0.9); }
.pos-bottom-right, .pos-bottom-left { box-shadow: 0 -10px 50px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,255,255,0.1); }
.pos-top-right, .pos-top-left { box-shadow: 0 10px 50px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,255,255,0.1); }
}
@keyframes aiPopUp { 0% { opacity: 0; transform: scale(0.9) translateY(10px); } 100% { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes aiPopDown { 0% { opacity: 0; transform: scale(0.9) translateY(-10px); } 100% { opacity: 1; transform: scale(1) translateY(0); } }
.ai-export-menu-item { display: flex; align-items: center; padding: 12px 14px; background: transparent; border: none; border-radius: 10px; text-align: left; cursor: pointer; color: #333; font-size: 13px; font-weight: 500; transition: 0.15s ease; width: 100%; white-space: nowrap; }
@media (prefers-color-scheme: dark) { .ai-export-menu-item { color: #eee; } }
.ai-export-menu-item:hover { background: rgba(16,163,127,0.15); color: #10a37f; }
.ai-export-menu-item.clicked { transform: scale(0.92); background: rgba(16,163,127,0.3); opacity: 0.7; }
`);
function init() {
if (document.querySelector('.ai-export-drag-box')) return;
const box = CommonUtil.createElement("div", { className: "ai-export-drag-box" });
box.innerHTML = `<div style="display:flex;align-items:center;gap:8px;pointer-events:none;"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3"/></svg><span>${exportLabel}</span></div>`;
const menu = CommonUtil.createElement("div", { className: "ai-export-menu-panel" });
['md', 'json', 'csv', 'txt', 'html'].forEach(ext => {
const btn = CommonUtil.createElement("button", { className: "ai-export-menu-item", text: `${exportLabel} .${ext.toUpperCase()}` });
btn.onclick = (e) => {
e.stopPropagation();
btn.classList.add('clicked');
setTimeout(() => {
btn.classList.remove('clicked');
Chat.export(ext);
menu.style.display = 'none';
}, 200);
};
menu.appendChild(btn);
});
box.appendChild(menu);
document.body.appendChild(box);
const sX = GM_getValue('x', window.innerWidth - 160), sY = GM_getValue('y', window.innerHeight - 100);
box.style.left = Math.max(0, Math.min(sX, window.innerWidth - 120)) + 'px'; box.style.top = Math.max(0, Math.min(sY, window.innerHeight - 60)) + 'px';
let drag = false, moved = false, sX0, sY0, iL, iT;
box.onmousedown = (e) => { drag = true; moved = false; sX0 = e.clientX; sY0 = e.clientY; iL = box.offsetLeft; iT = box.offsetTop; e.preventDefault(); };
document.onmousemove = (e) => {
if (!drag) return;
const dx = e.clientX - sX0, dy = e.clientY - sY0;
if (Math.abs(dx) > 3 || Math.abs(dy) > 3) moved = true;
box.style.left = (iL + dx) + 'px'; box.style.top = (iT + dy) + 'px';
};
document.onmouseup = () => { if (drag && moved) { GM_setValue('x', box.offsetLeft); GM_setValue('y', box.offsetTop); } drag = false; };
box.onclick = () => {
if (!moved) {
if (menu.style.display !== 'flex') {
const rect = box.getBoundingClientRect();
const isBottom = rect.top > window.innerHeight / 2;
const isRight = rect.left > window.innerWidth / 2;
menu.className = 'ai-export-menu-panel';
if (isBottom && isRight) menu.classList.add('pos-bottom-right');
else if (isBottom && !isRight) menu.classList.add('pos-bottom-left');
else if (!isBottom && isRight) menu.classList.add('pos-top-right');
else if (!isBottom && !isRight) menu.classList.add('pos-top-left');
menu.style.display = 'flex';
} else {
menu.style.display = 'none';
}
}
};
document.addEventListener("click", (e) => { if (!box.contains(e.target)) menu.style.display = 'none'; });
}
if (typeof trustedTypes !== "undefined" && trustedTypes.defaultPolicy === null) {
trustedTypes.createPolicy("default", { createHTML: s => s, createScriptURL: s => s, createScript: s => s });
}
setTimeout(init, 1000);
setInterval(init, 3000);
})();