新增人味儿文案优化提示词

This commit is contained in:
czj
2026-07-02 14:34:29 +08:00
parent c2010fa8f4
commit 27d7a44ad0
5 changed files with 202 additions and 1 deletions
+101
View File
@@ -1,5 +1,6 @@
import type {
ArticleInput,
CopyOptimizationRequest,
OptimizationFactCard,
OptimizedArticle,
PublishPlatform,
@@ -97,6 +98,44 @@ const QA_OUTPUT_CONTRACT = [
),
].join("\n");
const RENWEI_OUTPUT_CONTRACT = [
"Output type contract:",
"- optimized_text must be a string.",
"- change_notes must be an array of { original, revised, reason, confidence, revertible }.",
"- confidence must be confident or uncertain.",
"- revertible must be boolean.",
"- ai_taste_checks must be an array of { rule_id, status, evidence, suggestion }.",
"- rule_id must be one of meaning_inflation, promotion_tone, formulaic_sentence, format_trace, chat_trace, filler_hedging.",
"- status must be pass or warn.",
"- warnings must be string[].",
"Example:",
JSON.stringify(
{
optimized_text: "我把句子顺了一下。",
change_notes: [
{
original: "我把句子顺顺。",
revised: "我把句子顺了一下。",
reason: "修掉重复,让句子自然收住。",
confidence: "confident",
revertible: false,
},
],
ai_taste_checks: [
{
rule_id: "promotion_tone",
status: "pass",
evidence: "没有新增宣传腔。",
suggestion: "",
},
],
warnings: [],
},
null,
2,
),
].join("\n");
function formatPlatformGuidance(selected: PublishPlatform) {
return [
"平台模板选项:",
@@ -135,6 +174,29 @@ export const TARGETED_REWRITER_SYSTEM_PROMPT = [
JSON_ONLY_PROMPT,
].join(" ");
export const RENWEI_COPY_OPTIMIZER_SYSTEM_PROMPT = [
"你是中文普通文案编辑,不是营销代笔工具。",
"目标是让文字更顺,但改完后作者还在。",
"硬性规则:少动,只改真正打绊的地方;保留作者的位置、语气、口头习惯和可识别手迹。",
"不凭空新增时间、地点、数字、案例、情绪、场景、资质、效果承诺或没有来源的事实。",
"不写过度金句,不要把普通句子改成宣传腔、排比、格言、万能展望或意义拔高。",
"拿不准时白描,不拔高;拿不准的改动必须标记为 uncertain 且 revertible 为 true。",
"改后只检查被改动句子是否引入 AI 味,并逐处说明改了什么、为什么改。",
JSON_ONLY_PROMPT,
].join(" ");
function describeRenweiIntensity(
intensity: CopyOptimizationRequest["intensity"],
) {
const descriptions = {
light: "light / 轻微整理:尽量只修顺病句、错别字、明显卡顿。",
medium: "medium / 适度润色:允许调整句序和连接,但不改变作者表达的粗糙感。",
conversational:
"conversational / 更口语自然:让口吻更像真人说话,但不凭空增加表演性口语。",
} satisfies Record<CopyOptimizationRequest["intensity"], string>;
return descriptions[intensity];
}
export function buildFactExtractorPrompt(input: ArticleInput) {
return [
"Return a CandidateFactCard JSON object with these exact keys:",
@@ -247,3 +309,42 @@ export function buildTargetedRewritePrompt(input: {
JSON.stringify(input.failedChecks, null, 2),
].join("\n");
}
export function buildRenweiCopyOptimizationPrompt(
input: CopyOptimizationRequest,
) {
return [
"Return a CopyOptimizationResult JSON object with these exact keys:",
"optimized_text, change_notes, ai_taste_checks, warnings.",
"",
RENWEI_OUTPUT_CONTRACT,
"",
"强度选项:",
"- light:轻微整理。",
"- medium:适度润色。",
"- conversational:更口语自然。",
`当前修改强度:${describeRenweiIntensity(input.intensity)}`,
"",
"改稿要求:",
"- 默认少动,不追求更漂亮,只清掉绊脚处。",
"- 毛边先假设是作者手迹,不要机械删口语、停顿或重复。",
"- 不写“不是X,而是Y”、排比三连、万能展望、宣传腔或假深刻句式。",
"- 不使用破折号作为装饰性解释。",
"- 必须逐处说明改动;未改动的句子不要编造改动说明。",
"- AI 味检查只检查被改动句子。",
"",
"User request:",
JSON.stringify(
{
goal: input.goal,
intensity: input.intensity,
user_instructions: input.user_instructions,
},
null,
2,
),
"",
"source_text:",
input.source_text,
].join("\n");
}