您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Customize ChatGPT with advanced background, UI styling, text controls, and presets
当前为
// ==UserScript== // @name ChatGPT Enhanced Customizer // @namespace https://github.com/elixirsneededx/ChatGPT-Enhanced-Customizer-TamperMonkey- // @version 2.5 // @description Customize ChatGPT with advanced background, UI styling, text controls, and presets // @license MIT // @copyright 2024, elixirsneededx (https://github.com/elixirsneededx) @elixirsneededx on discord. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAH1UExURUxpcXeqn3WqnHWonHSpnHWonHWpnG22knWpnHWpnHSmm3apm3SpnHWonHWpnHSonHWpnHWpm3apnXWpnHWpm3WpnP///8fc19fm43mrn67Nxf7///r8+6HFvNPk4JS8ssXb1XirnsDY0sPa1Pj7+qbHv5i/tXeqnvz9/X6uoo65roq2q+Tu7P3+/qrKwqDEu9bm4vP39qfIwPv9/NXl4ezz8Xqsn+nx73msn5/Dusnd2N7q59zp5pC6r4CwpKLFvIOxpszf2oSypsTa1fn7+/P49t/r6JrAt8LZ1L/X0d3q53aqnczf287h3Ie0qc7g3Pr8/LTQybDOxpvBuObv7c/h3PX5+Ory8ODr6OPt65G7sLnTzYWzp/n7+oi1qv7+/tTk4J7Cucve2Z3Cub7X0H+vo8LZ053CuKnJwff6+tnn4/3+/fD29XytoYWzqJe+tJa+tHapnHeqnaHEu8vf2oGxpazLw3utoMre2ZW9s7XRyu/19H2uou/186XHv6jJwNDi3sjd2OLt6u308ufw7tfm4rjTzK3MxOjw7tvp5dHi3sjd15m/tvL39q/Nxvb5+OPu64y3rIOyptnn5LbSy+Ds6eHs6tbl4cHZ0/v8/H6vo4GwpZ7Dus/h3fb6+ZK7sfT49/f6+aLFvavLw6zLxM3g28bc1pQLf2QAAAAVdFJOUwAtv5bz1PQH/dUuj5WQ/CyYwJHykqKEGP8AAAAJcEhZcwAAAHYAAAB2AU57JggAAAIcSURBVDjLhdNle9swEABgFdK0Kw7uHMfp6iTeAksaThpoUmZuV1x5zMxbx8wM7Xj7nZNjx/L2rNl9kXR6H51snwmhsWFTWQn8FSWGygKihLGmFP4ZpUXG7P5GWDcKZVEDeaKC1mfnHxUvoSV19YQOVFWTLdpiUfJ2POx/jOEzAy4tWU7KctPG95FpOjT0IA2PT80aSHEOpKQ5mSUxIA7bD2OzI5vdTNTt1QXBDvAxMT/7qkE+h8PdyoYC+DX0YgYyX4W+FwBunqYOhpp0YAl/1eN22Or5DPD8Jd6sBTiOZgYa8SfUysAMH+wWW/AK3ndbUWRADKUVMGIex1YrRGcs3uvYxcCzKVCAJTb66FZsFGDXTgHPMjD2WgWcFeCkHd/uoOshj0MD16QoLOI2+Q406ifpPXh4gisaOIXD4JiZXUoqwARx/Ab80zB7TJMzmK17nr4BK2eCOnocJGMMBBH9tO6FqYhveUJSwZsxBrpRDDltl6G3G7/8+K6AtLOZARu65hYwcLfL8s4l30EGCTzGwH6MA3Tew9u0Tp1HBmYOT+u+xZ62nl4AB91uGRQ+ZWAZ53HQqgMwgn3n6BC90+bl0nLJB51qH+QaphUD3EWuHVNuuhiQwlrPaS3n6zhEW+2G3I3TkSE3A5XalG860o/j/sSkcGAf62tS8MdvFfe3Oyf2tugyhBRB3qC/XuF/ADFWVOUHhFSXG4rXA78BYbiLJDUXqsMAAABXelRYdFJhdyBwcm9maWxlIHR5cGUgaXB0YwAAeJzj8gwIcVYoKMpPy8xJ5VIAAyMLLmMLEyMTS5MUAxMgRIA0w2QDI7NUIMvY1MjEzMQcxAfLgEigSi4A6hcRdPJCNZUAAAAASUVORK5CYII= // @author @elixirsneededx on discord // @match http*://chat.openai.com/* // @match http*://chatgpt.com/* // @connect greatest.deepsurf.us // @grant none // ==/UserScript== (function() { 'use strict'; const panel = document.createElement('div'); panel.style.position = 'fixed'; panel.style.top = '10px'; panel.style.right = '10px'; panel.style.padding = '15px'; panel.style.backgroundColor = 'rgba(0, 0, 0, 0.85)'; panel.style.borderRadius = '12px'; panel.style.color = 'white'; panel.style.zIndex = '9999'; panel.style.fontFamily = 'Arial, sans-serif'; panel.style.width = '300px'; panel.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.3)'; const closeButton = document.createElement('button'); closeButton.textContent = 'X'; closeButton.style.position = 'absolute'; closeButton.style.top = '5px'; closeButton.style.right = '10px'; closeButton.style.backgroundColor = 'transparent'; closeButton.style.border = 'none'; closeButton.style.color = 'white'; closeButton.style.fontSize = '16px'; closeButton.style.cursor = 'pointer'; closeButton.addEventListener('click', () => { panel.style.display = 'none'; reopenButton.style.display = 'block'; }); panel.appendChild(closeButton); const title = document.createElement('h3'); title.textContent = 'ChatGPT Enhanced Customizer'; title.style.marginBottom = '15px'; title.style.textAlign = 'center'; title.style.fontSize = '18px'; title.style.color = '#ff00ff'; panel.appendChild(title); const UITextColorLabel = document.createElement('label'); UITextColorLabel.textContent = 'UI Text Color:'; UITextColorLabel.style.display = 'block'; UITextColorLabel.style.marginTop = '10px'; panel.appendChild(UITextColorLabel); const UITextColorInput = document.createElement('input'); UITextColorInput.type = 'color'; UITextColorInput.value = '#ffffff'; panel.appendChild(UITextColorInput); const backgroundColorLabel = document.createElement('label'); backgroundColorLabel.textContent = 'Background Color:'; backgroundColorLabel.style.display = 'block'; backgroundColorLabel.style.marginTop = '10px'; panel.appendChild(backgroundColorLabel); const backgroundColorInput = document.createElement('input'); backgroundColorInput.type = 'color'; backgroundColorInput.value = '#000000'; panel.appendChild(backgroundColorInput); const fontLabel = document.createElement('label'); fontLabel.textContent = 'Font:'; fontLabel.style.display = 'block'; fontLabel.style.marginTop = '10px'; panel.appendChild(fontLabel); const fontSelect = document.createElement('select'); fontSelect.style.backgroundColor = 'black'; fontSelect.style.color = 'white'; fontSelect.style.border = '1px solid #ffffff'; fontSelect.style.padding = '5px'; fontSelect.style.width = '100%'; fontSelect.style.borderRadius = '4px'; fontSelect.style.fontFamily = 'Arial, sans-serif'; const fonts = ['Arial', 'Comic Sans MS', 'Courier New', 'Georgia', 'Times New Roman', 'Verdana', 'Algerian']; fonts.forEach((font) => { const option = document.createElement('option'); option.value = font; option.textContent = font; option.style.fontFamily = font; fontSelect.appendChild(option); }); panel.appendChild(fontSelect); const chatFontSizeLabel = document.createElement('label'); chatFontSizeLabel.textContent = 'Chat Font Size:'; chatFontSizeLabel.style.display = 'block'; chatFontSizeLabel.style.marginTop = '10px'; panel.appendChild(chatFontSizeLabel); const chatFontSizeInput = document.createElement('input'); chatFontSizeInput.type = 'range'; chatFontSizeInput.min = '10'; chatFontSizeInput.max = '36'; chatFontSizeInput.value = '16'; chatFontSizeInput.style.width = '100%'; panel.appendChild(chatFontSizeInput); const applyButton = document.createElement('button'); applyButton.textContent = 'Apply'; applyButton.style.display = 'block'; applyButton.style.marginTop = '15px'; applyButton.style.width = '100%'; applyButton.style.backgroundColor = '#ff00ff'; applyButton.style.color = 'white'; applyButton.style.padding = '10px'; applyButton.style.border = 'none'; applyButton.style.cursor = 'pointer'; applyButton.style.fontSize = '16px'; applyButton.style.borderRadius = '4px'; applyButton.addEventListener('click', () => { document.body.style.backgroundColor = backgroundColorInput.value; document.body.style.color = UITextColorInput.value; document.body.style.fontFamily = fontSelect.value; document.querySelector('.chat-box').style.fontSize = chatFontSizeInput.value + 'px'; }); panel.appendChild(applyButton); const presetsLabel = document.createElement('label'); presetsLabel.textContent = 'Presets:'; presetsLabel.style.display = 'block'; presetsLabel.style.marginTop = '10px'; panel.appendChild(presetsLabel); const presetsSelect = document.createElement('select'); presetsSelect.style.width = '100%'; presetsSelect.style.padding = '5px'; presetsSelect.style.marginTop = '5px'; const presetOptions = [ { name: 'Anime', bg: 'url(https://github.com/elixirsneededx/ChatGPT-Enhanced-Customizer-TamperMonkey-/blob/main/anime-preset.jpg)', color: '#ff00ff', font: 'Algerian' }, { name: 'Slinky Style', bg: 'url(https://github.com/elixirsneededx/ChatGPT-Enhanced-Customizer-TamperMonkey-/blob/main/Slinky.gif)', color: '#00ffff', font: 'Comic Sans MS' }, { name: 'Bluematrix Style', bg: 'url(https://github.com/elixirsneededx/ChatGPT-Enhanced-Customizer-TamperMonkey-/blob/main/Bluematrix.gif)', color: '#0000ff', font: 'Times New Roman' } ]; presetOptions.forEach((preset) => { const option = document.createElement('option'); option.value = preset.name; option.textContent = preset.name; presetsSelect.appendChild(option); }); panel.appendChild(presetsSelect); presetsSelect.addEventListener('change', () => { const selectedPreset = presetOptions.find(preset => preset.name === presetsSelect.value); if (selectedPreset) { document.body.style.backgroundImage = selectedPreset.bg; document.body.style.color = selectedPreset.color; document.body.style.fontFamily = selectedPreset.font; } }); const advancedSettings = document.createElement('h4'); advancedSettings.textContent = 'UI Options'; advancedSettings.style.marginTop = '15px'; advancedSettings.style.color = '#ff00ff'; panel.appendChild(advancedSettings); const transparencyLabel = document.createElement('label'); transparencyLabel.textContent = 'UI Transparency:'; transparencyLabel.style.display = 'block'; transparencyLabel.style.marginTop = '5px'; panel.appendChild(transparencyLabel); const transparencyInput = document.createElement('input'); transparencyInput.type = 'range'; transparencyInput.min = '0'; transparencyInput.max = '100'; transparencyInput.value = '85'; transparencyInput.style.width = '100%'; panel.appendChild(transparencyInput); transparencyInput.addEventListener('input', () => { panel.style.backgroundColor = `rgba(0, 0, 0, ${transparencyInput.value / 100})`; }); const shapeLabel = document.createElement('label'); shapeLabel.textContent = 'UI Shape:'; shapeLabel.style.display = 'block'; shapeLabel.style.marginTop = '5px'; panel.appendChild(shapeLabel); const shapeSelect = document.createElement('select'); shapeSelect.style.width = '100%'; shapeSelect.style.padding = '5px'; const shapeOptions = ['Square', 'Rounded', 'Circular']; shapeOptions.forEach((shape) => { const option = document.createElement('option'); option.value = shape; option.textContent = shape; shapeSelect.appendChild(option); }); panel.appendChild(shapeSelect); shapeSelect.addEventListener('change', () => { if (shapeSelect.value === 'Square') { panel.style.borderRadius = '0px'; } else if (shapeSelect.value === 'Rounded') { panel.style.borderRadius = '12px'; } else if (shapeSelect.value === 'Circular') { panel.style.borderRadius = '50%'; } }); const languageLabel = document.createElement('label'); languageLabel.textContent = 'Localization:'; languageLabel.style.display = 'block'; languageLabel.style.marginTop = '5px'; panel.appendChild(languageLabel); const languageSelect = document.createElement('select'); languageSelect.style.width = '100%'; languageSelect.style.padding = '5px'; const languageOptions = ['English', 'Spanish', 'French', 'German', 'Japanese']; languageOptions.forEach((lang) => { const option = document.createElement('option'); option.value = lang; option.textContent = lang; languageSelect.appendChild(option); }); panel.appendChild(languageSelect); languageSelect.addEventListener('change', () => { if (languageSelect.value === 'Spanish') { title.textContent = 'Personalizador Mejorado de ChatGPT'; applyButton.textContent = 'Aplicar'; closeButton.textContent = 'Cerrar'; presetsLabel.textContent = 'Preajustes:'; } else if (languageSelect.value === 'French') { title.textContent = 'Personnalisateur Amélioré ChatGPT'; applyButton.textContent = 'Appliquer'; closeButton.textContent = 'Fermer'; presetsLabel.textContent = 'Préréglages:'; } else if (languageSelect.value === 'German') { title.textContent = 'Erweiterter ChatGPT-Anpasser'; applyButton.textContent = 'Anwenden'; closeButton.textContent = 'Schließen'; presetsLabel.textContent = 'Voreinstellungen:'; } else if (languageSelect.value === 'Japanese') { title.textContent = 'ChatGPTカスタマイザー'; applyButton.textContent = '適用'; closeButton.textContent = '閉じる'; presetsLabel.textContent = 'プリセット:'; } else { title.textContent = 'ChatGPT Enhanced Customizer'; applyButton.textContent = 'Apply'; closeButton.textContent = 'X'; presetsLabel.textContent = 'Presets:'; } }); const backupButton = document.createElement('button'); backupButton.textContent = 'Backup Settings'; backupButton.style.display = 'block'; backupButton.style.marginTop = '10px'; backupButton.style.width = '100%'; backupButton.style.backgroundColor = '#ff00ff'; backupButton.style.color = 'white'; backupButton.style.padding = '10px'; backupButton.style.border = 'none'; backupButton.style.cursor = 'pointer'; backupButton.style.fontSize = '16px'; backupButton.style.borderRadius = '4px'; backupButton.addEventListener('click', () => { const settings = { UITextColor: UITextColorInput.value, backgroundColor: backgroundColorInput.value, font: fontSelect.value, chatFontSize: chatFontSizeInput.value, transparency: transparencyInput.value, shape: shapeSelect.value, language: languageSelect.value }; localStorage.setItem('chatgpt-enhanced-settings', JSON.stringify(settings)); alert('Settings have been backed up.'); }); panel.appendChild(backupButton); const resetButton = document.createElement('button'); resetButton.textContent = 'Reset to Default'; resetButton.style.display = 'block'; resetButton.style.marginTop = '10px'; resetButton.style.width = '100%'; resetButton.style.backgroundColor = '#ff00ff'; resetButton.style.color = 'white'; resetButton.style.padding = '10px'; resetButton.style.border = 'none'; resetButton.style.cursor = 'pointer'; resetButton.style.fontSize = '16px'; resetButton.style.borderRadius = '4px'; resetButton.addEventListener('click', () => { localStorage.removeItem('chatgpt-enhanced-settings'); location.reload(); }); panel.appendChild(resetButton); const savedSettings = localStorage.getItem('chatgpt-enhanced-settings'); if (savedSettings) { const settings = JSON.parse(savedSettings); UITextColorInput.value = settings.UITextColor; backgroundColorInput.value = settings.backgroundColor; fontSelect.value = settings.font; chatFontSizeInput.value = settings.chatFontSize; transparencyInput.value = settings.transparency; shapeSelect.value = settings.shape; languageSelect.value = settings.language; applyButton.click(); } })();