satori-syntax-mcp
Version:
MCP Server for Satori Syntax Generation (140-character X posts)
187 lines (155 loc) • 8.06 kB
JavaScript
export class SatoriTemplates {
/**
* さとり構文のメインプロンプトテンプレート
*/
static getSatoriPrompt() {
return `# さとり構文生成プロンプト
以下の構文ガイドラインに従い、対象読者に響く140文字のX投稿用「さとり構文」を作成してください。選択する構文タイプに応じて、具体的な例やポイントを参考にしてください。
## 必要な情報
1. **構文タイプ**(A/B/C/D/E から選択)
2. **ターゲット層**(例: 副業を始めたい人、AIに興味がある人)
3. **伝えたいメッセージの内容**(例: 新しいツールの紹介、驚きのニュース、具体的な手順)
4. **期待する行動**(例: サービス利用、投稿の拡散)
## さとり構文 A(基本形)
万能でどんな状況にも適応可能な構文です。
### 入力例
- ターゲット層: ADHDタイプの人
- 伝えたいメッセージ: Geminiを活用すると仕事が効率化する
- 期待する行動: Geminiを試してみる
### 出力例
「ADHDタイプの人は全員Geminiを使った方が良い。仕掛かりの仕事がゴチャゴチャしがちなのでそれらを全てGeminiに放り込んで要約とタスクの優先順位付けをしてもらうと一瞬で仕事の5割が片付く。この爽快感は他では味わえない。分かりやすい使い方のYouTube動画をリプ欄に貼ったから30秒だけでも見てみて。」
## さとり構文 B(常識の否定)
常識や既成概念を覆すことで読者の関心を引きつけます。
### 入力例
- ターゲット層: AIを使いこなしたい人
- 伝えたいメッセージ: ChatGPTだけでなく、他のAIツールを活用すべき
- 期待する行動: 適材適所でAIを使い分ける
### 出力例
「AIを使いこなしたい人はChatGPTを使わない方が良い。大体のことはGeminiの方が賢いし、リサーチならPerplexityのほうが正確。GPTは画像認識や文字起こし、音声入力して資料の土台を作るとかそういうことに向いてる。脳死でGPTを使うのをやめて適材適所のAI運用を心がけるだけで生産性が5倍上がる。」
## さとり構文 C(一般的なニュース)
ニュースを軸にしつつ、読者の興味を引く構文です。
### 入力例
- ニュース内容: 最新AIツールの無料公開
- ターゲット層: 会社でAIを使いたいけど課金に悩んでいる人
- 期待する行動: AIツールを試す
### 出力例
「『AIを会社で使いたいけど課金が…』って人たちに朗報。いま最新AIが全て無料で使える。GPT-4o、Claude 3.5 Sonnet、Gemini 1.5 Proすべて無料解放祭。お金かかっても使い倒したい派の人も専門家レベルのAIが使い放題なので勝ち確。リプ欄にリンク貼っておくから今すぐ試してAIの進歩を実感してみて。」
## さとり構文 D(衝撃的なニュース)
驚きや感動を伴う内容で感情を動かします。
### 入力例
- 衝撃的な事実: AIがリアルタイムアバターを実現
- ターゲット層: 最新技術に興味がある人
- 期待する行動: 動画を見て技術を体験する
### 出力例
「ねえこれ見て。衝撃的。左の女性が右のAI美女になって動いてる。しかもリアルタイム。ディープフェイクすら超越して時代は『リアルタイムアバター』に…。」
## さとり構文 E(ステップ紹介)
具体的な手順を示して行動を促す構文です。
### 入力例
- ターゲット層: 副業で安定収入を目指す人
- 手順: 1. AIを活用してポスターを販売、2. サークルを立ち上げる、3. FANZAで展開する
- 期待する行動: 手順を実行し、副業収入を得る
### 出力例
「副業で毎月100万円を安定させたい人は全員この流れ覚えて
1. ponyを使ってヤフオクでAI美女ポスターを売る
2. 月30万円くらい売れるようになったら次に進む
3. 同人サークルを立ち上げる
4. 今FANZAがアツいので全部かけあわせて月100万円くらい稼げる
僕のポストで定期的に詳しく解説しているからフォロー推奨。」
## 入力
### 構文タイプ
{structure_type}
### ターゲット層
{target_audience}
### メッセージ内容
{message_content}
### 期待する行動
{expected_action}
{news_section}
上記の情報に基づいて、選択された構文タイプ({structure_type})に従って、ターゲット層「{target_audience}」に響く140文字程度のさとり構文を生成してください。メッセージは「{message_content}」を含み、読者に「{expected_action}」という行動を促すものにしてください。
**重要な指示:**
1. 140文字程度で収める
2. 選択された構文タイプの特徴を活かす
3. ターゲット層に刺さる表現を使う
4. 期待する行動につながる内容にする
5. さとり構文のテキストのみを出力し、説明や前置きは不要`;
}
/**
* 構文タイプに応じたプロンプトを生成
*/
static generateSatoriPrompt(request) {
const { structure_type, target_audience, message_content, expected_action, news_content } = request;
let newsSection = '';
if ((structure_type === 'C' || structure_type === 'D') && news_content) {
newsSection = `### ニュース内容\n${news_content}\n`;
}
const template = this.getSatoriPrompt();
return template
.replace(/{structure_type}/g, structure_type)
.replace(/{target_audience}/g, target_audience)
.replace(/{message_content}/g, message_content)
.replace(/{expected_action}/g, expected_action)
.replace(/{news_section}/g, newsSection);
}
/**
* 構文タイプの説明を取得
*/
static getStructureTypeDescription(type) {
const descriptions = {
A: '基本形 - 万能でどんな状況にも適応可能な構文',
B: '常識の否定 - 常識や既成概念を覆すことで読者の関心を引きつける',
C: '一般的なニュース - ニュースを軸にしつつ、読者の興味を引く構文',
D: '衝撃的なニュース - 驚きや感動を伴う内容で感情を動かす',
E: 'ステップ紹介 - 具体的な手順を示して行動を促す構文'
};
return descriptions[type];
}
/**
* 利用可能な構文タイプの一覧を取得
*/
static getAvailableStructureTypes() {
const types = ['A', 'B', 'C', 'D', 'E'];
return types.map(type => ({
type,
description: this.getStructureTypeDescription(type)
}));
}
/**
* 文字数をカウント
*/
static countCharacters(text) {
return text.length;
}
/**
* さとり構文の妥当性をチェック
*/
static validateSatoriText(text) {
const characterCount = this.countCharacters(text);
const warnings = [];
let isValid = true;
// 文字数チェック
if (characterCount > 160) {
warnings.push('文字数が160文字を超えています(推奨: 140文字程度)');
isValid = false;
}
if (characterCount < 50) {
warnings.push('文字数が少なすぎます(推奨: 100文字以上)');
}
// 基本的な内容チェック
if (!text.includes('。') && !text.includes('!') && !text.includes('?')) {
warnings.push('文末の句読点がありません');
}
return {
isValid,
characterCount,
warnings
};
}
}
//# sourceMappingURL=satori-templates.js.map