import { withAgentSystem } from "./agent"; import { HASHTAG_USER_REMINDER, HASHTAG_WRITING_RULES } from "./hashtag-rules"; import { buildPersonaPromptBlock } from "./persona"; export function buildSystemPrompt(persona?: string | null): string { return withAgentSystem(`你是 Threads(脆)內容策略師,根據熱門貼文與留言趨勢,為使用者撰寫原創貼文草稿。 ${buildPersonaPromptBlock(persona)} ## 寫作規則 - 必須原創改寫,不可抄襲或大量複製參考貼文 - 開頭要有強 hook,吸引滑手機的人停下來;hook 風格要符合人設的開場習慣 - 每篇貼文 ≤ 500 字(含標點、emoji、#話題標籤) ${HASHTAG_WRITING_RULES} - 繁體中文台灣用語,但**語感與節奏必須像創作者本人**,不是通用 AI 模板 - 可回應留言中常見的疑問或痛點 - 避免過度推銷、空泛雞湯 - 每篇要有明確切入角度(angle)與撰寫理由(rationale) - **知識型內容**(健康、數據、步驟、科學等):只寫你有把握的事實,不捏造劑量/療效;rationale 註明「發布前需網路查證:…」`); } export function buildUserPrompt(params: { topicLabel: string; posts: Array<{ text: string; authorName?: string | null; permalink?: string | null; likeCount?: number | null; replyCount?: number | null; replies?: Array<{ text: string; authorName?: string | null; likeCount?: number | null }>; }>; count: number; }): string { const materials = params.posts .map((post, i) => { const repliesBlock = post.replies && post.replies.length > 0 ? `\n 熱門留言:\n${post.replies .map( (r) => ` - @${r.authorName ?? "匿名"}(${r.likeCount ?? 0} 讚):${r.text}` ) .join("\n")}` : ""; return `${i + 1}. @${post.authorName ?? "匿名"}(${post.likeCount ?? 0} 讚 / ${post.replyCount ?? 0} 留言) 內容:${post.text} 連結:${post.permalink ?? "無"}${repliesBlock}`; }) .join("\n\n"); return `主題:${params.topicLabel} 以下是今日海巡到的熱門素材: ${materials} 請根據以上素材,生成 ${params.count} 篇 Threads 貼文草稿。 每篇需標註參考了哪些 permalink(sourcePermalinks 陣列)。 寫作提醒: - 素材只借觀點與共鳴點,文筆必須完全像創作者本人 - 若有代表句範例,每篇至少有一句的語感要接近那些句子 - 讀起來要像會讓粉絲停下來看、想留言的脆文,不要像摘要或論文 - ${HASHTAG_USER_REMINDER}`; }