fix: hide lyrics and exclude from zip and descriptions for instrumental tracks

This commit is contained in:
Jannik committed 2026-08-15 10:44:59 +02:00
1 parent d157d34fca
commit 07156d8ea0
3 files changed
+14 -10

No files matched your search

+2 -2
View File
@@ -26,10 +26,10 @@ REQUIRED JSON STRUCTURE:
"Title 2: direct/strong (max 4 words)",
"Title 3: abstract/intriguing (max 4 words)"
],
"lyrics": "Full lyrics with Suno section tags [Verse], [Chorus], [Bridge], [Outro], etc. Use AABB or ABAB rhyme scheme consistently. Lines must be rhythmically singable. CRITICAL: The lyrics must NOT reference the genre, instruments, or music production. No references to pianos, guitars, beats, orchestras, or any musical elements. Write about universal human themes: emotion, nature, love, time, memory, journey, longing.",
"lyrics": "If instrumental, return an empty string \"\". Otherwise: Full lyrics with Suno section tags [Verse], [Chorus], [Bridge], [Outro], etc. Use AABB or ABAB rhyme scheme consistently. Lines must be rhythmically singable. CRITICAL: The lyrics must NOT reference the genre, instruments, or music production. No references to pianos, guitars, beats, orchestras, or any musical elements. Write about universal human themes: emotion, nature, love, time, memory, journey, longing.",
"style": "Comma-separated Suno style description, max 120 words. Include: tempo with BPM range, key instruments, production style, texture, energy level, mood, vocal style (or 'instrumental, no vocals'). NEVER name any artist, band, or use 'sounds like'.",
"negative_style": "Comma-separated list of genres, instruments, moods, and styles that should NOT appear.",
"youtube_description": "In the same language as the lyrics. Follow this exact structure:\\n\\n[One evocative hook sentence tied to the mood]\\n\\n[2-3 sentences describing the music, mood, and emotional experience]\\n\\n────────────────────────────\\n\\n[Full lyrics, copied exactly]\\n\\n────────────────────────────\\n\\n[Warm, genuine call to action: ask viewers to like, subscribe, and comment what the music makes them feel or imagine]\\n\\n#hashtag1 #hashtag2 ... (12-15 hashtags: mix of genre, mood, and tool tags like #SunoAI #AIMusic)",
"youtube_description": "In the same language as the lyrics. Follow this exact structure:\\n\\n[One evocative hook sentence tied to the mood]\\n\\n[2-3 sentences describing the music, mood, and emotional experience]\\n\\n────────────────────────────\\n\\n[Full lyrics, copied exactly. IF INSTRUMENTAL, OMIT THIS SECTION AND THE DIVIDERS COMPLETELY]\\n\\n────────────────────────────\\n\\n[Warm, genuine call to action: ask viewers to like, subscribe, and comment what the music makes them feel or imagine]\\n\\n#hashtag1 #hashtag2 ... (12-15 hashtags: mix of genre, mood, and tool tags like #SunoAI #AIMusic)",
"video_prompts": [
{
"type": "Abstract",
+9 -7
View File
@@ -98,13 +98,15 @@ export function ResultsPanel({
onRegenerate={() => onRegenerateSection("titles")}
regenerating={Boolean(regenerating.titles)}
/>
<LyricsCard
lyrics={assets.lyrics}
originalLyrics={originalAssets.lyrics}
onChange={(v) => onChange("lyrics", v)}
onRegenerate={(selectedText) => onRegenerateSection("lyrics", selectedText)}
regenerating={Boolean(regenerating.lyrics)}
/>
{assets.lyrics && assets.lyrics.trim().length > 0 && (
<LyricsCard
lyrics={assets.lyrics}
originalLyrics={originalAssets.lyrics}
onChange={(v) => onChange("lyrics", v)}
onRegenerate={(selectedText) => onRegenerateSection("lyrics", selectedText)}
regenerating={Boolean(regenerating.lyrics)}
/>
)}
<StyleCard
style={assets.style}
negativeStyle={assets.negative_style}
+3 -1
View File
@@ -65,7 +65,9 @@ export async function buildSongZip(
): Promise<Blob> {
const zip = new JSZip();
zip.file("Style.txt", buildStyleTxt(assets));
zip.file("Text.txt", buildTextTxt(assets));
if (assets.lyrics && assets.lyrics.trim().length > 0) {
zip.file("Text.txt", buildTextTxt(assets));
}
zip.file("Videodescription.txt", buildYouTubeDescriptionTxt(assets));
zip.file("Videoprompt.txt", buildVideoPromptTxt(assets));
return zip.generateAsync({ type: "blob" });