Tsudzuri Logo
Tsudzuri
AI Proofreading

自分では気づけないミスを、
AIが優しく指摘。

誤字脱字や表記ゆれを自動チェック。作品のクオリティを底上げする、頼れるパートナーです。

AIが修正箇所を提案

ファイルの修正箇所をAIが解析。 推敲の手間を大幅に減らし、創作そのものに時間を割くことができます。

AI Proofreading

AI校正

履歴
2024/04/15 14:30
校正結果
L3:C12

「の」が3回連続しています

L3:C50

「いってき」→「一滴」
文脈から「一滴」が適切だと思われます。

表記ゆれの統一

長編小説でも統一感のある文章を維持し、プロフェッショナルな品質を保ちます。

文体のアドバイス

冗長な表現や読みにくい文構造について改善案を提案。 「もっと簡潔に」「より感情的に」など、目指すスタイルに合わせたブラッシュアップを支援します。

修正案の履歴を保持

修正案の履歴を保持することで、過去の修正内容を確認し、より良い文章を編集することができます。

ToDo機能

どの修正案を直したかをチェックしておくことができます。

プロンプトのカスタマイズと変数仕様

AIに送信されるプロンプトは自由にカスタマイズ可能です。以下の変数をプロンプト内に記述することで、エディタの状態や設定値を動的に埋め込むことができます。

{targetFile}

現在開いているファイルの全文です。AIが行番号を認識しやすいよう、行番号を行頭に付与してフォーマットされます。

Internal Logic
// 行番号を付与(エディタの行番号と合わせるため)
const lines = fileContent.split(/\r\n|\n|\r/);
const numberedContent = lines.map((line, index) => `${index + 1}: ${line}`).join('\n');
const targetFileContent = `\`\`\`txt\n${numberedContent}\n\`\`\``;

{appendFiles}

追加参照ファイルとして選択されたファイルの内容です。

Internal Logic
// 追加ファイルがある場合
if (panelSettings.additionalFileIds.length > 0) {
    for (const fileId of panelSettings.additionalFileIds) {
        const file = projectStore.files.find(f => f.id === fileId);
        if (file && file.type === 'file') {
            appendFilesContent += `\n### ${file.name}\n\`\`\`\n${file.content || ''}\n\`\`\`\n`;
        }
    }
} else {
    appendFilesContent = '追加ファイルなし';
}

{variables}

「変数・用語集」に登録されているデータです。パネル設定で「変数の情報を付与」がオンの場合にのみ埋め込まれます。

Internal Logic
// 変数設定が有効な場合
if (panelSettings.includeVariables) {
    const variables = useVariableStore.getState().variables;
    if (variables.length > 0) {
        variables.forEach(v => {
            variablesContent += `- ${v.name}: ${v.value}\n`;
        });
    } else {
        variablesContent = '変数登録なし';
    }
} else {
    variablesContent = '変数情報なし(設定で無効)';
}

{timelines}

「年表」に登録されているデータです。パネル設定で「年表の情報を付与」がオンの場合にのみ埋め込まれます。

Internal Logic
// 年表設定が有効な場合
if (panelSettings.includeTimeline) {
    const events = useTimelineStore.getState().events;
    if (events.length > 0) {
        events.forEach(e => {
            const indent = e.parentId ? '  ' : '';
            timelinesContent += `${indent}- ${e.timetag}: ${e.title}`;
            if (e.description) {
                 timelinesContent += ` - ${e.description}`;
            }
            timelinesContent += '\n';
        });
    } else {
        timelinesContent = 'タイムライン情報なし';
    }
} else {
    timelinesContent = 'タイムライン情報なし(設定で無効)';
}

外部API利用に関するご注意

  • 本機能の利用には、OpenAI、Gemini、Anthropicなどの外部AIサービスのAPIキーが別途必要です。ユーザーご自身で取得・設定してください。
  • API利用料はユーザーご自身の負担となります。
  • Tsudzuriは、AIによって生成された内容の正確性や、API利用に伴うコストについて一切の責任を負いません。