您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
以優化過的HTML格式匯出AI聊天記錄
// ==UserScript== // @name AI聊天匯出器 // @namespace https://xuanheai.com/ // @version 0.1 // @description 以優化過的HTML格式匯出AI聊天記錄 // @include https://xuanheai.com/* // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js // @author Sardo Ip // @grant none // @license MIT // ==/UserScript== //Default Download Link Href function createDownloadLink(){ const downloadLink = document.createElement('a'); downloadLink.setAttribute('href', '#'); downloadLink.setAttribute('class', 'ai-download-link'); downloadLink.setAttribute('download', 'AI聊天匯出.html'); downloadLink.text = '下載內容'; const buttonBar = document.querySelector('.btn-bar'); buttonBar.appendChild(downloadLink); } // A tmp element for download file function download(text) { const realDownloadLink = document.createElement("a"); realDownloadLink.href = 'data:text/html;charset=utf-8,' + encodeURIComponent(text); realDownloadLink.download = 'AI聊天匯出.html'; realDownloadLink.click(); } function getContent(){ let msgLists = $('.msg-item').toArray(); msgLists = msgLists.reverse(); let resultHtml = `<html> <head> <title>AI聊天匯出記錄</title> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.1/css/bootstrap.min.css"> <style> .message{ margin-bottom: 10px; padding: 10px; } .question{ font-weight: bold; } </style> </head> <body>`; for(let i = 0; i < msgLists.length; i++){ const msg = $(msgLists[i]); const question = $(msg).find('.msg-input').text(); const answer = $(msg).find('.answer-text').text(); resultHtml += '<div class="card message">'; resultHtml += `<div class="question">${question}</div>`; resultHtml += `<div class="answer">${answer}</div>`; resultHtml += '</div>'; } resultHtml += '</body></html>'; return resultHtml; } setTimeout(function(){ createDownloadLink(); $('.ai-download-link').click(function(e){ e.preventDefault(); const downloadContent = getContent(); download(downloadContent); }); }, 2000);