mulmocast 0.0.7 → 0.0.9

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.
Files changed (36) hide show
  1. package/assets/templates/akira_comic.json +28 -0
  2. package/assets/templates/children_book.json +13 -0
  3. package/assets/templates/comic_strips.json +14 -1
  4. package/assets/templates/drslump_comic.json +28 -0
  5. package/assets/templates/ghibli_comic.json +28 -0
  6. package/assets/templates/ghost_comic.json +35 -0
  7. package/assets/templates/onepiece_comic.json +28 -0
  8. package/assets/templates/sensei_and_taro.json +21 -0
  9. package/lib/actions/audio.js +2 -2
  10. package/lib/actions/captions.js +2 -2
  11. package/lib/actions/images.js +48 -6
  12. package/lib/actions/movie.d.ts +1 -1
  13. package/lib/actions/movie.js +13 -11
  14. package/lib/actions/pdf.js +6 -4
  15. package/lib/actions/translate.js +2 -2
  16. package/lib/agents/image_openai_agent.d.ts +1 -0
  17. package/lib/agents/image_openai_agent.js +15 -3
  18. package/lib/cli/bin.js +7 -0
  19. package/lib/cli/helpers.js +2 -1
  20. package/lib/tools/create_mulmo_script_from_url.js +2 -2
  21. package/lib/tools/create_mulmo_script_interactively.js +2 -2
  22. package/lib/tools/story_to_script.js +2 -2
  23. package/lib/types/schema.d.ts +1738 -228
  24. package/lib/types/schema.js +8 -2
  25. package/lib/utils/file.js +20 -9
  26. package/lib/utils/pdf.d.ts +1 -0
  27. package/lib/utils/pdf.js +5 -3
  28. package/lib/utils/preprocess.d.ts +50 -16
  29. package/package.json +10 -9
  30. package/scripts/templates/business.json +201 -0
  31. package/scripts/templates/children_book.json +90 -0
  32. package/scripts/templates/coding.json +130 -0
  33. package/scripts/templates/image_prompts_template.json +41 -0
  34. package/scripts/templates/sensei_and_taro.json +116 -0
  35. package/scripts/templates/text_only_template.json +35 -0
  36. package/assets/templates/ghibli_strips.json +0 -6
@@ -109,7 +109,9 @@ export const mulmoImageAssetSchema = z.union([
109
109
  mulmoPdfMediaSchema,
110
110
  mulmoImageMediaSchema,
111
111
  mulmoSvgMediaSchema,
112
- mulmoMovieMediaSchema,
112
+ mulmoMovieMediaSchema.extend({
113
+ mixAudio: z.number().default(1.0),
114
+ }),
113
115
  mulmoTextSlideMediaSchema,
114
116
  mulmoChartMediaSchema,
115
117
  mulmoMermaidMediaSchema,
@@ -128,12 +130,14 @@ const mulmoMidiMediaSchema = z
128
130
  })
129
131
  .strict();
130
132
  export const mulmoAudioAssetSchema = z.union([mulmoAudioMediaSchema, mulmoMidiMediaSchema]);
133
+ const imageIdSchema = z.string();
131
134
  export const mulmoImageParamsSchema = z
132
135
  .object({
133
136
  model: z.string().optional(), // default: provider specific
134
137
  size: z.string().optional(), // default: provider specific
135
138
  style: z.string().optional(), // optional image style
136
139
  moderation: z.string().optional(), // optional image style
140
+ images: z.record(imageIdSchema, mulmoImageMediaSchema).optional(),
137
141
  })
138
142
  .strict();
139
143
  export const textSlideParamsSchema = z
@@ -173,6 +177,7 @@ export const mulmoBeatSchema = z
173
177
  audioParams: beatAudioParamsSchema.optional(), // beat specific parameters
174
178
  speechOptions: speechOptionsSchema.optional(),
175
179
  textSlideParams: textSlideParamsSchema.optional(),
180
+ imageNames: z.array(imageIdSchema).optional(), // list of image names to use for image generation. The default is all images in the imageParams.images.
176
181
  imagePrompt: z.string().optional(), // specified or inserted by preprocessor
177
182
  })
178
183
  .strict();
@@ -231,7 +236,7 @@ export const mulmoReferenceSchema = z.object({
231
236
  url: URLStringSchema,
232
237
  title: z.string().optional(),
233
238
  description: z.string().optional(),
234
- type: z.union([z.literal("article"), z.literal("image"), z.literal("video"), z.literal("audio")]).default("article"),
239
+ type: z.union([z.literal("article"), z.literal("paper"), z.literal("image"), z.literal("video"), z.literal("audio")]).default("article"),
235
240
  });
236
241
  export const mulmoScriptSchema = mulmoPresentationStyleSchema
237
242
  .extend({
@@ -305,6 +310,7 @@ export const mulmoScriptTemplateSchema = z
305
310
  description: z.string(),
306
311
  systemPrompt: z.string(),
307
312
  scriptName: z.string().optional(),
313
+ presentationStyle: mulmoPresentationStyleSchema.optional(),
308
314
  })
309
315
  .strict();
310
316
  export const mulmoStoryboardSceneSchema = z
package/lib/utils/file.js CHANGED
@@ -18,13 +18,22 @@ export function readMulmoScriptFile(arg2, errorMessage) {
18
18
  return null;
19
19
  }
20
20
  const scriptData = fs.readFileSync(scriptPath, "utf-8");
21
- const script = ([".yaml", ".yml"].includes(path.extname(scriptPath).toLowerCase()) ? yamlParse(scriptData) : JSON.parse(scriptData));
22
- const parsedPath = path.parse(scriptPath);
23
- return {
24
- mulmoData: script,
25
- mulmoDataPath: scriptPath,
26
- fileName: parsedPath.name,
27
- };
21
+ try {
22
+ const script = ([".yaml", ".yml"].includes(path.extname(scriptPath).toLowerCase()) ? yamlParse(scriptData) : JSON.parse(scriptData));
23
+ const parsedPath = path.parse(scriptPath);
24
+ return {
25
+ mulmoData: script,
26
+ mulmoDataPath: scriptPath,
27
+ fileName: parsedPath.name,
28
+ };
29
+ }
30
+ catch (__error) {
31
+ if (errorMessage) {
32
+ GraphAILogger.info("read file format is broken.");
33
+ process.exit(1);
34
+ }
35
+ return null;
36
+ }
28
37
  }
29
38
  export const fetchMulmoScriptFile = async (url) => {
30
39
  try {
@@ -120,10 +129,12 @@ export const readScriptTemplateFile = (scriptName) => {
120
129
  export const readTemplatePrompt = (templateName) => {
121
130
  const templatePath = getTemplateFilePath(templateName);
122
131
  const templateData = fs.readFileSync(templatePath, "utf-8");
123
- const template = mulmoScriptTemplateSchema.parse(JSON.parse(templateData));
132
+ // NOTE: We don't want to schema parse the template here to eliminate default values.
133
+ const template = JSON.parse(templateData);
124
134
  const script = (() => {
125
135
  if (template.scriptName) {
126
- return readScriptTemplateFile(template.scriptName);
136
+ const script = readScriptTemplateFile(template.scriptName);
137
+ return { ...script, ...(template.presentationStyle ?? {}) };
127
138
  }
128
139
  return undefined;
129
140
  })();
@@ -2,6 +2,7 @@ import { PDFFont } from "pdf-lib";
2
2
  export declare const fontSize = 12;
3
3
  export declare const textMargin = 6;
4
4
  export declare const drawSize: (fitWidth: boolean, expectWidth: number, expectHeight: number, origWidth: number, origHeight: number) => {
5
+ containerWidth: number;
5
6
  drawWidth: number;
6
7
  drawHeight: number;
7
8
  };
package/lib/utils/pdf.js CHANGED
@@ -6,6 +6,7 @@ export const drawSize = (fitWidth, expectWidth, expectHeight, origWidth, origHei
6
6
  const scale = drawWidth / origWidth;
7
7
  const drawHeight = origHeight * scale;
8
8
  return {
9
+ containerWidth: expectWidth,
9
10
  drawWidth,
10
11
  drawHeight,
11
12
  };
@@ -14,6 +15,7 @@ export const drawSize = (fitWidth, expectWidth, expectHeight, origWidth, origHei
14
15
  const scale = drawHeight / origHeight;
15
16
  const drawWidth = origWidth * scale;
16
17
  return {
18
+ containerWidth: expectWidth,
17
19
  drawWidth,
18
20
  drawHeight,
19
21
  };
@@ -37,10 +39,10 @@ export const wrapText = (text, font, fontSize, maxWidth) => {
37
39
  const currentIsFull = isFullwidth(char);
38
40
  const nextIsFull = nextChar && isFullwidth(nextChar);
39
41
  const isBreakable = currentIsFull || (!currentIsFull && (char === " " || nextChar === " " || nextIsFull));
40
- if (width > maxWidth && buffer) {
42
+ if (width > maxWidth && line) {
41
43
  lines.push(line);
42
- line = "";
43
- buffer = char;
44
+ line = buffer;
45
+ buffer = "";
44
46
  }
45
47
  if (isBreakable || i === rawLine.length - 1) {
46
48
  line += buffer;
@@ -101,21 +101,6 @@ export declare const createOrUpdateStudioData: (_mulmoScript: MulmoScript, curre
101
101
  path: string;
102
102
  kind: "path";
103
103
  };
104
- } | {
105
- type: "movie";
106
- source: {
107
- url: string;
108
- kind: "url";
109
- } | {
110
- kind: "base64";
111
- data: string;
112
- } | {
113
- text: string;
114
- kind: "text";
115
- } | {
116
- path: string;
117
- kind: "path";
118
- };
119
104
  } | {
120
105
  type: "textSlide";
121
106
  slide: {
@@ -147,6 +132,22 @@ export declare const createOrUpdateStudioData: (_mulmoScript: MulmoScript, curre
147
132
  } | {
148
133
  type: "html_tailwind";
149
134
  html: string | string[];
135
+ } | {
136
+ type: "movie";
137
+ source: {
138
+ url: string;
139
+ kind: "url";
140
+ } | {
141
+ kind: "base64";
142
+ data: string;
143
+ } | {
144
+ text: string;
145
+ kind: "text";
146
+ } | {
147
+ path: string;
148
+ kind: "path";
149
+ };
150
+ mixAudio: number;
150
151
  } | undefined;
151
152
  audio?: {
152
153
  type: "audio";
@@ -172,6 +173,22 @@ export declare const createOrUpdateStudioData: (_mulmoScript: MulmoScript, curre
172
173
  size?: string | undefined;
173
174
  style?: string | undefined;
174
175
  moderation?: string | undefined;
176
+ images?: Record<string, {
177
+ type: "image";
178
+ source: {
179
+ url: string;
180
+ kind: "url";
181
+ } | {
182
+ kind: "base64";
183
+ data: string;
184
+ } | {
185
+ text: string;
186
+ kind: "text";
187
+ } | {
188
+ path: string;
189
+ kind: "path";
190
+ };
191
+ }> | undefined;
175
192
  } | undefined;
176
193
  audioParams?: {
177
194
  padding?: number | undefined;
@@ -179,6 +196,7 @@ export declare const createOrUpdateStudioData: (_mulmoScript: MulmoScript, curre
179
196
  textSlideParams?: {
180
197
  cssStyles: string | string[];
181
198
  } | undefined;
199
+ imageNames?: string[] | undefined;
182
200
  imagePrompt?: string | undefined;
183
201
  }[];
184
202
  lang?: string | undefined;
@@ -189,6 +207,22 @@ export declare const createOrUpdateStudioData: (_mulmoScript: MulmoScript, curre
189
207
  size?: string | undefined;
190
208
  style?: string | undefined;
191
209
  moderation?: string | undefined;
210
+ images?: Record<string, {
211
+ type: "image";
212
+ source: {
213
+ url: string;
214
+ kind: "url";
215
+ } | {
216
+ kind: "base64";
217
+ data: string;
218
+ } | {
219
+ text: string;
220
+ kind: "text";
221
+ } | {
222
+ path: string;
223
+ kind: "path";
224
+ };
225
+ }> | undefined;
192
226
  } | undefined;
193
227
  textSlideParams?: {
194
228
  cssStyles: string | string[];
@@ -196,7 +230,7 @@ export declare const createOrUpdateStudioData: (_mulmoScript: MulmoScript, curre
196
230
  omitCaptions?: boolean | undefined;
197
231
  description?: string | undefined;
198
232
  references?: {
199
- type: "image" | "audio" | "article" | "video";
233
+ type: "image" | "audio" | "article" | "paper" | "video";
200
234
  url: string;
201
235
  title?: string | undefined;
202
236
  description?: string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmocast",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/cli/bin.js",
@@ -9,6 +9,7 @@
9
9
  },
10
10
  "files": [
11
11
  "./lib",
12
+ "./scripts/templates",
12
13
  "./assets/music/StarsBeyondEx.mp3",
13
14
  "./assets/audio/silent300.mp3",
14
15
  "./assets/audio/silent800.mp3",
@@ -51,22 +52,22 @@
51
52
  "homepage": "https://github.com/receptron/mulmocast-cli#readme",
52
53
  "dependencies": {
53
54
  "@google-cloud/text-to-speech": "^6.1.0",
54
- "@graphai/anthropic_agent": "^2.0.0",
55
+ "@graphai/anthropic_agent": "^2.0.2",
55
56
  "@graphai/browserless_agent": "^2.0.0",
56
- "@graphai/gemini_agent": "^1.0.1",
57
- "@graphai/groq_agent": "^1.0.1",
57
+ "@graphai/gemini_agent": "^2.0.0",
58
+ "@graphai/groq_agent": "^2.0.0",
58
59
  "@graphai/input_agents": "^1.0.1",
59
- "@graphai/openai_agent": "^2.0.0",
60
- "@graphai/stream_agent_filter": "^2.0.1",
61
- "@graphai/vanilla": "^2.0.2",
62
- "@graphai/vanilla_node_agents": "^2.0.0",
60
+ "@graphai/openai_agent": "^2.0.3",
61
+ "@graphai/stream_agent_filter": "^2.0.2",
62
+ "@graphai/vanilla": "^2.0.4",
63
+ "@graphai/vanilla_node_agents": "^2.0.1",
63
64
  "@pdf-lib/fontkit": "^1.1.1",
64
65
  "canvas": "^3.1.0",
65
66
  "clipboardy": "^4.0.0",
66
67
  "dotenv": "^16.4.7",
67
68
  "fluent-ffmpeg": "^2.1.3",
68
69
  "google-auth-library": "^9.15.1",
69
- "graphai": "^2.0.3",
70
+ "graphai": "^2.0.5",
70
71
  "inquirer": "^12.6.1",
71
72
  "marked": "^15.0.11",
72
73
  "ora": "^8.2.0",
@@ -0,0 +1,201 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.0",
4
+ "credit": "closing"
5
+ },
6
+ "title": "Sample Title",
7
+ "references": [
8
+ {
9
+ "url": "https://www.somegreatwebsite.com/article/123",
10
+ "title": "Title of the article we are referencing",
11
+ "type": "article"
12
+ }
13
+ ],
14
+ "lang": "en",
15
+ "beats": [
16
+ {
17
+ "text": "Today we're exploring a fascinating concept that has shaped some of the most innovative companies and leaders of our time: the Reality Distortion Field.",
18
+ "image": {
19
+ "type": "textSlide",
20
+ "slide": {
21
+ "title": "This is the title of the presentation"
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "text": "This is a sample slide, which just displays the title and the presenter's name of this presentation.",
27
+ "image": {
28
+ "type": "textSlide",
29
+ "slide": {
30
+ "title": "This is the title of the presentation",
31
+ "subtitle": "Tom Johnson"
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "text": "The evolution of humans is a complex journey that spans millions of years, shaped by biology, environment, and culture. Here's a high-level summary of the key stages in human evolution",
37
+ "image": {
38
+ "type": "textSlide",
39
+ "slide": {
40
+ "title": "Human Evolution",
41
+ "bullets": [
42
+ "Early Primates",
43
+ "Hominids and Hominins",
44
+ "Australopithecus",
45
+ "Genus Homo Emerges",
46
+ "Homo erectus and Migration",
47
+ "Neanderthals and Other Archaic Humans",
48
+ "Homo sapiens"
49
+ ]
50
+ }
51
+ }
52
+ },
53
+ {
54
+ "text": "This is a table of items in the store.",
55
+ "image": {
56
+ "type": "markdown",
57
+ "markdown": [
58
+ "# Markdown Table Example",
59
+ "| Item | In Stock | Price |",
60
+ "| :---------------- | :------: | ----: |",
61
+ "| Python Hat | True | 23.99 |",
62
+ "| SQL Hat | True | 23.99 |",
63
+ "| Codecademy Tee | False | 19.99 |",
64
+ "| Codecademy Hoodie | False | 42.99 |"
65
+ ]
66
+ }
67
+ },
68
+ {
69
+ "text": "This page shows the sales and profits of this company from January 2024 to June 2024.",
70
+ "image": {
71
+ "type": "chart",
72
+ "title": "Sales and Profits (from Jan to June)",
73
+ "chartData": {
74
+ "type": "bar",
75
+ "data": {
76
+ "labels": ["January", "February", "March", "April", "May", "June"],
77
+ "datasets": [
78
+ {
79
+ "label": "Revenue ($1000s)",
80
+ "data": [120, 135, 180, 155, 170, 190],
81
+ "backgroundColor": "rgba(54, 162, 235, 0.5)",
82
+ "borderColor": "rgba(54, 162, 235, 1)",
83
+ "borderWidth": 1
84
+ },
85
+ {
86
+ "label": "Profit ($1000s)",
87
+ "data": [45, 52, 68, 53, 61, 73],
88
+ "backgroundColor": "rgba(75, 192, 192, 0.5)",
89
+ "borderColor": "rgba(75, 192, 192, 1)",
90
+ "borderWidth": 1
91
+ }
92
+ ]
93
+ },
94
+ "options": {
95
+ "responsive": true,
96
+ "animation": false
97
+ }
98
+ }
99
+ }
100
+ },
101
+ {
102
+ "text": "This is a sample pie chart",
103
+ "image": {
104
+ "type": "chart",
105
+ "title": "A sample pie chart",
106
+ "chartData": {
107
+ "type": "pie",
108
+ "data": {
109
+ "labels": ["OpenAIã¨æŠ•čŗ‡åŽļぎ取り分", "マイクロã‚Ŋフトぎ取り分"],
110
+ "datasets": [
111
+ {
112
+ "data": [90, 10],
113
+ "backgroundColor": ["rgba(75, 192, 192, 0.5)", "rgba(54, 162, 235, 0.5)"],
114
+ "borderColor": ["rgba(75, 192, 192, 1)", "rgba(54, 162, 235, 1)"],
115
+ "borderWidth": 1
116
+ }
117
+ ]
118
+ },
119
+ "options": {
120
+ "responsive": true,
121
+ "animation": false,
122
+ "plugins": {
123
+ "legend": {
124
+ "position": "bottom"
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ },
131
+ {
132
+ "text": "Next, let's look at a diagram of our business process flow. This illustrates the key steps from product development to sales.",
133
+ "image": {
134
+ "type": "mermaid",
135
+ "title": "Business Process Flow",
136
+ "code": {
137
+ "kind": "text",
138
+ "text": "graph LR\n A[Market Research] --> B[Product Planning]\n B --> C[Development]\n C --> D[Testing]\n D --> E[Manufacturing]\n E --> F[Marketing]\n F --> G[Sales]\n G --> H[Customer Support]\n H --> A"
139
+ }
140
+ }
141
+ },
142
+ {
143
+ "text": "This is a tailwind html format.",
144
+ "image": {
145
+ "type": "html_tailwind",
146
+ "html": [
147
+ "<main class=\"flex-grow\">",
148
+ " <!-- Hero Section -->",
149
+ " <section class=\"bg-blue-600 text-white py-20\">",
150
+ " <div class=\"container mx-auto px-6 text-center\">",
151
+ " <h1 class=\"text-4xl md:text-5xl font-bold mb-4\">Welcome to Mulmocast</h1>",
152
+ " <p class=\"text-lg md:text-xl mb-8\">A modern web experience powered by Tailwind CSS</p>",
153
+ " <a href=\"#features\" class=\"bg-white text-blue-600 px-6 py-3 rounded-lg font-semibold shadow hover:bg-gray-100 transition\">",
154
+ " Learn More",
155
+ " </a>",
156
+ " </div>",
157
+ " </section>",
158
+ "",
159
+ " <!-- Features Section -->",
160
+ " <section id=\"features\" class=\"py-16 bg-gray-100\">",
161
+ " <div class=\"container mx-auto px-6\">",
162
+ " <div class=\"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\">",
163
+ " <div>",
164
+ " <div class=\"text-blue-600 text-4xl mb-2\">⚡</div>",
165
+ " <h3 class=\"text-xl font-semibold mb-2\">Fast</h3>",
166
+ " <p class=\"text-gray-600\">Built with performance in mind using modern tools.</p>",
167
+ " </div>",
168
+ " <div>",
169
+ " <div class=\"text-blue-600 text-4xl mb-2\">🎨</div>",
170
+ " <h3 class=\"text-xl font-semibold mb-2\">Beautiful</h3>",
171
+ " <p class=\"text-gray-600\">Styled with Tailwind CSS for clean, responsive design.</p>",
172
+ " </div>",
173
+ " <div>",
174
+ " <div class=\"text-blue-600 text-4xl mb-2\">🚀</div>",
175
+ " <h3 class=\"text-xl font-semibold mb-2\">Launch Ready</h3>",
176
+ " <p class=\"text-gray-600\">Easy to deploy and extend for your next big idea.</p>",
177
+ " </div>",
178
+ " </div>",
179
+ " </div>",
180
+ " </section>",
181
+ "</main>",
182
+ "",
183
+ "<!-- Footer -->",
184
+ "<footer class=\"bg-white text-gray-500 text-center py-6 border-t\">",
185
+ " 2025 Mulmocast.",
186
+ "</footer>"
187
+ ]
188
+ }
189
+ },
190
+ {
191
+ "text": "This is the image of the future of enterprise applications.",
192
+ "image": {
193
+ "type": "image",
194
+ "source": {
195
+ "kind": "url",
196
+ "url": "https://satoshi.blogs.com/mag2/May2025/enterprise_app.png"
197
+ }
198
+ }
199
+ }
200
+ ]
201
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.0",
4
+ "credit": "closing"
5
+ },
6
+ "title": "æĄƒå¤Ē郎",
7
+ "lang": "ja",
8
+ "beats": [
9
+ {
10
+ "text": "むかしむかし、あるところãĢおじいさんとおばあさんがäŊã‚“ã§ã„ãžã—ãŸã€‚ãŠã˜ã„ã•ã‚“ã¯åąąã¸čŠåˆˆã‚ŠãĢã€ãŠã°ã‚ã•ã‚“ã¯åˇã¸æ´—æŋ¯ãĢčĄŒããžã—ãŸã€‚",
11
+ "imagePrompt": "藁č‘ēãåą‹æ šãŽå¤ã„æ—ĨæœŦåŽļåą‹ã€‚čŋ‘くãĢは清らかãĒåˇãŒæĩã‚Œã€čŖãĢã¯įˇ‘čąŠã‹ãĒåąąãŒã‚ã‚‹ã€‚ãŠã˜ã„ã•ã‚“ã¯éŽŒã‚’æŒãŖãĻåąąã¸å‘ã‹ã„ã€ãŠã°ã‚ã•ã‚“ã¯æ´—æŋ¯ã‹ã”ã‚’æŒãŖãĻåˇã¸å‘ã‹ãŖãĻいる。æ˜ĨãŽįŠã‚„ã‹ãĒæ—ĨåˇŽã—ãŒéĸ¨æ™¯ã‚’į…§ã‚‰ã—ãĻいる。"
12
+ },
13
+ {
14
+ "text": "ãŠã°ã‚ã•ã‚“ãŒåˇã§æ´—æŋ¯ã‚’しãĻいると、上æĩã‹ã‚‰å¤§ããĒæĄƒãŒæĩã‚ŒãĻきぞした。「ぞあ、ãĒんãĻ大きãĒæĄƒã§ã—ã‚‡ã†ã€ã¨ãŠã°ã‚ã•ã‚“ã¯éŠšããžã—ãŸã€‚",
15
+ "imagePrompt": "åˇã§æ´—æŋ¯ã™ã‚‹ãŠã°ã‚ã•ã‚“ã€‚åˇéĸãĢ映る青įŠēとį™Ŋã„é›˛ã€‚ä¸Šæĩã‹ã‚‰æĩã‚ŒãĻãã‚‹į•°æ§˜ãĢ大きくãĻ鎎やかãĒčĩ¤ã„æĄƒã€‚éŠšã„ãŸčĄ¨æƒ…ã§ãã‚Œã‚’čĻ‹ã¤ã‚ã‚‹ãŠã°ã‚ã•ã‚“ã€‚å‘¨ã‚ŠãĢは洗æŋ¯į‰Šã¨įŸŗã€‚"
16
+ },
17
+ {
18
+ "text": "ãŠã°ã‚ã•ã‚“ã¯ããŽæĄƒã‚’æŒãĄå¸°ã‚Šã€ã€ŒãŠã˜ã„ã•ã‚“ã€å¤§ããĒæĄƒã‚’čĻ‹ã¤ã‘ãžã—ãŸã‚ˆã€ã¨č¨€ã„ãžã—ãŸã€‚äēŒäēēãŒæĄƒã‚’åˆ‡ã‚ã†ã¨ã™ã‚‹ã¨ã€ä¸­ã‹ã‚‰å…ƒæ°—ãĒį”ˇãŽå­ãŒį”Ÿãžã‚Œãžã—ãŸã€‚",
19
+ "imagePrompt": "åŽļぎ中、čĩ¤ã‚“坊をéĢ˜ãæŠąãä¸Šã’ãĻã€éŠšãã¨å–œãŗãŽčĄ¨æƒ…ã‚’æĩŽã‹ãšã‚‹č€å¤ĢåŠĻ。"
20
+ },
21
+ {
22
+ "text": "äēŒäēēã¯į”ˇãŽå­ã‚’ã€ŒæĄƒå¤Ē郎」と名äģ˜ã‘ãĻ、大切ãĢ育ãĻãžã—ãŸã€‚æĄƒå¤ĒéƒŽã¯ã™ãã™ãã¨æˆé•ˇã—ã€ã¨ãĻもåŧˇã„子ãĢãĒりぞした。",
23
+ "imagePrompt": "時間ぎįĩŒéŽã‚’į¤ēす4ã‚ŗãƒžãŽé€Ŗįļšį”ģ像。最初はčĩ¤ãĄã‚ƒã‚“、æŦĄãĢåšŧ児、そしãĻ少嚴、最垌ãĢč‹Ĩã„į”ˇæ€§ã¸ã¨æˆé•ˇã™ã‚‹æĄƒå¤Ē郎。各æŽĩéšŽã§ãŠã˜ã„ã•ã‚“ã¨ãŠã°ã‚ã•ã‚“ãŒæ„›æƒ…æˇąãčĻ‹åŽˆãŖãĻいる。最垌ぎį”ģåƒã§ã¯ã€ãŸããžã—ãæˆé•ˇã—ãŸæĄƒå¤ĒéƒŽãŒæœ¨ã‚’æŒãĄä¸Šã’ãŸã‚Šã€é‡ã„įŸŗã‚’é‹ã‚“ã ã‚Šã—ãĻ力ぎåŧˇã•ã‚’į¤ēしãĻいる。"
24
+ },
25
+ {
26
+ "text": "あるæ—Ĩ、éŦŧがåŗļからæĨたéŦŧãŸãĄãŒæ‘ã‚’č’ã‚‰ã—ãĻã„ã‚‹ã¨ã„ã†čŠąã‚’čžã„ãŸæĄƒå¤Ē郎は、おじいさんとおばあさんãĢ「éŦŧ退æ˛ģãĢčĄŒããžã™ã€ã¨å‘Šã’ãžã—ãŸã€‚",
27
+ "imagePrompt": "åŽļãŽä¸­ãŽæĄƒå¤Ē郎、おじいさんとおばあさん。įĒ“ãŽå¤–ã§ã¯æ‘äēēãŸãĄãŒææ€–ãŽčĄ¨æƒ…ã§é€ƒã’å›žã‚Šã€é ããĢã¯į‚Žã¨į…™ãŒčĻ‹ãˆã‚‹ã€‚æąē意ãĢæē€ãĄãŸčĄ¨æƒ…ãŽæĄƒå¤Ē郎がįĢ‹ãĄä¸ŠãŒã‚Šã€ãŠã˜ã„ã•ã‚“ã¨ãŠã°ã‚ã•ã‚“ãĢčĒžã‚Šã‹ã‘ãĻいる。憂慎とčĒ‡ã‚ŠãŽå…Ĩã‚Šæˇˇã˜ãŖãŸčĄ¨æƒ…ãŽč€å¤ĢåŠĻ。"
28
+ },
29
+ {
30
+ "text": "ãŠã°ã‚ã•ã‚“ã¯æĄƒå¤Ē郎ぎためãĢ、æ—ĨæœŦä¸€ãŽããŗã ã‚“ã”ã‚’äŊœãŖãĻくれぞした。おじいさんはįĢ‹æ´žãĒåˆ€ã¨į€į‰Šã‚’ãã‚Œãžã—ãŸã€‚",
31
+ "imagePrompt": "åŽļãŽä¸­ã€‚ãŠã°ã‚ã•ã‚“ãŒå°æ‰€ã§ããŗã ã‚“ã”ã‚’äŊœã‚Šã€ãŠã˜ã„ã•ã‚“ãŒæĄįŽąã‹ã‚‰åˆ€ã¨éŽŽã‚„ã‹ãĒį€į‰Šã‚’å–ã‚Šå‡ēしãĻいる。æē–å‚™ã‚’æ•´ãˆã‚‹æĄƒå¤Ē郎。テãƒŧブãƒĢぎ上ãĢは小さãĒ布包ãŋãĢããŗã ã‚“ã”ãŒåŒ…ãžã‚ŒãĻいる。朝æ—Ĩが障子を通しãĻéƒ¨åą‹ã‚’æ¸Šã‹ãį…§ã‚‰ã—ãĻいる。"
32
+ },
33
+ {
34
+ "text": "ã€Œã„ãŖãĻããžã™ã€ã¨č¨€ãŖãĻã€æĄƒå¤ĒéƒŽã¯ããŗã ã‚“ã”ã‚’æŒãŖãĻ、éŦŧがåŗļへ向かいぞした。",
35
+ "imagePrompt": "åŽļぎ前でå‡ēį™ēã™ã‚‹æĄƒå¤ĒéƒŽã€‚č…°ãĢã¯ããŗã ã‚“ã”ãŽå…ĨãŖãŸčĸ‹ã¨åˆ€ã€čƒŒä¸­ãĢは小さãĒ旗。čĻ‹é€ã‚‹ãŠã˜ã„ã•ã‚“ã¨ãŠã°ã‚ã•ã‚“ã€ãã—ãĻ村äēēãŸãĄã€‚æĄƒå¤Ē郎はč‡ĒäŋĄãĢæē€ãĄãŸčĄ¨æƒ…で前斚をčĻ‹ã¤ã‚ãĻã„ã‚‹ã€‚æœéœ§ãŽä¸­ã€é“ã¯åąąã€…ã¸ã¨įļšã„ãĻいる。"
36
+ },
37
+ {
38
+ "text": "é“ä¸­ã€æĄƒå¤Ē郎はįŠŦãĢå‡ēäŧšã„ãžã—ãŸã€‚ã€ŒæĄƒå¤ĒéƒŽã•ã‚“ã€æĄƒå¤ĒéƒŽã•ã‚“ã€ãŠč…°ãĢã¤ã‘ãŸããŗã ã‚“ã”ã€ä¸€ã¤ã‚ãŸã—ãĢ下さいãĒ」とįŠŦã¯č¨€ã„ãžã—ãŸã€‚",
39
+ "imagePrompt": "åąąé“ã‚’é€˛ã‚€æĄƒå¤Ē郎。æ¨ĒãĢは大きãĒčŒļč‰˛ãŽįŠŦがįĢ‹ãŖãĻいる。įŠŦは尞を振り、期垅をčžŧã‚ãŸčĄ¨æƒ…ã§æĄƒå¤Ē郎をčĻ‹ä¸Šã’ãĻいる。周りãĢはæ˜ĨãŽčŠąã¨įˇ‘čąŠã‹ãĒč‡Ēį„ļã€‚æĄƒå¤Ē郎はįŠŦãĢ垎įŦ‘ãŋかけãĻいる。"
40
+ },
41
+ {
42
+ "text": "「よし、一つあげよう。そぎäģŖã‚ã‚ŠåŽļæĨãĢãĒã‚‹ã‚“ã ã‚ˆã€ã¨æĄƒå¤ĒéƒŽã¯č¨€ã„ãžã—ãŸã€‚įŠŦã¯å–œã‚“ã§ããŗã ã‚“ã”ã‚’éŖŸãšã€æĄƒå¤Ē郎ぎåŽļæĨãĢãĒりぞした。",
43
+ "imagePrompt": "æĄƒå¤ĒéƒŽãŒããŗã ã‚“ã”ã‚’įŠŦãĢæ¸Ąã—ãĻいる様子。įŠŦがåŦ‰ã—そうãĢããŗã ã‚“ã”ã‚’éŖŸãšãĻã„ã‚‹ã€‚æĄƒå¤ĒéƒŽãŽčĄ¨æƒ…ã¯å„Ēしくé ŧã‚‚ã—ã„ã€‚čƒŒæ™¯ãĢã¯åąąã¨åˇã€é ããĢはéŦŧがåŗļを思わせる遠景。"
44
+ },
45
+ {
46
+ "text": "æŦĄãĢã€æĄƒå¤Ē郎とįŠŦはįŒŋãĢå‡ēäŧšã„ぞした。įŒŋã‚‚ããŗã ã‚“ã”ã¨åŧ•き換えãĢã€æĄƒå¤Ē郎ぎåŽļæĨãĢãĒりぞした。",
47
+ "imagePrompt": "æŖŽãŽä¸­ãŽé“ã€‚æĄƒå¤Ē郎とįŠŦが木ãĢとぞるįŒŋã¨čŠąã—ãĻいる。įŒŋはåĨŊåĨ‡åŋƒã„ãŖãąã„ãŽčĄ¨æƒ…ã§æĄƒå¤Ē郎ぎ手ãĢã‚ã‚‹ããŗã ã‚“ã”ã‚’čĻ‹ãĻいる。周りãĢã¯č‰˛ã¨ã‚ŠãŠã‚ŠãŽæœ¨ã€…ã¨čŠąã€‚įŠŦはįŒŋを友åĨŊįš„ãĢčĻ‹ä¸Šã’ãĻいる。"
48
+ },
49
+ {
50
+ "text": "さらãĢé€˛ã‚€ã¨ã€äģŠåēĻはキジãĢå‡ēäŧšã„ãžã—ãŸã€‚ã‚­ã‚¸ã‚‚ããŗã ã‚“ã”ã‚’ã‚‚ã‚‰ã„ã€æĄƒå¤Ē郎ぎåŽļæĨãĢãĒりぞした。",
51
+ "imagePrompt": "åąąãŽé–‹ã‘ãŸå ´æ‰€ã€‚įŠēéĢ˜ãčˆžã†ã‚ĢナフãƒĢãĒã‚­ã‚¸ãŒæĄƒå¤ĒéƒŽãŸãĄãĢčŋ‘ãĨいãĻきãĻいる。地éĸãĢã¯æĄƒå¤Ē郎、įŠŦ、įŒŋがįĢ‹ãŖãĻおり、įŠēをčĻ‹ä¸Šã’ãĻã„ã‚‹ã€‚ã‚­ã‚¸ã¯įžŽã—ã„įžŊをåēƒã’ã€æĄƒå¤ĒéƒŽãŽããŗã ã‚“ã”ãĢį›Žã‚’å‘ã‘ãĻã„ã‚‹ã€‚čƒŒæ™¯ãĢは雄大ãĒåąąã€…ã¨æž„ã‚“ã é’įŠē。"
52
+ },
53
+ {
54
+ "text": "こうしãĻæĄƒå¤Ē郎は、įŠŦ、įŒŋ、キジをåŽļæĨãĢしãĻ、いよいよéŦŧがåŗļへと向かいぞした。",
55
+ "imagePrompt": "æĩˇãĢæĩŽã‹ãļéŦŧがåŗļãĢ向かう小さãĒčˆšã€‚čˆšãŽä¸ŠãĢã¯æĄƒå¤Ē郎、įŠŦ、įŒŋã€ã‚­ã‚¸ãŒäš—ãŖãĻã„ã‚‹ã€‚æĄƒå¤Ē郎はįĢ‹ãŖãĻ指揎を取り、įŠŦã¯čˆšãŽå‰æ–šã‚’čĻ‹æŽãˆã€įŒŋは帆を操äŊœã—、キジはįŠēからčĻ‹åŧĩりをしãĻã„ã‚‹ã€‚č’ã€…ã—ã„æŗĸã¨æš—é›˛ãŒįĢ‹ãĄčžŧめる中、åŗļへとčŋ‘ãĨくåŊŧらぎå§ŋ。åŗļãĢはé™ēã—ã„å˛Šåąąã¨ä¸æ°—å‘ŗãĒ城がčĻ‹ãˆã‚‹ã€‚"
56
+ },
57
+ {
58
+ "text": "éŦŧがåŗļãĢį€ãã¨ã€ãã“ãĢは大きãĒé–€ãŒã‚ã‚Šãžã—ãŸã€‚ã‚­ã‚¸ãŒéŖ›ã‚“ã§æ§˜å­ã‚’čĻ‹ã‚‹ã¨ã€ä¸­ã§ã¯éŦŧãŸãĄãŒåŽ´äŧšã‚’しãĻいぞした。",
59
+ "imagePrompt": "éŦŧãƒļåŗļぎ大きãĒčĩ¤ã„門。門ぎ上įŠēã‚’éŖ›ãļキジ。門ぎ向こう側では、様々ãĒč‰˛ãŽéŦŧãŸãĄãŒé…’ã‚’éŖ˛ãŋã€č¸Šã‚Šã€é¨’ã„ã§ã„ã‚‹æ§˜å­ãŒčĻ‹ãˆã‚‹ã€‚éŦŧぎ中ãĢã¯č§’ãŒ1æœŦ、2æœŦ、3æœŦぎもぎãĒお様々。厴äŧšå ´ãŽå‘¨ã‚ŠãĢã¯į›—ã‚“ã§ããŸåŽį‰ŠãŒåąąįŠãŋãĢãĒãŖãĻいる。門ぎ手前ãĢã¯æĄƒå¤Ē郎、įŠŦ、įŒŋが隠れãĻæ§˜å­ã‚’ã†ã‹ãŒãŖãĻいる。"
60
+ },
61
+ {
62
+ "text": "「よãƒŧし、ãŋんãĒæē–備はいいか。äģŠã‹ã‚‰éŦŧ退æ˛ģだīŧã€ã¨æĄƒå¤ĒéƒŽã¯č¨€ã„ãžã—ãŸã€‚",
63
+ "imagePrompt": "éŦŧãƒļåŗļぎå…Ĩã‚ŠåŖčŋ‘ãã€å˛Šé™°ãĢéš ã‚ŒãŸæĄƒå¤Ē郎とåŽļæĨãŸãĄã€‚æĄƒå¤Ē郎は刀を抜き、æąē意ãĢæē€ãĄãŸčĄ¨æƒ…でäģ˛é–“ãŸãĄãĢčĒžã‚Šã‹ã‘ãĻいる。įŠŦã¯į‰™ã‚’ã‚€ãã€įŒŋã¯æŖ’ã‚’æ§‹ãˆã€ã‚­ã‚¸ã¯é‹­ã„å˜´ã‚’čĻ‹ã›ãĻæˆĻうæē–備をしãĻã„ã‚‹ã€‚å…¨å“ĄãŒįœŸå‰ŖãĒčĄ¨æƒ…ã§æĄƒå¤ĒéƒŽãŽč¨€č‘‰ãĢč€ŗã‚’å‚žã‘ãĻã„ã‚‹ã€‚čƒŒæ™¯ãĢはéŦŧãŽåŸŽãŒä¸æ°—å‘ŗãĢããŗãˆįĢ‹ãŖãĻいる。"
64
+ },
65
+ {
66
+ "text": "æĄƒå¤ĒéƒŽãŸãĄã¯å‹‡æ•ĸãĢæˆĻいぞした。įŠŦはéŦŧぎčļŗãĢ噛ãŋつき、įŒŋはéŦŧぎéĢĒをåŧ•ãŖåŧĩり、キジはéŦŧãŽį›Žã‚’ã¤ã¤ã„ãĻæ”ģ撃しぞした。",
67
+ "imagePrompt": "éŦŧãƒļåŗļぎ城ぎ中でぎæŋ€ã—いæˆĻé—˜ã‚ˇãƒŧãƒŗã€‚æ§˜ã€…ãĒč‰˛ãŽéŦŧãŸãĄãŒéŠšãã¨æ€’ã‚ŠãŽčĄ¨æƒ…ã§æˆĻãŖãĻいる。įŠŦはčĩ¤éŦŧぎčļŗãĢ噛ãŋついãĻ倒し、įŒŋは青éŦŧぎéĢĒをåŧ•ãŖåŧĩãŖãĻæˇˇäšąã•ã›ã€ã‚­ã‚¸ã¯įˇ‘éŦŧãŽį›Žã‚’ã¤ã¤ã„ãĻã„ã‚‹ã€‚ä¸­å¤Žã§ã¯æĄƒå¤Ē郎が刀を振るい、éģ„č‰˛ã„éŦŧã¨å¯žåŗ™ã—ãĻã„ã‚‹ã€‚čƒŒæ™¯ãĢはäģ–ぎéŦŧãŸãĄã‚‚é€ƒã’æƒ‘ã†å§ŋがある。æˆĻã„ãŽį†ąæ°—ã¨æˇˇäšąãŒį”ģéĸã„ãŖãąã„ãĢåēƒãŒãŖãĻいる。"
68
+ },
69
+ {
70
+ "text": "そしãĻæĄƒå¤Ē郎はéŦŧぎ大将ãĢå‘ã‹ãŖãĻčĄŒããžã—ãŸã€‚æŋ€ã—いæˆĻいぎæœĢã€æĄƒå¤Ē郎はéŦŧぎ大将を倒しぞした。",
71
+ "imagePrompt": "城ぎåĨĨ、čąĒč¯ãĒéƒ¨åą‹ã§ãŽæĄƒå¤Ē郎とéŦŧãŽå¤§å°†ã¨ãŽä¸€é¨Žæ‰“ãĄã€‚éŦŧãŽå¤§å°†ã¯åˇ¨å¤§ã§ã€čĩ¤ã„č‚ŒãĢé‡‘č‰˛ãŽå…œã¨é‰„ãŽæŖæŖ’ã‚’æŒãŖãĻã„ã‚‹ã€‚æĄƒå¤Ē郎は小さいãĒがらも勇æ•ĸãĢ刀を構えãĻå¯žåŗ™ã—ãĻã„ã‚‹ã€‚éƒ¨åą‹ãŽå‘¨ã‚ŠãĢã¯åŽį‰ŠãŒæ•Ŗã‚‰ã°ã‚Šã€įĒ“ã‹ã‚‰ã¯æˆĻいをčĻ‹åŽˆã‚‹åŽļæĨãŸãĄãŽå§ŋがčĻ‹ãˆã‚‹ã€‚æąēåŽšįš„ãĒä¸€æ’ƒã‚’åŠ ãˆã‚ˆã†ã¨ã™ã‚‹æĄƒå¤ĒéƒŽã¨ã€éŠšããŽčĄ¨æƒ…ã‚’æĩŽã‹ãšã‚‹éŦŧぎ大将。"
72
+ },
73
+ {
74
+ "text": "「もうæ‚Ēいことはしぞせん。å‘Ŋだけはお劊けください」とéŦŧãŸãĄã¯é™å‚ã—ãžã—ãŸã€‚ãã—ãĻæ‘ã‹ã‚‰į›—ã‚“ã åŽį‰Šã‚’ã™ãšãĻåˇŽã—å‡ēしぞした。",
75
+ "imagePrompt": "åēŠãĢ頭を下げãĻ土下åē§ã™ã‚‹éŦŧぎ大将とéŦŧãŸãĄã€‚å‹åˆŠã—ãŸæĄƒå¤Ē郎が堂々とįĢ‹ãĄã€åŽļæĨãŸãĄãŒããŽæ¨ĒãĢčĒ‡ã‚‰ã—ã’ãĢä¸Ļんでいる。éŦŧãŸãĄãŽå‰ãĢã¯é‡‘éŠ€č˛ĄåŽã€å¸ƒã€įąŗäŋĩãĒãŠį›—ã‚“ã åŽį‰ŠãŒåąąã¨įŠãžã‚ŒãĻいる。éŦŧãŸãĄã¯æã‚Œã¨åžŒæ‚”ãŽčĄ¨æƒ…ã‚’æĩŽã‹ãšãĻã„ã‚‹ã€‚æĄƒå¤ĒéƒŽãŽčĄ¨æƒ…ã¯åŽŗã—ã„ãĒãŒã‚‰ã‚‚æ…ˆæ‚˛æˇąã•ã‚’æ„Ÿã˜ã•ã›ã‚‹ã€‚"
76
+ },
77
+ {
78
+ "text": "æĄƒå¤Ē郎とåŽļæĨãŸãĄã¯åŽį‰Šã‚’æŒãŖãĻ村ãĢ帰りぞした。村äēēãŸãĄã¯å¤§å–œãŗã§åŊŧらをčŋŽãˆãžã—た。",
79
+ "imagePrompt": "村ãĢå‡ąæ—‹ã™ã‚‹æĄƒå¤Ē郎とåŽļæĨãŸãĄã€‚åŽį‰Šã‚’é‹ãļįŠŦ、įŒŋã€ã‚­ã‚¸ã€‚æĄƒå¤Ē郎はčĒ‡ã‚‰ã—ã’ãĢ村äēēãŸãĄãĢæ‰‹ã‚’æŒ¯ãŖãĻã„ã‚‹ã€‚č€č‹ĨᔎåĨŗãŽæ‘äēēãŸãĄãŒé“ãŽä¸Ąå´ãĢé›†ãžã‚Šã€å–œãŗãŽčĄ¨æƒ…ã§čŠąã‚„æ——ã‚’æŒ¯ãŖãĻčŋŽãˆãĻいる。おじいさんとおばあさんも最前列でæļ™ã‚’æĩã—ãĒãŒã‚‰æĄƒå¤ĒéƒŽãŽå¸°ã‚Šã‚’åž…ãŖãĻいる。æ˜Ĩぎ明るいæ—ĨåˇŽã—ãŒæ‘å…¨äŊ“ã‚’į…§ã‚‰ã—ãĻいる。"
80
+ },
81
+ {
82
+ "text": "ãŠã˜ã„ã•ã‚“ã¨ãŠã°ã‚ã•ã‚“ã¯æĄƒå¤ĒéƒŽãŽį„Ąäē‹ãĒå¸°ã‚Šã‚’å–œãŗã€æŠąãã—ã‚ãžã—ãŸã€‚ãã—ãĻ村はもうäēŒåēĻとéŦŧãĢčĨ˛ã‚ã‚Œã‚‹ã“とはありぞせんでした。",
83
+ "imagePrompt": "åŽļãŽå‰ã§ãŠã˜ã„ã•ã‚“ã¨ãŠã°ã‚ã•ã‚“ãŒæĄƒå¤ĒéƒŽã‚’æŠąãã—ã‚ãĻã„ã‚‹æ„Ÿå‹•įš„ãĒå ´éĸã€‚å–œãŗãŽæļ™ã‚’æĩã™ãŠã˜ã„さんとおばあさん。įŠŦ、įŒŋ、キジも嚸せそうãĢčĻ‹åŽˆãŖãĻいる。周りãĢは村äēēãŸãĄãŒé›†ãžã‚Šã€įĨįĻã—ãĻいる。åŽļぎ前ãĢã¯åŽį‰ŠãŽä¸€éƒ¨ãŒįŊŽã‹ã‚Œã€čƒŒæ™¯ãĢã¯åšŗå’ŒãĒ村ぎéĸ¨æ™¯ãŒåēƒãŒãŖãĻいる。夕æ—Ĩが渊かãĒ光を投げかけ、晴れやかãĒé›°å›˛æ°—ã‚’äŊœã‚Šå‡ēしãĻいる。"
84
+ },
85
+ {
86
+ "text": "こうしãĻæĄƒå¤Ē郎とおじいさんとおばあさん、そしãĻåŽļæĨãŸãĄã¯åš¸ã›ãĢ暎らしぞした。めでたし、めでたし。",
87
+ "imagePrompt": "時がįĩŒãĄã€åšŗå’ŒãĢãĒãŖãŸæ‘ãŽéĸ¨æ™¯ã€‚æĄƒå¤Ē郎ぎåŽļã§ã¯ã€ãŠã˜ã„ã•ã‚“ã¨ãŠã°ã‚ã•ã‚“ãŒį¸å´ã§ãŠčŒļã‚’éŖ˛ã‚“ã§ã„ã‚‹ã€‚åē­ã§ã¯æˆé•ˇã—ãŸæĄƒå¤Ē郎がįŠŦ、įŒŋã€ã‚­ã‚¸ã¨ä¸€įˇ’ãĢæĨŊしそうãĢ過ごしãĻã„ã‚‹ã€‚čƒŒæ™¯ãĢã¯åŽŸã‚Šã‚ã‚‹į”°ã‚“ãŧã¨åšŗå’ŒãĒæ‘ãŽæ§˜å­ã€‚æĄƒãŽæœ¨ãŒčŠąã‚’å’˛ã‹ã›ã€ããŽä¸‹ã§įš†ãŒįŦ‘éĄ”ã§æšŽã‚‰ã—ãĻいる。夕暎れぎå„Ēしい光が全äŊ“を包ãŋčžŧãŋã€į‰ŠčĒžãŽåš¸ã›ãĒįĩæœĢã‚’čąĄåž´ã—ãĻいる。"
88
+ }
89
+ ]
90
+ }