UserScript:鼎談
ChatGPT:鼎談
元ネタ
/villagepump/Popup Menuからエージェントを呼ぶUserScript
code:script.js
scrapbox.PopupMenu.addButton({
title: '鼎',
onClick: text => {
const prompt = `
あなたはプロの脚本家です。以下の3人で、「${convertCosense(text)}」というテーマについて対話(鼎談)を作成してください。
名前:ふーこ
普通の女の子
女の子のことばでフランクに話す
ネットスラングも使う
専門用語は、わかりやすい言葉に言い換える
わかりやすいボケとツッコミをする
りかのボケにツッコミをいれる
進行係
趣味:
ゲーム、アニメ
名前:あや
優等生キャラ
古風でおっとりとした性格
他人を傷つけないように言葉を選びながら、ていねいに話す
上品な言葉遣い
文学的表現を好む
他人に共感するのが得意
ロジカルシンキングやトップダウン思考が苦手
たまにツッコミをいれる
趣味:
読書
古典からラノベまで何でも読む
禁止事項:
「ふふ」とは笑わない。笑うときは声を出さずに笑うので、(笑う)(微笑)等のしぐさを使う
名前:りか
クールな女性キャラ
礼儀正しい
すこし中二病っぽいところがある
専門用語を適切に使い、なるべく簡潔に表現しようとする
ロジカルシンキングが得意
ときどき、要点を振り返る
技術担当、エビデンス重視、トップダウンな考え方
エビデンスにはリンクをはる
たまにボケる
ふーこのボケにはツッコミをいれる
趣味:
プログラミング
JavaScriptが得意
コンピュータサイエンス、システム工学、ソフトウェア工学についてもくわしい
禁止事項:
ネガティブなことは言わない。
「否定はしない」とかいわない。「そうかも」「そういう意見もある」などと言い換える
3人は同じ高校の同級生です。
なりきりの口調で、それぞれのキャラクターがとぼけたり、ツッコミをいれたり、反論や共感をしながら、ゆるい感じに会話を進行してください。 `; //
window.open("https://chatgpt.com/?temporary-chat=true&q="+encodeURIComponent(prompt),"_blank","popup,width=1024,height=1024");
}
});
code:script.js
// 他のエージェントも追加する
function convertCosense(input, to = 'markdown') {
const lines = input.split('\n');
return lines.map(line => {
const bulletMatch = line.match(/^( \t\u3000+)/);
if (bulletMatch) {
const indentStr = bulletMatch1;
const level = ...indentStr.length;
if (to === 'markdown') {
line = line.replace(/^( \t\u3000+)/, ' '.repeat(level) + '- ');
} else {
line = line.replace(/^( \t\u3000+)/, ' '.repeat(level) + '・');
}
}
return line.replace(/\\* (.+?)\/g, (_, p1) =>
to === 'markdown' ? **${p1}** : p1
).replace(/\\/+ (.+?)\/g, (_, p1) =>
to === 'markdown' ? *${p1}* : p1
).replace(/\(.+?)\/g, (_, p1) =>
to === 'markdown' ? <u>${p1}</u> : p1
).replace(/\[(https?:\/\/^\s\]+)\s+(.+?)\]/g, (_, url, text) =>
to === 'markdown' ? [${text}](${url}) : text
).replace(/\[(.+?)\s+(https?:\/\/^\s\]+)\]/g, (_, text, url) =>
to === 'markdown' ? [${text}](${url}) : text
).replace(/\[(https?:\/\/^\s\]+)\]/g, (_, url) =>
to === 'markdown' ? <${url}> : url
).replace(/(?<!\[)(https?:\/\/^\s\]+)(?!\])/g, (_, url) =>
to === 'markdown' ? <${url}> : url
).replace(/\[([^\\]+?)\.icon\]/g, (_, p1) => (${p1}))
.replace(/\[([^\\]+?)\]/g, (_, p1) => p1);
}).join('\n');
}