@jjlmoya/utils-creative 1.6.0 → 1.8.0
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/package.json +63 -62
- package/src/category/i18n/de.ts +9 -0
- package/src/category/i18n/id.ts +9 -0
- package/src/category/i18n/it.ts +9 -0
- package/src/category/i18n/ja.ts +9 -0
- package/src/category/i18n/ko.ts +9 -0
- package/src/category/i18n/nl.ts +9 -0
- package/src/category/i18n/pl.ts +9 -0
- package/src/category/i18n/pt.ts +9 -0
- package/src/category/i18n/ru.ts +9 -0
- package/src/category/i18n/sv.ts +9 -0
- package/src/category/i18n/tr.ts +9 -0
- package/src/category/i18n/zh.ts +9 -0
- package/src/category/index.ts +12 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/bead-pattern-generator/i18n/de.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/en.ts +59 -17
- package/src/tool/bead-pattern-generator/i18n/es.ts +59 -17
- package/src/tool/bead-pattern-generator/i18n/fr.ts +59 -17
- package/src/tool/bead-pattern-generator/i18n/id.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/it.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/ja.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/ko.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/nl.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/pl.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/pt.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/ru.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/sv.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/tr.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/zh.ts +115 -0
- package/src/tool/bead-pattern-generator/index.ts +12 -0
- package/src/tool/dice-roller/i18n/de.ts +138 -0
- package/src/tool/dice-roller/i18n/en.ts +74 -32
- package/src/tool/dice-roller/i18n/es.ts +74 -32
- package/src/tool/dice-roller/i18n/fr.ts +74 -32
- package/src/tool/dice-roller/i18n/id.ts +138 -0
- package/src/tool/dice-roller/i18n/it.ts +138 -0
- package/src/tool/dice-roller/i18n/ja.ts +138 -0
- package/src/tool/dice-roller/i18n/ko.ts +138 -0
- package/src/tool/dice-roller/i18n/nl.ts +138 -0
- package/src/tool/dice-roller/i18n/pl.ts +138 -0
- package/src/tool/dice-roller/i18n/pt.ts +138 -0
- package/src/tool/dice-roller/i18n/ru.ts +138 -0
- package/src/tool/dice-roller/i18n/sv.ts +138 -0
- package/src/tool/dice-roller/i18n/tr.ts +138 -0
- package/src/tool/dice-roller/i18n/zh.ts +138 -0
- package/src/tool/dice-roller/index.ts +12 -0
- package/src/tool/excuse-generator/i18n/de.ts +122 -0
- package/src/tool/excuse-generator/i18n/en.ts +60 -18
- package/src/tool/excuse-generator/i18n/es.ts +60 -18
- package/src/tool/excuse-generator/i18n/fr.ts +60 -18
- package/src/tool/excuse-generator/i18n/id.ts +122 -0
- package/src/tool/excuse-generator/i18n/it.ts +122 -0
- package/src/tool/excuse-generator/i18n/ja.ts +122 -0
- package/src/tool/excuse-generator/i18n/ko.ts +122 -0
- package/src/tool/excuse-generator/i18n/nl.ts +122 -0
- package/src/tool/excuse-generator/i18n/pl.ts +122 -0
- package/src/tool/excuse-generator/i18n/pt.ts +122 -0
- package/src/tool/excuse-generator/i18n/ru.ts +122 -0
- package/src/tool/excuse-generator/i18n/sv.ts +122 -0
- package/src/tool/excuse-generator/i18n/tr.ts +122 -0
- package/src/tool/excuse-generator/i18n/zh.ts +122 -0
- package/src/tool/excuse-generator/index.ts +12 -0
- package/src/tool/fortune-cookie/i18n/de.ts +127 -0
- package/src/tool/fortune-cookie/i18n/en.ts +60 -18
- package/src/tool/fortune-cookie/i18n/es.ts +60 -18
- package/src/tool/fortune-cookie/i18n/fr.ts +60 -18
- package/src/tool/fortune-cookie/i18n/id.ts +127 -0
- package/src/tool/fortune-cookie/i18n/it.ts +127 -0
- package/src/tool/fortune-cookie/i18n/ja.ts +127 -0
- package/src/tool/fortune-cookie/i18n/ko.ts +127 -0
- package/src/tool/fortune-cookie/i18n/nl.ts +127 -0
- package/src/tool/fortune-cookie/i18n/pl.ts +127 -0
- package/src/tool/fortune-cookie/i18n/pt.ts +127 -0
- package/src/tool/fortune-cookie/i18n/ru.ts +127 -0
- package/src/tool/fortune-cookie/i18n/sv.ts +127 -0
- package/src/tool/fortune-cookie/i18n/tr.ts +127 -0
- package/src/tool/fortune-cookie/i18n/zh.ts +127 -0
- package/src/tool/fortune-cookie/index.ts +12 -0
- package/src/tool/synesthesia-painter/i18n/de.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/en.ts +74 -32
- package/src/tool/synesthesia-painter/i18n/es.ts +74 -32
- package/src/tool/synesthesia-painter/i18n/fr.ts +75 -33
- package/src/tool/synesthesia-painter/i18n/id.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/it.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/ja.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/ko.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/nl.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/pl.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/pt.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/ru.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/sv.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/tr.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/zh.ts +122 -0
- package/src/tool/synesthesia-painter/index.ts +12 -0
- package/src/tool/zalgo-generator/i18n/de.ts +113 -0
- package/src/tool/zalgo-generator/i18n/en.ts +58 -16
- package/src/tool/zalgo-generator/i18n/es.ts +58 -16
- package/src/tool/zalgo-generator/i18n/fr.ts +58 -16
- package/src/tool/zalgo-generator/i18n/id.ts +113 -0
- package/src/tool/zalgo-generator/i18n/it.ts +113 -0
- package/src/tool/zalgo-generator/i18n/ja.ts +113 -0
- package/src/tool/zalgo-generator/i18n/ko.ts +113 -0
- package/src/tool/zalgo-generator/i18n/nl.ts +113 -0
- package/src/tool/zalgo-generator/i18n/pl.ts +113 -0
- package/src/tool/zalgo-generator/i18n/pt.ts +113 -0
- package/src/tool/zalgo-generator/i18n/ru.ts +113 -0
- package/src/tool/zalgo-generator/i18n/sv.ts +113 -0
- package/src/tool/zalgo-generator/i18n/tr.ts +113 -0
- package/src/tool/zalgo-generator/i18n/zh.ts +113 -0
- package/src/tool/zalgo-generator/index.ts +12 -0
- package/src/tools.ts +14 -1
|
@@ -1,9 +1,63 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
1
2
|
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
2
3
|
|
|
4
|
+
const slug = 'excuse-generator';
|
|
5
|
+
const title = 'Excuse Generator';
|
|
6
|
+
const description = 'Semantic gambling machine to get rid of commitments with style. Generate surreal and irrefutable excuses instantly.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Can this generator save my marriage?',
|
|
11
|
+
answer: 'While we are not therapists, avoiding that dinner with the in-laws using a plausible technical emergency can significantly reduce tension. Use responsibly.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Why such surreal phrases?',
|
|
15
|
+
answer: 'The strategy is based on Cognitive Dissonance. If you say something boring it is verifiable. If you say something absurd, the surprise blocks the capacity for anger.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Generate', text: 'Click the generate button to create a new excuse.' },
|
|
21
|
+
{ name: 'Copy', text: 'Click the copy button to bring the excuse to your clipboard.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'en',
|
|
55
|
+
};
|
|
56
|
+
|
|
3
57
|
export const content: ExcuseGeneratorLocaleContent = {
|
|
4
|
-
slug
|
|
5
|
-
title
|
|
6
|
-
description
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
7
61
|
faqTitle: 'Frequently Asked Questions',
|
|
8
62
|
bibliographyTitle: 'Leisure Bibliography',
|
|
9
63
|
ui: {
|
|
@@ -59,22 +113,10 @@ export const content: ExcuseGeneratorLocaleContent = {
|
|
|
59
113
|
{ pro: 'Creative and humorous tone defuses tension', con: 'Not suitable for formal or professional contexts' },
|
|
60
114
|
]},
|
|
61
115
|
],
|
|
62
|
-
faq
|
|
63
|
-
{
|
|
64
|
-
question: 'Can this generator save my marriage?',
|
|
65
|
-
answer: 'While we are not therapists, avoiding that dinner with the in-laws using a plausible technical emergency can significantly reduce tension. Use responsibly.'
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
question: 'Why such surreal phrases?',
|
|
69
|
-
answer: 'The strategy is based on Cognitive Dissonance. If you say something boring it is verifiable. If you say something absurd, the surprise blocks the capacity for anger.'
|
|
70
|
-
}
|
|
71
|
-
],
|
|
116
|
+
faq,
|
|
72
117
|
bibliography: [
|
|
73
118
|
{ name: 'Procrastinator\'s Manifesto', url: 'https://example.com/manifesto' }
|
|
74
119
|
],
|
|
75
|
-
howTo
|
|
76
|
-
|
|
77
|
-
{ name: 'Copy', text: 'Click the copy button to bring the excuse to your clipboard.' }
|
|
78
|
-
],
|
|
79
|
-
schemas: []
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
80
122
|
};
|
|
@@ -1,9 +1,63 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
1
2
|
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
2
3
|
|
|
4
|
+
const slug = 'generador-excusas';
|
|
5
|
+
const title = 'Generador de Excusas';
|
|
6
|
+
const description = 'Máquina de azar semántica para librarte de compromisos con estilo.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: '¿Puede este generador salvar mi matrimonio?',
|
|
11
|
+
answer: 'Aunque no somos terapeutas, evitar esa cena con los suegros utilizando una emergencia técnica plausible puede reducir la tensión significativamente.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: '¿Por qué frases tan surrealistas?',
|
|
15
|
+
answer: 'La estrategia se basa en la Disonancia Cognitiva. Si dices algo aburrido es comprobable. Si dices algo absurdo, la sorpresa bloquea la capacidad de enfado.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Generar', text: 'Pulsa el botón de generar para crear una nueva excusa.' },
|
|
21
|
+
{ name: 'Copiar', text: 'Haz clic en el botón de copiar para llevar la excusa a tu portapapeles.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'es',
|
|
55
|
+
};
|
|
56
|
+
|
|
3
57
|
export const content: ExcuseGeneratorLocaleContent = {
|
|
4
|
-
slug
|
|
5
|
-
title
|
|
6
|
-
description
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
7
61
|
faqTitle: 'Preguntas Frecuentes',
|
|
8
62
|
bibliographyTitle: 'Bibliografía del Ocio',
|
|
9
63
|
ui: {
|
|
@@ -63,22 +117,10 @@ export const content: ExcuseGeneratorLocaleContent = {
|
|
|
63
117
|
{ pro: 'El tono creativo y humorístico difunde la tensión', con: 'No apta para contextos formales o profesionales' },
|
|
64
118
|
]},
|
|
65
119
|
],
|
|
66
|
-
faq
|
|
67
|
-
{
|
|
68
|
-
question: '¿Puede este generador salvar mi matrimonio?',
|
|
69
|
-
answer: 'Aunque no somos terapeutas, evitar esa cena con los suegros utilizando una emergencia técnica plausible puede reducir la tensión significativamente.'
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
question: '¿Por qué frases tan surrealistas?',
|
|
73
|
-
answer: 'La estrategia se basa en la Disonancia Cognitiva. Si dices algo aburrido es comprobable. Si dices algo absurdo, la sorpresa bloquea la capacidad de enfado.'
|
|
74
|
-
}
|
|
75
|
-
],
|
|
120
|
+
faq,
|
|
76
121
|
bibliography: [
|
|
77
122
|
{ name: 'Manifesto del Procrastinador', url: 'https://example.com/manifesto' }
|
|
78
123
|
],
|
|
79
|
-
howTo
|
|
80
|
-
|
|
81
|
-
{ name: 'Copiar', text: 'Haz clic en el botón de copiar para llevar la excusa a tu portapapeles.' }
|
|
82
|
-
],
|
|
83
|
-
schemas: []
|
|
124
|
+
howTo,
|
|
125
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
84
126
|
};
|
|
@@ -1,9 +1,63 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
1
2
|
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
2
3
|
|
|
4
|
+
const slug = 'generateur-d-excuses';
|
|
5
|
+
const title = 'Générateur d\'Excuses';
|
|
6
|
+
const description = 'Une machine à sous sémantique pour vous débarrasser de vos engagements avec style. Générez des excuses surréalistes et irréfutables instantanément.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Ce générateur peut-il sauver mon mariage ?',
|
|
11
|
+
answer: 'Bien que nous ne soyons pas thérapeutes, éviter ce dîner chez les beaux-parents grâce à une urgence technique plausible peut considérablement réduire les tensions. À utiliser avec parcimonie.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Pourquoi des phrases aussi surréalistes ?',
|
|
15
|
+
answer: 'La stratégie repose sur la Dissonance Cognitive. Si vous dites quelque chose d\'ennuyeux, c\'est vérifiable. Si vous dites quelque chose d\'absurde, la surprise paralyse la capacité de colère.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Générer', text: 'Cliquez sur le bouton pour créer une nouvelle excuse.' },
|
|
21
|
+
{ name: 'Copier', text: 'Cliquez sur le bouton de copie pour mettre l\'excuse dans votre presse-papiers.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'fr',
|
|
55
|
+
};
|
|
56
|
+
|
|
3
57
|
export const content: ExcuseGeneratorLocaleContent = {
|
|
4
|
-
slug
|
|
5
|
-
title
|
|
6
|
-
description
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
7
61
|
faqTitle: 'Questions Fréquemment Posées',
|
|
8
62
|
bibliographyTitle: 'Bibliographie du Temps Libre',
|
|
9
63
|
ui: {
|
|
@@ -59,22 +113,10 @@ export const content: ExcuseGeneratorLocaleContent = {
|
|
|
59
113
|
{ pro: 'Le ton créatif et humoristique désamorce la tension', con: 'Inapproprié dans un contexte formel ou professionnel' },
|
|
60
114
|
]},
|
|
61
115
|
],
|
|
62
|
-
faq
|
|
63
|
-
{
|
|
64
|
-
question: 'Ce générateur peut-il sauver mon mariage ?',
|
|
65
|
-
answer: 'Bien que nous ne soyons pas thérapeutes, éviter ce dîner chez les beaux-parents grâce à une urgence technique plausible peut considérablement réduire les tensions. À utiliser avec parcimonie.'
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
question: 'Pourquoi des phrases aussi surréalistes ?',
|
|
69
|
-
answer: 'La stratégie repose sur la Dissonance Cognitive. Si vous dites quelque chose d\'ennuyeux, c\'est vérifiable. Si vous dites quelque chose d\'absurde, la surprise paralyse la capacité de colère.'
|
|
70
|
-
}
|
|
71
|
-
],
|
|
116
|
+
faq,
|
|
72
117
|
bibliography: [
|
|
73
118
|
{ name: 'Manifeste du Procrastinateur', url: 'https://example.com/manifesto' }
|
|
74
119
|
],
|
|
75
|
-
howTo
|
|
76
|
-
|
|
77
|
-
{ name: 'Copier', text: 'Cliquez sur le bouton de copie pour mettre l\'excuse dans votre presse-papiers.' }
|
|
78
|
-
],
|
|
79
|
-
schemas: []
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
80
122
|
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'pembuat-alasan';
|
|
5
|
+
const title = 'Pembuat Alasan';
|
|
6
|
+
const description = 'Mesin perjudian semantik untuk melepaskan diri dari komitmen dengan gaya. Hasilkan alasan yang surealis dan tak terbantahkan secara instan.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Bisakah generator ini menyelamatkan pernikahan saya?',
|
|
11
|
+
answer: 'Meskipun kami bukan terapis, menghindari makan malam dengan mertua menggunakan keadaan darurat teknis yang masuk akal dapat secara signifikan mengurangi ketegangan. Gunakanlah dengan bijak.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Mengapa kalimatnya begitu surealis?',
|
|
15
|
+
answer: 'Strategi ini didasarkan pada Disonansi Kognitif. Jika Anda mengatakan sesuatu yang membosankan, itu dapat diverifikasi. Jika Anda mengatakan sesuatu yang tidak masuk akal, kejutan tersebut akan menghalangi rasa marah seseorang.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Hasilkan', text: 'Klik tombol buat untuk membuat alasan baru.' },
|
|
21
|
+
{ name: 'Salin', text: 'Klik tombol salin untuk memindahkan alasan tersebut ke papan klip Anda.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'id',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
62
|
+
bibliographyTitle: 'Bibliografi Hiburan',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Pembuat Alasan Surealis',
|
|
65
|
+
description: 'Kalkulator alibi generasi berikutnya.',
|
|
66
|
+
subjectLabel: 'Subjek',
|
|
67
|
+
actionLabel: 'Tindakan',
|
|
68
|
+
victimLabel: 'Korban',
|
|
69
|
+
generateBtn: 'HASILKAN ALASAN',
|
|
70
|
+
copyBtn: 'Salin kegilaan ini',
|
|
71
|
+
copied: 'Tersalin!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Kucing saya", "Nenek saya", "Presiden", "Alien", "Tetangga saya dari lantai 5",
|
|
74
|
+
"Wifi", "Horoskop saya", "Penjelajah waktu", "Mesin cuci", "Kulkas saya",
|
|
75
|
+
"Semangat Natal", "Bayangan saya", "Seorang ninja", "Polisi vegan", "Siri",
|
|
76
|
+
"Tanaman karnivora saya", "Kurir Amazon", "Klon jahat saya", "Seorang penyihir", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"telah menyatakan perang terhadap", "telah memakan", "telah menculik", "telah membakar",
|
|
80
|
+
"sedang mengadakan pesta di", "telah muntah di", "menolak untuk meninggalkan",
|
|
81
|
+
"telah meretas", "telah mencuri", "telah jatuh cinta dengan", "sedang merenungkan",
|
|
82
|
+
"telah memberikan mantra pada", "sedang memprotes terhadap", "telah mendirikan aliran sesat di",
|
|
83
|
+
"sedang menari samba di", "telah memanggil iblis di", "telah memblokir akses ke",
|
|
84
|
+
"telah berubah menjadi emas", "sedang mencoba menjual", "telah menulis buku tentang"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"kunci rumah saya.", "keinginan saya untuk hidup.", "pintu garasi.",
|
|
88
|
+
"celana favorit saya.", "router ruang tamu.", "satu-satunya pasang sepatu saya.",
|
|
89
|
+
"hukum fisika.", "martabat saya.", "lift gedung.",
|
|
90
|
+
"akun Netflix saya.", "sikat gigi saya.", "akta rumah saya.",
|
|
91
|
+
"koleksi pogs saya.", "rem tangan mobil.", "keinginan saya untuk bersosialisasi.",
|
|
92
|
+
"persediaan kopi saya.", "tutup toilet.", "remot TV.",
|
|
93
|
+
"kaus kaki keberuntungan saya.", "peradaban Barat."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Referensi'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'Seni Ilmiah dalam Membuat Alasan Sempurna', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Kita hidup di era hiperkoneksi. Ponsel Anda bergetar, jam tangan memberi notifikasi, dan agenda sosial Anda terlihat seperti permainan Tetris yang hampir kalah. Tekanan untuk menyetujui segalanya telah menciptakan epidemi kelelahan sosial.' },
|
|
101
|
+
{ type: 'title', text: 'Kebangkitan JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Meskipun FOMO (Fear of Missing Out) mendominasi dekade terakhir, para pakar kesehatan digital kini menganjurkan <strong>JOMO: Kegembiraan dalam Melewatkan Sesuatu</strong>. Ini bukan tentang isolasi, tetapi tentang intensionalitas.' },
|
|
103
|
+
{ type: 'tip', title: 'Formula Alibi yang Tak Terbantahkan', html: '<strong>Subjek yang Terdisosiasi:</strong> Anda tidak pernah menjadi pelakunya. Itu adalah "wifi", "kucing saya", "alam semesta". Alihkan kesalahan ke entitas eksternal.<br><strong>Tindakan Hiperbolik:</strong> Situasinya harus cukup tidak masuk akal atau cukup teknis sehingga tidak ada yang menanyakan detailnya.<br><strong>Blok Fisik:</strong> Hasil akhirnya harus biner: saya pergi atau saya tetap di rumah.' },
|
|
104
|
+
{ type: 'title', text: 'Sejarah Singkat Alasan', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Abad Pertengahan:</strong> "Kuda saya kehilangan tapalnya" (Klasik sepanjang masa).',
|
|
107
|
+
'<strong>Revolusi Industri:</strong> "Mesin uapnya terlalu panas".',
|
|
108
|
+
'<strong>Era Digital:</strong> "Internet saya terputus tepat di tengah pembaruan".',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Meringankan tekanan sosial secara instan', con: 'Penggunaan berlebihan merusak kepercayaan' },
|
|
112
|
+
{ pro: 'Melindungi energi dan batasan Anda', con: 'Dapat menimbulkan rasa bersalah jika digunakan sembarangan' },
|
|
113
|
+
{ pro: 'Nada kreatif dan humoris meredakan ketegangan', con: 'Tidak cocok untuk konteks formal atau profesional' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: 'Manifesto Penunda', url: 'https://example.com/manifesto' }
|
|
119
|
+
],
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
122
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'generatore-di-scuse';
|
|
5
|
+
const title = 'Generatore di Scuse';
|
|
6
|
+
const description = 'Macchina d\'azzardo semantica per liberarsi dagli impegni con stile. Genera istantaneamente scuse surreali e inconfutabili.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Questo generatore può salvare il mio matrimonio?',
|
|
11
|
+
answer: 'Pur non essendo terapeuti, evitare quella cena con i suoceri usando un\'emergenza tecnica plausibile può ridurre significativamente la tensione. Usare responsabilmente.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Perché frasi così surreali?',
|
|
15
|
+
answer: 'La strategia si basa sulla dissonanza cognitiva. Se dici qualcosa di noioso, è verificabile. Se dici qualcosa di assurdo, la sorpresa blocca la capacità di arrabbiarsi.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Genera', text: 'Clicca sul pulsante genera per creare una nuova scusa.' },
|
|
21
|
+
{ name: 'Copia', text: 'Clicca sul pulsante copia per portare la scusa negli appunti.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'it',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Domande Frequenti',
|
|
62
|
+
bibliographyTitle: 'Bibliografia del Tempo Libero',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Generatore di Scuse Surreali',
|
|
65
|
+
description: 'Calcolatore di alibi di nuova generazione.',
|
|
66
|
+
subjectLabel: 'Soggetto',
|
|
67
|
+
actionLabel: 'Azione',
|
|
68
|
+
victimLabel: 'Vittima',
|
|
69
|
+
generateBtn: 'GENERA SCUSA',
|
|
70
|
+
copyBtn: 'Copia questa follia',
|
|
71
|
+
copied: 'Copiato!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Il mio gatto", "Mia nonna", "Il presidente", "Un alieno", "Il mio vicino del 5° piano",
|
|
74
|
+
"Il wifi", "Il mio oroscopo", "Un viaggiatore nel tempo", "La lavatrice", "Il mio frigorifero",
|
|
75
|
+
"Lo spirito del Natale", "La mia ombra", "Un ninja", "La polizia vegana", "Siri",
|
|
76
|
+
"La mia pianta carnivora", "Il fattorino di Amazon", "Il mio clone cattivo", "Un mago", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"ha dichiarato guerra a", "ha mangiato", "ha rapito", "ha dato fuoco a",
|
|
80
|
+
"sta organizzando una festa a", "ha vomitato su", "si rifiuta di lasciare",
|
|
81
|
+
"ha hackerato", "ha rubato", "si è innamorato di", "sta meditando su",
|
|
82
|
+
"ha lanciato un incantesimo su", "sta protestando contro", "ha fondato una setta a",
|
|
83
|
+
"sta ballando il samba a", "ha evocato un demone a", "ha bloccato l'accesso a",
|
|
84
|
+
"si è trasformato in oro", "sta cercando di vendere", "ha scritto un libro su"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"le chiavi di casa mia.", "la mia voglia di vivere.", "la porta del garage.",
|
|
88
|
+
"i miei pantaloni preferiti.", "il router del soggiorno.", "il mio unico paio di scarpe.",
|
|
89
|
+
"le leggi della fisica.", "la mia dignità.", "l'ascensore del palazzo.",
|
|
90
|
+
"il mio account Netflix.", "il mio spazzolino da denti.", "l'atto di proprietà della casa.",
|
|
91
|
+
"la mia collezione di pogs.", "il freno a mano dell'auto.", "il mio desiderio di socializzare.",
|
|
92
|
+
"la mia scorta di caffè.", "il coperchio della toilette.", "il telecomando della TV.",
|
|
93
|
+
"i miei calzini fortunati.", "la civiltà occidentale."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Riferimenti'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'L\'arte scientifica della scusa perfetta', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Viviamo nell\'era dell\'iperattività. Il telefono vibra, l\'orologio invia notifiche e l\'agenda sociale sembra una partita a Tetris che sta per essere persa. La pressione a dire "sì" a tutto ha creato un\'epidemia di esaurimento sociale.' },
|
|
101
|
+
{ type: 'title', text: 'La rinascita di JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Mentre il FOMO (Fear of Missing Out) ha dominato l\'ultimo decennio, gli esperti di benessere digitale ora promuovono la <strong>JOMO: la gioia di perdersi qualcosa</strong>. Non si tratta di isolamento, ma di intenzionalità.' },
|
|
103
|
+
{ type: 'tip', title: 'La formula per l\'alibi inconfutabile', html: '<strong>Il soggetto dissociato:</strong> non sei mai tu il colpevole. È "il wifi", "il mio gatto", "l\'universo". Sposta la colpa su un\'entità esterna.<br><strong>L\'azione iperbolica:</strong> la situazione deve essere abbastanza assurda o tecnica affinché nessuno chieda i dettagli.<br><strong>Il blocco fisico:</strong> l\'esito finale deve essere binario: o vado o resto a casa.' },
|
|
104
|
+
{ type: 'title', text: 'Breve storia della scusa', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Medioevo:</strong> "Il mio cavallo ha perso un ferro" (un classico intramontabile).',
|
|
107
|
+
'<strong>Rivoluzione industriale:</strong> "La macchina a vapore si è surriscaldata".',
|
|
108
|
+
'<strong>Era digitale:</strong> "La connessione è caduta proprio durante l\'aggiornamento".',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Allevia istantaneamente la pressione sociale', con: 'L\'uso eccessivo erode la fiducia' },
|
|
112
|
+
{ pro: 'Protegge la tua energia e i tuoi confini', con: 'Può generare sensi di colpa se usato con noncuranza' },
|
|
113
|
+
{ pro: 'Il tono creativo e umoristico smorza la tensione', con: 'Non adatto a contesti formali o professionali' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: 'Manifesto del Procrastinatore', url: 'https://example.com/manifesto' }
|
|
119
|
+
],
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
122
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'excuse-generator-ja';
|
|
5
|
+
const title = '言い訳ジェネレーター';
|
|
6
|
+
const description = '付き合いを華麗にスルーするためのセマンティック・ギャンブルマシン。シュールで反論の余地のない言い訳を瞬時に生成します。';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'このジェネレーターで夫婦仲は救えますか?',
|
|
11
|
+
answer: '私たちはセラピストではありませんが、もっともらしい技術的な緊急事態を装って義父母との夕食を回避することは、緊張を大幅に和らげる効果があるかもしれません。自己責任でご利用ください。'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'なぜこれほどシュールなフレーズなのですか?',
|
|
15
|
+
answer: '戦略のベースは「認知的不協和」です。退屈な言い訳は検証可能ですが、あまりに不条理なことを言うと、相手は驚きのあまり怒るタイミングを逃してしまいます。'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: '生成', text: '「生成」ボタンをクリックして、新しい言い訳を作成します。' },
|
|
21
|
+
{ name: 'コピー', text: '「コピー」ボタンをクリックして、言い訳をクリップボードにコピーします。' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'ja',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'よくある質問',
|
|
62
|
+
bibliographyTitle: 'レジャーの参考文献',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'シュールな言い訳ジェネレーター',
|
|
65
|
+
description: '次世代型アリバイ算出機。',
|
|
66
|
+
subjectLabel: '主語',
|
|
67
|
+
actionLabel: '行動',
|
|
68
|
+
victimLabel: '対象',
|
|
69
|
+
generateBtn: '言い訳を生成する',
|
|
70
|
+
copyBtn: 'この狂気をコピーする',
|
|
71
|
+
copied: 'コピーしました!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"うちの猫が", "おばあちゃんが", "大統領が", "宇宙人が", "5階の隣人が",
|
|
74
|
+
"Wifiが", "星占いが", "タイムトラベラーが", "洗濯機が", "冷蔵庫が",
|
|
75
|
+
"クリスマスの精霊が", "自分の影が", "忍者が", "ヴィーガン警察が", "Siriが",
|
|
76
|
+
"食虫植物が", "Amazonの配達員が", "邪悪なクローンが", "魔法使いが", "ゴジラが"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"に宣戦布告して", "を食べてしまって", "を誘拐して", "に火をつけて",
|
|
80
|
+
"でパーティーを始めて", "に吐いてしまって", "から離れるのを拒否して",
|
|
81
|
+
"をハッキングして", "を盗んで", "と恋に落ちて", "について瞑想していて",
|
|
82
|
+
"に呪いをかけて", "に対して抗議していて", "にカルト教団を設立して",
|
|
83
|
+
"でサンバを踊っていて", "で悪魔を召喚して", "へのアクセスをブロックして",
|
|
84
|
+
"が黄金に変わって", "を売ろうとしていて", "についての本を書いて"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"家の鍵をなくしました。", "生きる意欲を失いました。", "ガレージのドアが壊れました。",
|
|
88
|
+
"お気に入りのズボンが破れました。", "リビングのルーターが爆発しました。", "靴が片方なくなりました。",
|
|
89
|
+
"物理法則を無視しました。", "尊厳を失いました。", "マンションのエレベーターが止まりました。",
|
|
90
|
+
"Netflixのアカウントが乗っ取られました。", "歯ブラシが家出し直しました。", "家の登記簿が燃えました。",
|
|
91
|
+
"メンコ・コレクションが散乱しました。", "車のハンドブレーキが外れました。", "社交への意欲が尽きました。",
|
|
92
|
+
"コーヒーの備蓄が底をつきました。", "トイレの蓋が閉まりません。", "テレビのリモコンが消えました。",
|
|
93
|
+
"ラッキーソックスを紛失しました。", "西洋文明が崩壊しました。"
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: '参考文献'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: '完璧な言い訳のための科学的芸術', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: '私たちは超コネクティビティの時代に生きています。スマートフォンは震え、時計は通知を出し、ソーシャルな予定表は負け寸前のテトリスのようです。すべてに「イエス」と言わなければならないというプレッシャーは、社会的疲弊という伝染病を引き起こしています。' },
|
|
101
|
+
{ type: 'title', text: 'JOMO(Joy of Missing Out)のルネサンス', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: '過去10年間はFOMO(取り残される恐怖)が支配していましたが、現在デジタルウェルネスの専門家は<strong>JOMO:取り残される喜び</strong>を提唱しています。これは孤立ではなく、意図的な選択のことです。' },
|
|
103
|
+
{ type: 'tip', title: '反論の余地のないアリバイの公式', html: '<strong>主語を分離する:</strong> あなた自身は決して加害者ではありません。「Wifi」「猫」「宇宙」など、責任を外部に転嫁しましょう。<br><strong>誇張された行動:</strong> 状況は、誰も詳細を聞きたがらないほど不条理、あるいは技術的に複雑である必要があります。<br><strong>物理的な遮断:</strong> 最終結果は「行く」か「家に留まる」かの二択である必要があります。' },
|
|
104
|
+
{ type: 'title', text: '言い訳の短い歴史', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>中世:</strong> 「馬の蹄鉄が外れた」(時代を超えた定番)。',
|
|
107
|
+
'<strong>産業革命:</strong> 「蒸気機関がオーバーヒートした」。',
|
|
108
|
+
'<strong>デジタル時代:</strong> 「更新の真っ最中にネットが切れた」。'
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: '社会的プレッシャーを即座に和らげます', con: '使いすぎると信頼を損ないます' },
|
|
112
|
+
{ pro: '自分のエネルギーと境界線を守ります', con: '不用意に使うと罪悪感が生じることがあります' },
|
|
113
|
+
{ pro: '独創的でユーモラスなトーンが緊張を和らげます', con: 'フォーマルな場面や仕事には不向きです' }
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: '先延ばし屋の宣言', url: 'https://example.com/manifesto' }
|
|
119
|
+
],
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
122
|
+
};
|