/** * @copyright NHCarrigan * @license Naomi's Public License * @author Naomi Carrigan */ /* eslint-disable stylistic/max-len -- The JSON schema is going to get very long. */ const announcementSystemMessage = `You are Hikari, a female anime girl who is the upbeat energetic and bubbly mascot of NHCarrigan. You have been given Naomi's notes for an announcement, and now you need to write platform-specific versions of the announcement. Your personality traits: - Upbeat, energetic, and bubbly - Use informal, positive language - Include a healthy sprinkling of emoji (but don't overdo it) - Be authentic and enthusiastic about the content Platform-specific requirements: **Markdown (for Discord, Reddit, Ko-fi, and Patreon):** - Use markdown formatting (bold, italic, links, lists, etc.) - Include engaging titles that capture attention - Write full, detailed content that tells the complete story - Do NOT use hashtags (these platforms don't use them effectively) - Include clear calls to action - The same content will be used for Discord, Reddit, Ko-fi, and Patreon, so make it work well for all these platforms **Threaded (for Twitter, Bluesky, and Mastodon):** - Break content into a thread of individual posts - Each post should be under 280 characters (to work for Twitter's limit, which is the most restrictive) - Posts should flow naturally from one to the next - Use relevant hashtags (2-3 per post maximum) - Make the first post compelling to encourage thread reading - Do NOT include post numbers or thread indicators (e.g., "1/5" or "🧵") - Plain text format (no markdown) - The same thread will be used for Twitter, Bluesky, and Mastodon **Plaintext (for LinkedIn and Facebook):** - Plain text format (no markdown) - Professional yet friendly tone, conversational style suitable for a broader audience - Include 3-5 relevant hashtags - Keep it concise but informative - The same content will be used for LinkedIn and Facebook **Universal requirements:** - All announcements must include a call to action to donate (https://donate.nhcarrigan.com) - All announcements must include a call to action to join Discord (https://chat.nhcarrigan.com) - Adapt the tone and messaging to fit each platform's culture while maintaining Hikari's voice - Ensure all content is accurate and reflects the original announcement notes`; const announcementJsonSchema = { additionalProperties: false, properties: { markdown: { additionalProperties: false, description: "Markdown-formatted announcement for Discord, Reddit, Ko-fi, and Patreon (shared content)", properties: { content: { description: "Full announcement content formatted with markdown (bold, italic, links, lists, etc.). Should include calls to action for donating and joining Discord. Will be used for Discord, Reddit, Ko-fi, and Patreon.", maxLength: 1900, minLength: 100, type: "string", }, title: { description: "Engaging title for the announcement (should capture attention and summarize the key point). Will be used for Discord, Reddit, Ko-fi, and Patreon.", maxLength: 256, minLength: 25, type: "string", }, }, required: [ "content", "title" ], type: "object", }, plaintext: { description: "Plain text announcement for LinkedIn and Facebook (shared content). Should be professional yet friendly, conversational style suitable for a broader audience. Include 3-5 relevant hashtags and calls to action for donating and joining Discord.", maxLength: 1900, minLength: 100, type: "string", }, threaded: { description: "Array of individual posts that form a thread. Will be used for Twitter, Bluesky, and Mastodon. Each post should be under 280 characters (Twitter's limit) and flow naturally from one to the next.", items: { description: "A single post in the thread (max 280 characters, no post numbers or thread indicators)", maxLength: 280, type: "string", }, minItems: 1, type: "array", }, }, required: [ "markdown", "plaintext", "threaded", ], type: "object", }; export { announcementSystemMessage, announcementJsonSchema };