// ==UserScript==
// @name 关键词叠词生成器
// @namespace http://tampermonkey.net/
// @version 1.1
// @description 输入关键词生成组合叠词
// @author You
// @match https://www.amazon.com/*
// @match https://www.amazon.co.uk/*
// @grant GM_addStyle
// @downloadURL none
// ==/UserScript==
(function () {
'use strict';
// 样式定义
GM_addStyle(`
#wordGeneratorContainer {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 9999;
background-color: #f9f9f9;
padding: 20px;
border: 2px solid #ccc;
border-radius: 15px;
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2);
display: none;
font-family: Arial, sans-serif;
width: auto;
max-width: 500px;
min-width: 300px;
}
#wordGeneratorContainer input, #wordGeneratorContainer button {
margin: 5px;
padding: 12px;
font-size: 16px;
border-radius: 8px;
border: 1px solid #ccc;
outline: none;
width: 48%;
}
#wordGeneratorContainer button {
cursor: pointer;
}
#outputArea {
margin-top: 15px;
padding: 15px;
background-color: #f4f4f4;
border: 1px solid #ddd;
border-radius: 8px;
min-height: 150px;
overflow-y: auto;
}
#openGeneratorButton {
position: fixed;
bottom: 20px;
right: 20px;
background-color: #0073e6;
color: white;
padding: 15px;
border: none;
border-radius: 50%;
cursor: pointer;
}
#closeButton {
position: absolute;
top: -10px;
right: -10px;
background-color: #ff3b3b;
color: white;
padding: 8px;
border-radius: 50%;
cursor: pointer;
}
`);
// 动态创建UI
const containerHTML = `
`;
document.body.insertAdjacentHTML('beforeend', containerHTML);
// 元素引用
const container = document.getElementById('wordGeneratorContainer');
const inputBox = document.getElementById('inputBox');
const outputArea = document.getElementById('outputArea');
const openButton = document.getElementById('openGeneratorButton');
const closeButton = document.getElementById('closeButton');
const generateButton = document.getElementById('generateButton');
const copyButton = document.getElementById('copyButton');
const clearButton = document.getElementById('clearButton');
// 生成叠词逻辑
function generateCombinations(input) {
const words = input.trim().split(/\s+/);
if (words.length < 2) return ['请输入至少两个关键词!'];
const combinations = [];
const repeat = (arr, times) =>
Array(times)
.fill(arr)
.flat();
const permute = (arr) => {
if (arr.length === 1) return [arr];
return arr.flatMap((word, i) =>
permute(arr.filter((_, idx) => idx !== i)).map((perm) => [word, ...perm])
);
};
combinations.push(...permute(words).map((perm) => repeat(perm, 2).join(' ')));
return combinations;
}
// 事件监听
generateButton.addEventListener('click', () => {
const input = inputBox.value;
outputArea.textContent = input
? generateCombinations(input).join('\n')
: '请输入关键词!';
});
copyButton.addEventListener('click', () => {
const text = outputArea.textContent.trim();
if (text) {
navigator.clipboard.writeText(text);
alert('已复制到剪贴板!');
} else {
alert('没有可复制的内容!');
}
});
clearButton.addEventListener('click', () => {
inputBox.value = '';
outputArea.textContent = '';
});
openButton.addEventListener('click', () => {
container.style.display = 'block';
});
closeButton.addEventListener('click', () => {
container.style.display = 'none';
});
})();