🏠 Home 

Twitterの共有リンクをMisskeyの共有リンクに置換するスクリプト

X(Twitter)の共有リンクを開いたときにMisskeyの共有リンクに置換するスクリプトです。

// ==UserScript==
// @name            Twitterの共有リンクをMisskeyの共有リンクに置換するスクリプト
// @namespace       https://midra.me
// @version         1.0.8
// @description     X(Twitter)の共有リンクを開いたときにMisskeyの共有リンクに置換するスクリプトです。
// @author          Midra
// @license         MIT
// @match           https://twitter.com/*
// @match           https://x.com/*
// @icon            https://www.google.com/s2/favicons?sz=64&domain=x.com
// @run-at          document-start
// @noframes
// @grant           GM_getValue
// @grant           GM_setValue
// @grant           GM_registerMenuCommand
// @require         https://greasyfork.org/scripts/7212-gm-config-eight-s-version/code/GM_config%20(eight's%20version).js?version=156587
// ==/UserScript==
void (() => {
'use strict'
const configInitData = {
instance: {
label: 'サーバー (httpsは省略)',
type: 'text',
default: 'misskey.io',
},
replace: {
label: 'オプション',
type: 'select',
default: 'afterConfirm',
options: {
auto: '自動で置換する',
afterConfirm: '置換する前に確認する',
},
},
}
GM_config.init(
'X(Twitter)の共有リンクをMisskeyの共有リンクに置換するスクリプト 設定',
configInitData
)
GM_config.onload = () => {
setTimeout(() => {
alert('設定を反映させるにはページを再読み込みしてください。')
}, 200)
}
GM_registerMenuCommand('設定', GM_config.open)
// 設定取得
const config = Object.fromEntries(
Object.keys(configInitData).map((key) => [key, GM_config.get(key)])
)
if (
window.location.href.startsWith('https://x.com/intent/tweet') ||
window.location.href.startsWith('https://twitter.com/intent/tweet') ||
window.location.href.startsWith('https://x.com/share') ||
window.location.href.startsWith('https://twitter.com/share')
) {
const { text, url, hashtags, via } = Object.fromEntries(
new URLSearchParams(window.location.search).entries()
)
let shareText = ''
if (text) {
shareText = text.replace(/@([a-zA-Z0-9_]+)/g, '?[@$1](https://x.com/$1)')
}
if (url) {
shareText += ` ${url}`
}
if (hashtags) {
shareText += ` #${hashtags.split(',').join(' #')}`
}
if (via) {
shareText += ` ?[@${via}](https://x.com/${via})より`
}
if (
config['replace'] === 'auto' ||
window.confirm(
`指定したMisskeyのサーバー(${config['instance']})で共有しますか?`
)
) {
window.location.href = `https://${
config['instance']
}/share?text=${window.encodeURIComponent(shareText)}`
}
}
})()