@zodic/shared 0.0.234 → 0.0.235
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/services/ConceptService.ts +280 -66
- package/package.json +1 -1
- package/utils/conceptPrompts.ts +68 -63
|
@@ -481,28 +481,27 @@ export class ConceptService {
|
|
|
481
481
|
console.log(
|
|
482
482
|
`💾 Storing structured content for ${conceptSlug}:${combinationString} in D1...`
|
|
483
483
|
);
|
|
484
|
-
await db
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
]);
|
|
484
|
+
await db.batch([
|
|
485
|
+
db
|
|
486
|
+
.update(conceptsData)
|
|
487
|
+
.set({ content: JSON.stringify(structuredContentEN) })
|
|
488
|
+
.where(
|
|
489
|
+
and(
|
|
490
|
+
eq(conceptsData.id, conceptEN.id),
|
|
491
|
+
eq(conceptsData.language, 'en-us')
|
|
492
|
+
)
|
|
493
|
+
),
|
|
494
|
+
|
|
495
|
+
db
|
|
496
|
+
.update(conceptsData)
|
|
497
|
+
.set({ content: JSON.stringify(structuredContentPT) })
|
|
498
|
+
.where(
|
|
499
|
+
and(
|
|
500
|
+
eq(conceptsData.id, conceptPT.id),
|
|
501
|
+
eq(conceptsData.language, 'pt-br')
|
|
502
|
+
)
|
|
503
|
+
),
|
|
504
|
+
]);
|
|
506
505
|
|
|
507
506
|
console.log(
|
|
508
507
|
`✅ Structured content stored successfully for ${conceptSlug}:${combinationString}.`
|
|
@@ -551,8 +550,10 @@ export class ConceptService {
|
|
|
551
550
|
structuredContentEN: StructuredConceptContent;
|
|
552
551
|
structuredContentPT: StructuredConceptContent;
|
|
553
552
|
} {
|
|
554
|
-
console.log(
|
|
555
|
-
|
|
553
|
+
console.log(
|
|
554
|
+
`📌 [START] Parsing structured content for ${conceptSlug} from ChatGPT response.`
|
|
555
|
+
);
|
|
556
|
+
|
|
556
557
|
// ✅ Step 1: Clean artifacts before processing
|
|
557
558
|
let cleanedResponse = response
|
|
558
559
|
.replace(/[*#•]/g, '') // Remove bullet points, bold markers, headings
|
|
@@ -561,9 +562,12 @@ export class ConceptService {
|
|
|
561
562
|
.replace(/\s+EN:\s*/g, '\nEN: ') // Ensure consistent "EN:" formatting
|
|
562
563
|
.replace(/\s+PT:\s*/g, '\nPT: ') // Ensure consistent "PT:" formatting
|
|
563
564
|
.trim();
|
|
564
|
-
|
|
565
|
-
console.log(
|
|
566
|
-
|
|
565
|
+
|
|
566
|
+
console.log(
|
|
567
|
+
'🔹 [CLEANED RESPONSE]:',
|
|
568
|
+
cleanedResponse.slice(0, 500) + '...'
|
|
569
|
+
);
|
|
570
|
+
|
|
567
571
|
// ✅ Step 2: Define Section Titles Per Concept
|
|
568
572
|
const conceptSections: Record<string, { en: string[]; pt: string[] }> = {
|
|
569
573
|
crown: {
|
|
@@ -594,7 +598,7 @@ export class ConceptService {
|
|
|
594
598
|
'O Poder da Expressão',
|
|
595
599
|
'A Dança da Ação e Reação',
|
|
596
600
|
'Navegando Desafios',
|
|
597
|
-
'O Espelho
|
|
601
|
+
'O Espelho das Relações',
|
|
598
602
|
'Impacto no Mundo',
|
|
599
603
|
],
|
|
600
604
|
},
|
|
@@ -663,72 +667,282 @@ export class ConceptService {
|
|
|
663
667
|
],
|
|
664
668
|
},
|
|
665
669
|
};
|
|
666
|
-
|
|
670
|
+
|
|
667
671
|
const sectionsEN = conceptSections[conceptSlug]?.en;
|
|
668
672
|
const sectionsPT = conceptSections[conceptSlug]?.pt;
|
|
669
|
-
|
|
673
|
+
|
|
670
674
|
if (!sectionsEN || !sectionsPT) {
|
|
671
675
|
throw new Error(`❌ Unknown concept: ${conceptSlug}`);
|
|
672
676
|
}
|
|
673
|
-
|
|
674
|
-
// ✅ Step 3:
|
|
675
|
-
const
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
677
|
+
|
|
678
|
+
// ✅ Step 3: Detect if AI interleaved EN/PT sections
|
|
679
|
+
const interleavedMatches = cleanedResponse.match(
|
|
680
|
+
/(EN:\s*[\s\S]+?PT:\s*[\s\S]+?)(?=EN:|$)/g
|
|
681
|
+
);
|
|
682
|
+
let extractedEN = '';
|
|
683
|
+
let extractedPT = '';
|
|
684
|
+
|
|
685
|
+
if (interleavedMatches) {
|
|
686
|
+
console.warn(
|
|
687
|
+
'⚠️ Detected interleaved EN/PT sections. Parsing accordingly.'
|
|
688
|
+
);
|
|
689
|
+
extractedEN = interleavedMatches
|
|
690
|
+
.map((pair) => pair.match(/EN:\s*([\s\S]+?)\s*PT:/)?.[1]?.trim() || '')
|
|
691
|
+
.join('\n\n');
|
|
692
|
+
extractedPT = interleavedMatches
|
|
693
|
+
.map((pair) => pair.match(/PT:\s*([\s\S]+)/)?.[1]?.trim() || '')
|
|
694
|
+
.join('\n\n');
|
|
695
|
+
} else {
|
|
696
|
+
console.log(
|
|
697
|
+
'✅ Standard format detected (EN block followed by PT block).'
|
|
698
|
+
);
|
|
699
|
+
extractedEN =
|
|
700
|
+
cleanedResponse.match(/EN:\s*([\s\S]+?)\s*PT:/)?.[1]?.trim() || '';
|
|
701
|
+
extractedPT = cleanedResponse.match(/PT:\s*([\s\S]+)/)?.[1]?.trim() || '';
|
|
692
702
|
}
|
|
693
|
-
|
|
694
|
-
|
|
703
|
+
|
|
704
|
+
console.log(
|
|
705
|
+
'✅ [MATCH SUCCESS] Extracted English Content:',
|
|
706
|
+
extractedEN.slice(0, 500) + '...'
|
|
707
|
+
);
|
|
708
|
+
console.log(
|
|
709
|
+
'✅ [MATCH SUCCESS] Extracted Portuguese Content:',
|
|
710
|
+
extractedPT.slice(0, 500) + '...'
|
|
711
|
+
);
|
|
712
|
+
|
|
713
|
+
// ✅ Step 4: Extract structured sections dynamically
|
|
695
714
|
function extractSections(text: string, sectionTitles: string[]) {
|
|
696
715
|
return sectionTitles.map((title) => {
|
|
697
716
|
console.log(`🔍 [PROCESSING] Extracting section: "${title}"`);
|
|
698
|
-
|
|
699
|
-
const regex = new RegExp(
|
|
717
|
+
|
|
718
|
+
const regex = new RegExp(
|
|
719
|
+
`\\d+\\.\\s*${title}:\\s*([\\s\\S]+?)(?=\\n\\d+\\.\\s*[A-Z]|$)`
|
|
720
|
+
);
|
|
700
721
|
const match = text.match(regex);
|
|
701
|
-
|
|
722
|
+
|
|
702
723
|
if (!match) {
|
|
703
724
|
console.warn(`⚠️ [WARNING] Missing section: "${title}"`);
|
|
704
725
|
return { type: 'section', title, content: ['❌ Section Missing'] };
|
|
705
726
|
}
|
|
706
|
-
|
|
727
|
+
|
|
707
728
|
const paragraphs = match[1]
|
|
708
729
|
.trim()
|
|
709
730
|
.split(/\n{2,}/)
|
|
710
731
|
.map((p) => p.trim())
|
|
711
732
|
.filter((p) => p.length > 0);
|
|
712
|
-
|
|
733
|
+
|
|
713
734
|
console.log(`✅ [EXTRACTED] "${title}" - Parsed Content:`, paragraphs);
|
|
714
|
-
|
|
715
735
|
return { type: 'section', title, content: paragraphs };
|
|
716
736
|
});
|
|
717
737
|
}
|
|
718
|
-
|
|
719
|
-
const structuredContentEN = extractSections(
|
|
720
|
-
const structuredContentPT = extractSections(
|
|
721
|
-
|
|
722
|
-
console.log(
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
738
|
+
|
|
739
|
+
const structuredContentEN = extractSections(extractedEN, sectionsEN);
|
|
740
|
+
const structuredContentPT = extractSections(extractedPT, sectionsPT);
|
|
741
|
+
|
|
742
|
+
console.log(
|
|
743
|
+
'🎯 [FINAL RESULT] Parsed English Content:',
|
|
744
|
+
JSON.stringify(structuredContentEN, null, 2)
|
|
745
|
+
);
|
|
746
|
+
console.log(
|
|
747
|
+
'🎯 [FINAL RESULT] Parsed Portuguese Content:',
|
|
748
|
+
JSON.stringify(structuredContentPT, null, 2)
|
|
749
|
+
);
|
|
750
|
+
|
|
751
|
+
console.log(
|
|
752
|
+
'✅ [COMPLETE] Structured content parsing finished successfully.'
|
|
753
|
+
);
|
|
754
|
+
|
|
727
755
|
return {
|
|
728
756
|
structuredContentEN,
|
|
729
757
|
structuredContentPT,
|
|
730
758
|
};
|
|
731
759
|
}
|
|
760
|
+
|
|
761
|
+
// private parseStructuredContent(
|
|
762
|
+
// conceptSlug: Concept,
|
|
763
|
+
// response: string
|
|
764
|
+
// ): {
|
|
765
|
+
// structuredContentEN: StructuredConceptContent;
|
|
766
|
+
// structuredContentPT: StructuredConceptContent;
|
|
767
|
+
// } {
|
|
768
|
+
// console.log(`📌 [START] Parsing structured content for ${conceptSlug} from ChatGPT response.`);
|
|
769
|
+
|
|
770
|
+
// // ✅ Step 1: Clean artifacts before processing
|
|
771
|
+
// let cleanedResponse = response
|
|
772
|
+
// .replace(/[*#•]/g, '') // Remove bullet points, bold markers, headings
|
|
773
|
+
// .replace(/---+/g, '') // Remove dividers (like "---")
|
|
774
|
+
// .replace(/\n\s*\n/g, '\n\n') // Normalize multiple line breaks
|
|
775
|
+
// .replace(/\s+EN:\s*/g, '\nEN: ') // Ensure consistent "EN:" formatting
|
|
776
|
+
// .replace(/\s+PT:\s*/g, '\nPT: ') // Ensure consistent "PT:" formatting
|
|
777
|
+
// .trim();
|
|
778
|
+
|
|
779
|
+
// console.log('🔹 [CLEANED RESPONSE]:', cleanedResponse.slice(0, 500) + '...');
|
|
780
|
+
|
|
781
|
+
// // ✅ Step 2: Define Section Titles Per Concept
|
|
782
|
+
// const conceptSections: Record<string, { en: string[]; pt: string[] }> = {
|
|
783
|
+
// crown: {
|
|
784
|
+
// en: [
|
|
785
|
+
// 'Core Identity',
|
|
786
|
+
// 'Strengths and Challenges',
|
|
787
|
+
// 'Path to Fulfillment',
|
|
788
|
+
// 'Emotional Depth',
|
|
789
|
+
// 'Vision and Aspirations',
|
|
790
|
+
// ],
|
|
791
|
+
// pt: [
|
|
792
|
+
// 'Identidade Essencial',
|
|
793
|
+
// 'Forças e Desafios',
|
|
794
|
+
// 'Caminho para a Plenitude',
|
|
795
|
+
// 'Profundidade Emocional',
|
|
796
|
+
// 'Visão e Aspirações',
|
|
797
|
+
// ],
|
|
798
|
+
// },
|
|
799
|
+
// scepter: {
|
|
800
|
+
// en: [
|
|
801
|
+
// 'The Power of Expression',
|
|
802
|
+
// 'The Dance of Action and Reaction',
|
|
803
|
+
// 'Navigating Challenges',
|
|
804
|
+
// 'The Mirror of Relationships',
|
|
805
|
+
// 'Impact on the World',
|
|
806
|
+
// ],
|
|
807
|
+
// pt: [
|
|
808
|
+
// 'O Poder da Expressão',
|
|
809
|
+
// 'A Dança da Ação e Reação',
|
|
810
|
+
// 'Navegando Desafios',
|
|
811
|
+
// 'O Espelho dos Relacionamentos',
|
|
812
|
+
// 'Impacto no Mundo',
|
|
813
|
+
// ],
|
|
814
|
+
// },
|
|
815
|
+
// amulet: {
|
|
816
|
+
// en: [
|
|
817
|
+
// 'The Shield of Protection',
|
|
818
|
+
// 'The Strength Within',
|
|
819
|
+
// 'Nurturing Growth',
|
|
820
|
+
// 'The Cycle of Renewal',
|
|
821
|
+
// 'The Anchor of Wisdom',
|
|
822
|
+
// ],
|
|
823
|
+
// pt: [
|
|
824
|
+
// 'O Escudo da Proteção',
|
|
825
|
+
// 'A Força Interior',
|
|
826
|
+
// 'Cultivando o Crescimento',
|
|
827
|
+
// 'O Ciclo da Renovação',
|
|
828
|
+
// 'A Âncora da Sabedoria',
|
|
829
|
+
// ],
|
|
830
|
+
// },
|
|
831
|
+
// ring: {
|
|
832
|
+
// en: [
|
|
833
|
+
// 'Magnetic Pull',
|
|
834
|
+
// 'Hidden Desires',
|
|
835
|
+
// 'The Fated Dance',
|
|
836
|
+
// 'Unveiling the Shadows',
|
|
837
|
+
// 'Your Love Power',
|
|
838
|
+
// ],
|
|
839
|
+
// pt: [
|
|
840
|
+
// 'Força Magnética',
|
|
841
|
+
// 'Desejos Ocultos',
|
|
842
|
+
// 'A Dança do Destino',
|
|
843
|
+
// 'Revelando as Sombras',
|
|
844
|
+
// 'Seu Poder no Amor',
|
|
845
|
+
// ],
|
|
846
|
+
// },
|
|
847
|
+
// lantern: {
|
|
848
|
+
// en: [
|
|
849
|
+
// 'The Call to Awakening',
|
|
850
|
+
// 'Walking Through Shadows',
|
|
851
|
+
// 'The Inner Flame',
|
|
852
|
+
// 'Revelations and Truths',
|
|
853
|
+
// 'Becoming the Light',
|
|
854
|
+
// ],
|
|
855
|
+
// pt: [
|
|
856
|
+
// 'O Chamado para o Despertar',
|
|
857
|
+
// 'Caminhando Pelas Sombras',
|
|
858
|
+
// 'A Chama Interior',
|
|
859
|
+
// 'Revelações e Verdades',
|
|
860
|
+
// 'Tornando-se a Luz',
|
|
861
|
+
// ],
|
|
862
|
+
// },
|
|
863
|
+
// orb: {
|
|
864
|
+
// en: [
|
|
865
|
+
// 'The Path Unfolding',
|
|
866
|
+
// 'A Calling Beyond the Self',
|
|
867
|
+
// 'Turning Points of Fate',
|
|
868
|
+
// 'Mastering the Journey',
|
|
869
|
+
// 'Legacy and Impact',
|
|
870
|
+
// ],
|
|
871
|
+
// pt: [
|
|
872
|
+
// 'O Caminho que se Revela',
|
|
873
|
+
// 'Um Chamado Além de Si Mesmo',
|
|
874
|
+
// 'Pontos de Virada do Destino',
|
|
875
|
+
// 'Dominando a Jornada',
|
|
876
|
+
// 'Legado e Impacto',
|
|
877
|
+
// ],
|
|
878
|
+
// },
|
|
879
|
+
// };
|
|
880
|
+
|
|
881
|
+
// const sectionsEN = conceptSections[conceptSlug]?.en;
|
|
882
|
+
// const sectionsPT = conceptSections[conceptSlug]?.pt;
|
|
883
|
+
|
|
884
|
+
// if (!sectionsEN || !sectionsPT) {
|
|
885
|
+
// throw new Error(`❌ Unknown concept: ${conceptSlug}`);
|
|
886
|
+
// }
|
|
887
|
+
|
|
888
|
+
// // ✅ Step 3: Extract English and Portuguese content separately
|
|
889
|
+
// const enMatches = cleanedResponse.match(/EN:\s*([\s\S]+?)\s*PT:/);
|
|
890
|
+
// const ptMatches = cleanedResponse.match(/PT:\s*([\s\S]+)/);
|
|
891
|
+
|
|
892
|
+
// if (!enMatches || !ptMatches) {
|
|
893
|
+
// console.error('❌ [ERROR] Missing English or Portuguese content in response.');
|
|
894
|
+
// throw new Error('❌ Missing English or Portuguese content in response.');
|
|
895
|
+
// }
|
|
896
|
+
|
|
897
|
+
// let enContent = enMatches[1].trim();
|
|
898
|
+
// let ptContent = ptMatches[1].trim();
|
|
899
|
+
|
|
900
|
+
// console.log('✅ [MATCH SUCCESS] Extracted English Content:', enContent.slice(0, 500) + '...');
|
|
901
|
+
// console.log('✅ [MATCH SUCCESS] Extracted Portuguese Content:', ptContent.slice(0, 500) + '...');
|
|
902
|
+
|
|
903
|
+
// // ✅ Step 4: Debug **why** PT content has "EN:"
|
|
904
|
+
// if (ptContent.includes('EN:')) {
|
|
905
|
+
// console.warn('⚠️ PT content contains "EN:". Check if parsing was incorrect.');
|
|
906
|
+
// }
|
|
907
|
+
|
|
908
|
+
// // ✅ Step 5: Extract structured sections
|
|
909
|
+
// function extractSections(text: string, sectionTitles: string[]) {
|
|
910
|
+
// return sectionTitles.map((title) => {
|
|
911
|
+
// console.log(`🔍 [PROCESSING] Extracting section: "${title}"`);
|
|
912
|
+
|
|
913
|
+
// const regex = new RegExp(`\\d+\\.\\s*${title}:\\s*([\\s\\S]+?)(?=\\n\\d+\\.\\s*[A-Z]|$)`);
|
|
914
|
+
// const match = text.match(regex);
|
|
915
|
+
|
|
916
|
+
// if (!match) {
|
|
917
|
+
// console.warn(`⚠️ [WARNING] Missing section: "${title}"`);
|
|
918
|
+
// return { type: 'section', title, content: ['❌ Section Missing'] };
|
|
919
|
+
// }
|
|
920
|
+
|
|
921
|
+
// const paragraphs = match[1]
|
|
922
|
+
// .trim()
|
|
923
|
+
// .split(/\n{2,}/)
|
|
924
|
+
// .map((p) => p.trim())
|
|
925
|
+
// .filter((p) => p.length > 0);
|
|
926
|
+
|
|
927
|
+
// console.log(`✅ [EXTRACTED] "${title}" - Parsed Content:`, paragraphs);
|
|
928
|
+
|
|
929
|
+
// return { type: 'section', title, content: paragraphs };
|
|
930
|
+
// });
|
|
931
|
+
// }
|
|
932
|
+
|
|
933
|
+
// const structuredContentEN = extractSections(enContent, sectionsEN);
|
|
934
|
+
// const structuredContentPT = extractSections(ptContent, sectionsPT);
|
|
935
|
+
|
|
936
|
+
// console.log('🎯 [FINAL RESULT] Parsed English Content:', JSON.stringify(structuredContentEN, null, 2));
|
|
937
|
+
// console.log('🎯 [FINAL RESULT] Parsed Portuguese Content:', JSON.stringify(structuredContentPT, null, 2));
|
|
938
|
+
|
|
939
|
+
// console.log('✅ [COMPLETE] Structured content parsing finished successfully.');
|
|
940
|
+
|
|
941
|
+
// return {
|
|
942
|
+
// structuredContentEN,
|
|
943
|
+
// structuredContentPT,
|
|
944
|
+
// };
|
|
945
|
+
// }
|
|
732
946
|
/**
|
|
733
947
|
* Queue image generation for a concept.
|
|
734
948
|
*/
|
package/package.json
CHANGED
package/utils/conceptPrompts.ts
CHANGED
|
@@ -361,28 +361,29 @@ Rules & Formatting:
|
|
|
361
361
|
• Write each section with depth and clarity, around 200 words per topic to ensure a rich and engaging exploration.
|
|
362
362
|
• Avoid mentioning zodiac signs or planets explicitly in the text.
|
|
363
363
|
• Ensure the content is symbolic, empowering, and deeply aligned with the Crown’s themes.
|
|
364
|
+
• Ensure the content provides meaningful insights, helping the reader understand how their unique sign combination shapes their personality, emotions, and life journey.
|
|
364
365
|
• Keep the Portuguese version faithful in tone and depth to the English version, adapting naturally rather than translating literally.
|
|
365
|
-
• Avoid repeating the full name of the concept (e.g., The Crown of Fiery Focus, The
|
|
366
|
-
• Balance the description of the concept
|
|
366
|
+
• Avoid repeating the full name of the concept (e.g., The Crown of Fiery Focus, The Crown of Eternal Harmony). Instead, refer to it using general and unnespecific forms, without unnecessary repetition.
|
|
367
|
+
• Balance the description of the concept's reflection of the sign combination and of the bearer's traits.
|
|
367
368
|
|
|
368
369
|
|
|
369
370
|
Response Format:
|
|
370
371
|
|
|
371
372
|
EN:
|
|
372
373
|
|
|
373
|
-
1. Core Identity: Describe the essence of this Crown, its symbolic representation of inner truth and individuality.
|
|
374
|
-
2. Strengths and Challenges: Highlight the primary strengths this Crown offers and the challenges it may present.
|
|
375
|
-
3. Path to Fulfillment: Explore how this Crown guides its bearer toward self-actualization and purpose.
|
|
376
|
-
4. Emotional Depth: Reflect on how this Crown shapes emotional understanding and resilience.
|
|
377
|
-
5. Vision and Aspirations: Discuss how this Crown inspires its bearer to envision and pursue their dreams.
|
|
374
|
+
1. Core Identity: Describe the essence of this Crown, its symbolic representation of inner truth and individuality.
|
|
375
|
+
2. Strengths and Challenges: Highlight the primary strengths this Crown offers and the challenges it may present.
|
|
376
|
+
3. Path to Fulfillment: Explore how this Crown guides its bearer toward self-actualization and purpose.
|
|
377
|
+
4. Emotional Depth: Reflect on how this Crown shapes emotional understanding and resilience.
|
|
378
|
+
5. Vision and Aspirations: Discuss how this Crown inspires its bearer to envision and pursue their dreams.
|
|
378
379
|
|
|
379
380
|
PT:
|
|
380
381
|
|
|
381
|
-
1. Identidade Essencial: Descreva a essência desta Coroa, sua representação simbólica da verdade interior e individualidade.
|
|
382
|
-
2. Forças e Desafios: Destaque as principais forças que esta Coroa oferece e os desafios que pode apresentar.
|
|
383
|
-
3. Caminho para a Plenitude: Explore como esta Coroa orienta seu portador em direção à autorrealização e propósito.
|
|
384
|
-
4. Profundidade Emocional: Reflita sobre como esta Coroa molda a compreensão emocional e a resiliência.
|
|
385
|
-
5. Visão e Aspirações: Discuta como esta Coroa inspira seu portador a visualizar e perseguir seus sonhos.
|
|
382
|
+
1. Identidade Essencial: Descreva a essência desta Coroa, sua representação simbólica da verdade interior e individualidade.
|
|
383
|
+
2. Forças e Desafios: Destaque as principais forças que esta Coroa oferece e os desafios que pode apresentar.
|
|
384
|
+
3. Caminho para a Plenitude: Explore como esta Coroa orienta seu portador em direção à autorrealização e propósito.
|
|
385
|
+
4. Profundidade Emocional: Reflita sobre como esta Coroa molda a compreensão emocional e a resiliência.
|
|
386
|
+
5. Visão e Aspirações: Discuta como esta Coroa inspira seu portador a visualizar e perseguir seus sonhos.
|
|
386
387
|
`;
|
|
387
388
|
|
|
388
389
|
export const PROMPT_GENERATE_SCEPTER_CONTENT = `
|
|
@@ -395,28 +396,29 @@ Rules & Formatting:
|
|
|
395
396
|
• Write each section with depth and clarity, around 200 words per topic to ensure a rich and engaging exploration.
|
|
396
397
|
• Avoid mentioning zodiac signs or planets explicitly in the text.
|
|
397
398
|
• Ensure the content is symbolic, insightful, and deeply aligned with the Scepter’s themes.
|
|
399
|
+
• Ensure the content provides meaningful insights, helping the reader understand how their unique sign combination shapes their personality, emotions, and life journey.
|
|
398
400
|
• Keep the Portuguese version faithful in tone and depth to the English version, adapting naturally rather than translating literally.
|
|
399
|
-
• Avoid
|
|
400
|
-
• Balance the description of the concept
|
|
401
|
+
• Avoid using the full name of the concept (e.g., The Scepter of Fiery Focus, The Scepter of Eternal Harmony). Instead, refer to it using general and unnespecific forms, without unnecessary repetition. This is important.
|
|
402
|
+
• Balance the description of the concept's reflection of the sign combination and of the bearer's traits.
|
|
401
403
|
|
|
402
404
|
Response Format:
|
|
403
405
|
|
|
404
406
|
EN:
|
|
405
407
|
|
|
406
|
-
1. The Power of Expression: Describe how the Scepter enhances the bearer’s ability to articulate thoughts, convey emotions, and leave an impact through speech, writing, and presence. Highlight its role in creativity, persuasion, and intellectual engagement.
|
|
407
|
-
2. The Dance of Action and Reaction: Explore how the Scepter influences the bearer’s approach to decision-making, assertiveness, and taking initiative, as well as their responsiveness to external circumstances.
|
|
408
|
-
3. Navigating Challenges: Reflect on how the Scepter empowers the bearer to overcome obstacles, face adversity with resilience, and turn conflicts into opportunities for personal growth and self-mastery.
|
|
409
|
-
4. The Mirror of
|
|
410
|
-
5. Impact on the World: Examine how the Scepter enables the bearer to influence their surroundings, shape perceptions, and carve a lasting presence in their environment, whether through leadership, collaboration, or individual expression.
|
|
408
|
+
1. The Power of Expression: Describe how the Scepter enhances the bearer’s ability to articulate thoughts, convey emotions, and leave an impact through speech, writing, and presence. Highlight its role in creativity, persuasion, and intellectual engagement.
|
|
409
|
+
2. The Dance of Action and Reaction: Explore how the Scepter influences the bearer’s approach to decision-making, assertiveness, and taking initiative, as well as their responsiveness to external circumstances.
|
|
410
|
+
3. Navigating Challenges: Reflect on how the Scepter empowers the bearer to overcome obstacles, face adversity with resilience, and turn conflicts into opportunities for personal growth and self-mastery.
|
|
411
|
+
4. The Mirror of Relations: Discuss how the Scepter shapes the bearer’s connections with others, their role in partnerships, and the way they interact with allies, rivals, and the wider social sphere.
|
|
412
|
+
5. Impact on the World: Examine how the Scepter enables the bearer to influence their surroundings, shape perceptions, and carve a lasting presence in their environment, whether through leadership, collaboration, or individual expression.
|
|
411
413
|
|
|
412
414
|
|
|
413
415
|
PT:
|
|
414
416
|
|
|
415
|
-
1. O Poder da Expressão: Descreva como o Cetro aprimora a capacidade do portador de articular pensamentos, transmitir emoções e deixar um impacto através da fala, escrita e presença. Destaque seu papel na criatividade, persuasão e engajamento intelectual.
|
|
416
|
-
2. A Dança da Ação e Reação: Explore como o Cetro influencia a abordagem do portador na tomada de decisões, assertividade e iniciativa, bem como sua capacidade de resposta às circunstâncias externas.
|
|
417
|
-
3. Navegando Desafios: Reflita sobre como o Cetro capacita o portador a superar obstáculos, enfrentar adversidades com resiliência e transformar conflitos em oportunidades de crescimento pessoal e autodomínio.
|
|
418
|
-
4. O Espelho
|
|
419
|
-
5. Impacto no Mundo: Examine como o Cetro permite ao portador influenciar seu ambiente, moldar percepções e deixar uma presença duradoura, seja por meio da liderança, colaboração ou expressão individual.
|
|
417
|
+
1. O Poder da Expressão: Descreva como o Cetro aprimora a capacidade do portador de articular pensamentos, transmitir emoções e deixar um impacto através da fala, escrita e presença. Destaque seu papel na criatividade, persuasão e engajamento intelectual.
|
|
418
|
+
2. A Dança da Ação e Reação: Explore como o Cetro influencia a abordagem do portador na tomada de decisões, assertividade e iniciativa, bem como sua capacidade de resposta às circunstâncias externas.
|
|
419
|
+
3. Navegando Desafios: Reflita sobre como o Cetro capacita o portador a superar obstáculos, enfrentar adversidades com resiliência e transformar conflitos em oportunidades de crescimento pessoal e autodomínio.
|
|
420
|
+
4. O Espelho das Relações: Discuta como o Cetro molda as conexões do portador com os outros, seu papel em parcerias e a forma como interage com aliados, rivais e a esfera social mais ampla.
|
|
421
|
+
5. Impacto no Mundo: Examine como o Cetro permite ao portador influenciar seu ambiente, moldar percepções e deixar uma presença duradoura, seja por meio da liderança, colaboração ou expressão individual.
|
|
420
422
|
`;
|
|
421
423
|
|
|
422
424
|
export const PROMPT_GENERATE_RING_CONTENT = `
|
|
@@ -429,9 +431,10 @@ Rules & Formatting:
|
|
|
429
431
|
• Write each section with depth and clarity, around 200 words per topic to ensure a rich and engaging exploration.
|
|
430
432
|
• Avoid mentioning zodiac signs or planets explicitly in the text.
|
|
431
433
|
• Ensure the content is symbolic, poetic, and deeply aligned with the Ring’s themes.
|
|
434
|
+
• Ensure the content provides meaningful insights, helping the reader understand how their unique sign combination shapes their personality, emotions, and life journey.
|
|
432
435
|
• Keep the Portuguese version faithful in tone and depth to the English version, adapting naturally rather than translating literally.
|
|
433
|
-
• Avoid
|
|
434
|
-
• Balance the description of the concept
|
|
436
|
+
• Avoid using the full name of the concept (e.g., The Ring of Tidal Connection, The Ring of Safe Harmony). Instead, refer to it using general and unnespecific forms, without unnecessary repetition.
|
|
437
|
+
• Balance the description of the concept's reflection of the sign combination and of the bearer's traits.
|
|
435
438
|
|
|
436
439
|
Response Format:
|
|
437
440
|
|
|
@@ -445,11 +448,11 @@ EN:
|
|
|
445
448
|
|
|
446
449
|
PT:
|
|
447
450
|
|
|
448
|
-
1. Força Magnética: Explore o que o portador atrai inconscientemente no amor, as qualidades que surgem em sua vida e os padrões recorrentes que moldam seus relacionamentos.
|
|
449
|
-
2. Desejos Ocultos: Revele as partes não ditas do eu romântico do portador, as emoções, necessidades e paixões que influenciam sua abordagem ao amor, reconhecidas ou não.
|
|
450
|
-
3. A Dança do Destino: Descreva como o destino e forças invisíveis moldam os relacionamentos do portador, incluindo encontros kármicos, conexões inesperadas e lições entrelaçadas pelo tempo.
|
|
451
|
-
4. Revelando as Sombras: Reflita sobre as lições ocultas dos amores passados, os padrões que precisam ser compreendidos e como os relacionamentos anteriores contribuem para a sabedoria emocional e a cura.
|
|
452
|
-
5. Seu Poder no Amor: Explore a maneira única do portador de amar, sua capacidade de se conectar e como ele pode abraçar e expressar o amor em sua forma mais verdadeira e plena.
|
|
451
|
+
1. Força Magnética: Explore o que o portador atrai inconscientemente no amor, as qualidades que surgem em sua vida e os padrões recorrentes que moldam seus relacionamentos.
|
|
452
|
+
2. Desejos Ocultos: Revele as partes não ditas do eu romântico do portador, as emoções, necessidades e paixões que influenciam sua abordagem ao amor, reconhecidas ou não.
|
|
453
|
+
3. A Dança do Destino: Descreva como o destino e forças invisíveis moldam os relacionamentos do portador, incluindo encontros kármicos, conexões inesperadas e lições entrelaçadas pelo tempo.
|
|
454
|
+
4. Revelando as Sombras: Reflita sobre as lições ocultas dos amores passados, os padrões que precisam ser compreendidos e como os relacionamentos anteriores contribuem para a sabedoria emocional e a cura.
|
|
455
|
+
5. Seu Poder no Amor: Explore a maneira única do portador de amar, sua capacidade de se conectar e como ele pode abraçar e expressar o amor em sua forma mais verdadeira e plena.
|
|
453
456
|
`;
|
|
454
457
|
|
|
455
458
|
export const PROMPT_GENERATE_AMULET_CONTENT = `
|
|
@@ -462,27 +465,26 @@ Rules & Formatting:
|
|
|
462
465
|
• Write each section with depth and clarity, around 200 words per topic to ensure a rich and engaging exploration.
|
|
463
466
|
• Avoid mentioning zodiac signs or planets explicitly in the text.
|
|
464
467
|
• Ensure the content is symbolic, inspiring, and deeply aligned with the Amulet’s themes.
|
|
468
|
+
• Ensure the content provides meaningful insights, helping the reader understand how their unique sign combination shapes their personality, emotions, and life journey.
|
|
465
469
|
• Keep the Portuguese version faithful in tone and depth to the English version, adapting naturally rather than translating literally.
|
|
466
|
-
• Avoid
|
|
467
|
-
• Balance the description of the concept
|
|
470
|
+
• Avoid using the full name of the concept (e.g., The Amulet of Warm Resilience, The Amulet of Eternal Harmony). Instead, refer to it using general and unnespecific forms, without unnecessary repetition.
|
|
471
|
+
• Balance the description of the concept's reflection of the sign combination and of the bearer's traits.
|
|
468
472
|
|
|
469
473
|
Response Format:
|
|
470
474
|
|
|
471
475
|
EN:
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
476
|
+
1. The Shield of Protection – How does the bearer instinctively guard themselves—through resilience, wisdom, or intuition? What strengths help them navigate challenges?
|
|
477
|
+
2. The Strength Within – What fuels the bearer’s inner strength? How do they stay grounded in adversity, and what deeper truths emerge from their struggles?
|
|
478
|
+
3. Nurturing Growth – How does the bearer evolve through life’s lessons? What drives their healing, self-awareness, and ability to transform experience into wisdom?
|
|
479
|
+
4. The Cycle of Renewal – How does the bearer handle change? Do they embrace it, resist it, or transform through deep introspection? What helps them let go and start anew?
|
|
480
|
+
5. The Anchor of Wisdom – What keeps the bearer steady? Where do they find clarity, and how does their understanding shape their choices and path?
|
|
481
|
+
|
|
479
482
|
PT:
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
5. A Âncora da Sabedoria: Explore como o Amuleto representa estabilidade e sabedoria, ajudando o portador a permanecer firme e equilibrado nas transições da vida. [Aproximadamente 200 palavras]
|
|
483
|
+
1. O Escudo da Proteção – Como o portador se protege—pela resiliência, sabedoria ou intuição? Quais forças o ajudam a enfrentar desafios?
|
|
484
|
+
2. A Força Interior – O que sustenta sua força interior? Como ele se mantém firme na adversidade e o que aprende com isso?
|
|
485
|
+
3. Cultivando o Crescimento – Como ele evolui através das lições da vida? O que impulsiona sua cura, autoconhecimento e sabedoria?
|
|
486
|
+
4. O Ciclo da Renovação – Como lida com mudanças? Ele as abraça, resiste ou se transforma por meio da introspecção? O que o ajuda a recomeçar?
|
|
487
|
+
5. A Âncora da Sabedoria – O que o mantém centrado? Onde encontra clareza e como essa compreensão guia suas escolhas?
|
|
486
488
|
`;
|
|
487
489
|
|
|
488
490
|
export const PROMPT_GENERATE_LANTERN_CONTENT = `
|
|
@@ -496,28 +498,30 @@ Rules & Formatting:
|
|
|
496
498
|
• Write each section with depth and clarity, around 200 words per topic to ensure a rich and engaging exploration.
|
|
497
499
|
• Avoid mentioning zodiac signs or planets explicitly in the text.
|
|
498
500
|
• Ensure the content is symbolic, introspective, and deeply aligned with the Lantern’s themes.
|
|
501
|
+
• Ensure the content provides meaningful insights, helping the reader understand how their unique sign combination shapes their personality, emotions, and life journey.
|
|
499
502
|
• Keep the Portuguese version faithful in tone and depth to the English version, adapting naturally rather than translating literally.
|
|
500
|
-
• Avoid
|
|
503
|
+
• Avoid using the full name of the concept (e.g., The Lantern of Deep Lights, The Lantern of Dancing Shadows). Instead, refer to it using general and unnespecific forms, without unnecessary repetition.
|
|
501
504
|
• Balance the description of the concept itself and of the bearer's traits.
|
|
505
|
+
• To mention the word "Lantern" in Portuguese, use "Candeia".
|
|
502
506
|
|
|
503
507
|
Response Format:
|
|
504
508
|
|
|
505
509
|
EN:
|
|
506
510
|
|
|
507
|
-
1. The Call to Awakening:
|
|
508
|
-
2. Walking Through Shadows: Explore the challenges, doubts, and illusions that must be faced. How does the Lantern guide the bearer through the unknown, revealing lessons hidden in darkness?
|
|
509
|
-
3. The Inner Flame: Reflect on the source of wisdom and intuition within. What fuels the bearer’s spirit, keeping their light strong even in moments of uncertainty?
|
|
510
|
-
4. Revelations and Truths: Discuss the insights that emerge along the journey. What profound realizations shape the bearer’s path and redefine their understanding of self and purpose?
|
|
511
|
-
5. Becoming the Light: Examine how the bearer’s transformation not only changes them but also inspires others. How do they embody their wisdom and illuminate the world around them?
|
|
511
|
+
1. The Call to Awakening: Explore what fuels the bearer’s search for deeper meaning. What inner forces, questions, or realizations drive them toward transformation and a greater understanding of themselves?
|
|
512
|
+
2. Walking Through Shadows: Explore the challenges, doubts, and illusions that must be faced. How does the Lantern guide the bearer through the unknown, revealing lessons hidden in darkness?
|
|
513
|
+
3. The Inner Flame: Reflect on the source of wisdom and intuition within. What fuels the bearer’s spirit, keeping their light strong even in moments of uncertainty?
|
|
514
|
+
4. Revelations and Truths: Discuss the insights that emerge along the journey. What profound realizations shape the bearer’s path and redefine their understanding of self and purpose?
|
|
515
|
+
5. Becoming the Light: Examine how the bearer’s transformation not only changes them but also inspires others. How do they embody their wisdom and illuminate the world around them?
|
|
512
516
|
|
|
513
517
|
|
|
514
518
|
PT:
|
|
515
519
|
|
|
516
|
-
1. O Chamado para o Despertar:
|
|
517
|
-
2. Caminhando Pelas Sombras: Explore os desafios, dúvidas e ilusões que devem ser enfrentados. Como a
|
|
518
|
-
3. A Chama Interior: Reflita sobre a fonte de sabedoria e intuição dentro do portador. O que alimenta seu espírito, mantendo sua luz forte mesmo nos momentos de incerteza?
|
|
519
|
-
4. Revelações e Verdades: Discuta os insights que emergem ao longo da jornada. Que profundas realizações moldam o caminho do portador e redefinem sua compreensão sobre si e seu propósito?
|
|
520
|
-
5. Tornando-se a Luz: Examine como a transformação do portador não apenas o muda, mas também inspira os outros. Como ele incorpora sua sabedoria e ilumina o mundo ao seu redor?
|
|
520
|
+
1. O Chamado para o Despertar: Explore o que impulsiona o portador a buscar um significado mais profundo. Quais forças internas, questionamentos ou percepções o movem em direção à transformação e a uma maior compreensão de si mesmo?
|
|
521
|
+
2. Caminhando Pelas Sombras: Explore os desafios, dúvidas e ilusões que devem ser enfrentados. Como a Candeia guia o portador pelo desconhecido, revelando lições ocultas na escuridão?
|
|
522
|
+
3. A Chama Interior: Reflita sobre a fonte de sabedoria e intuição dentro do portador. O que alimenta seu espírito, mantendo sua luz forte mesmo nos momentos de incerteza?
|
|
523
|
+
4. Revelações e Verdades: Discuta os insights que emergem ao longo da jornada. Que profundas realizações moldam o caminho do portador e redefinem sua compreensão sobre si e seu propósito?
|
|
524
|
+
5. Tornando-se a Luz: Examine como a transformação do portador não apenas o muda, mas também inspira os outros. Como ele incorpora sua sabedoria e ilumina o mundo ao seu redor?
|
|
521
525
|
`;
|
|
522
526
|
|
|
523
527
|
export const PROMPT_GENERATE_ORB_CONTENT = `
|
|
@@ -530,8 +534,9 @@ Rules & Formatting:
|
|
|
530
534
|
• Write each section with depth and clarity, around 200 words per topic to ensure a rich and engaging exploration.
|
|
531
535
|
• Avoid mentioning zodiac signs or planets explicitly in the text.
|
|
532
536
|
• Ensure the content is symbolic, expansive, and deeply aligned with the Orb’s themes.
|
|
537
|
+
• Ensure the content provides meaningful insights, helping the reader understand how their unique sign combination shapes their personality, emotions, and life journey.
|
|
533
538
|
• Keep the Portuguese version faithful in tone and depth to the English version, adapting naturally rather than translating literally.
|
|
534
|
-
• Avoid repeating the full name of the concept (e.g., The
|
|
539
|
+
• Avoid repeating the full name of the concept (e.g., The Orb of Fiery Fate, The Orb of Timely Achievements). Instead, refer to it using general and unnespecific forms, without unnecessary repetition.
|
|
535
540
|
• Balance the description of the concept itself and of the bearer's traits.
|
|
536
541
|
|
|
537
542
|
Response Format:
|
|
@@ -546,11 +551,11 @@ EN:
|
|
|
546
551
|
|
|
547
552
|
PT:
|
|
548
553
|
|
|
549
|
-
1. O Caminho que se Revela: Descreva a jornada do portador rumo ao propósito, as forças invisíveis que o guiam e como seu destino se revela gradualmente.
|
|
550
|
-
2. Um Chamado Além de Si Mesmo: Explore o propósito mais profundo que impulsiona o portador. Como ele sente seu papel no mundo e que missão parece estar escrita em sua alma?
|
|
551
|
-
3. Pontos de Virada do Destino: Reflita sobre os momentos decisivos que moldam a direção do portador—sincronicidades, escolhas e eventos que atuam como sinais cósmicos ao longo de seu caminho.
|
|
552
|
-
4. Dominando a Jornada: Discuta como o portador aprende a se alinhar com seu destino, abraçando tanto os desafios quanto os dons, refinando seu caminho com clareza e intenção.
|
|
553
|
-
5. Legado e Impacto: Examine como o propósito do portador se estende além dele. Como ele deixa sua marca no mundo, inspira os outros ou contribui para algo maior do que si mesmo?
|
|
554
|
+
1. O Caminho que se Revela: Descreva a jornada do portador rumo ao propósito, as forças invisíveis que o guiam e como seu destino se revela gradualmente.
|
|
555
|
+
2. Um Chamado Além de Si Mesmo: Explore o propósito mais profundo que impulsiona o portador. Como ele sente seu papel no mundo e que missão parece estar escrita em sua alma?
|
|
556
|
+
3. Pontos de Virada do Destino: Reflita sobre os momentos decisivos que moldam a direção do portador—sincronicidades, escolhas e eventos que atuam como sinais cósmicos ao longo de seu caminho.
|
|
557
|
+
4. Dominando a Jornada: Discuta como o portador aprende a se alinhar com seu destino, abraçando tanto os desafios quanto os dons, refinando seu caminho com clareza e intenção.
|
|
558
|
+
5. Legado e Impacto: Examine como o propósito do portador se estende além dele. Como ele deixa sua marca no mundo, inspira os outros ou contribui para algo maior do que si mesmo?
|
|
554
559
|
`;
|
|
555
560
|
|
|
556
561
|
export const PROMPT_GENERATE_CROWN_LEONARDO = `
|