Slide It
Slide It · GPT アクション
GPTMotionIT API
API to create presentations with slides based on textual prompts.
POST /gptmotionitCreate a presentationThis endpoint takes an array of slide objects with arguments and returns links to the created Google Slides presentation.
POST /generateImagesGenerate images from text prompts using stable diffusion.This endpoint accepts an array of text prompts and returns generated images using Stable diffusion XL model.
元の API スキーマ
{
"openapi": "3.0.0",
"info": {
"title": "GPTMotionIT API",
"version": "1.0.0",
"description": "API to create presentations with slides based on textual prompts."
},
"servers": [
{
"url": "https://slidegpt-xcii52hu6q-nw.a.run.app",
"description": "Production server"
}
],
"paths": {
"/gptmotionit": {
"post": {
"summary": "Create a presentation",
"description": "This endpoint takes an array of slide objects with arguments and returns links to the created Google Slides presentation.",
"operationId": "createPresentation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"slides": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Slide"
}
}
},
"required": [
"slides"
]
}
}
}
},
"responses": {
"200": {
"description": "A successful response with links to the presentation.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresentationLinks"
}
}
}
},
"400": {
"description": "Bad request when the input does not match the schema."
},
"500": {
"description": "Internal server error."
}
}
}
},
"/generateImages": {
"post": {
"summary": "Generate images from text prompts using stable diffusion.",
"description": "This endpoint accepts an array of text prompts and returns generated images using Stable diffusion XL model.",
"operationId": "createImages",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"prompts": {
"type": "array",
"items": {
"type": "string",
"description": "Suggest a unique and imaginative textual prompt that will inspire stable-diffusion to generate a simple and visually captivating image, to illustrate the slide. Use a lot of details to describe the image, like what's in the foreground, background. Be very clear on what you want. Always more than 15 words."
},
"description": "An array of text prompts for image generation."
}
},
"example": {
"prompts": [
"A diagram illustrating the molecular structure of water, with oxygen and hydrogen atoms, showing the covalent bonds. Include annotations explaining the angle and bond length. The background should be educational and clear.",
"Illustration for a presentation slide about French politics in 2022. This image should showcase a graphical representation of major political parties in France, like La République En Marche, National Rally, and others. The image should include party logos, colors, and a brief description of their political orientation. The style should be clear, professional, and visually engaging for an educational presentation."
]
}
}
}
}
},
"responses": {
"200": {
"description": "Successfully generated images.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Indicates the status of the request."
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "The text prompt used for generating the image."
},
"image_url": {
"type": "string",
"format": "uri",
"description": "URL of the generated image."
}
}
}
}
},
"example": {
"status": "success",
"data": [
{
"prompt": "A futuristic cityscape at dusk",
"image_url": "https://example.com/generated-image1.jpg"
},
{
"prompt": "A surreal painting of a cat in space",
"image_url": "https://example.com/generated-image2.jpg"
}
]
}
}
}
}
},
"400": {
"description": "Invalid request format."
}
}
}
}
},
"components": {
"schemas": {
"Slide": {
"type": "object",
"required": [
"name",
"arguments"
],
"properties": {
"type": {
"oneOf": [
{
"$ref": "#/components/schemas/TitleSlide"
},
{
"$ref": "#/components/schemas/BodySlide"
},
{
"$ref": "#/components/schemas/HeadlineSlide"
},
{
"$ref": "#/components/schemas/ProsAndConsSlide"
},
{
"$ref": "#/components/schemas/ThreeColumnsSlide"
},
{
"$ref": "#/components/schemas/QuoteSlide"
}
]
},
"arguments": {
"oneOf": [
{
"$ref": "#/components/schemas/TitleSlideArguments"
},
{
"$ref": "#/components/schemas/BodySlideArguments"
},
{
"$ref": "#/components/schemas/HeadlineSlideArguments"
},
{
"$ref": "#/components/schemas/ProsAndConsSlideArguments"
},
{
"$ref": "#/components/schemas/ThreeColumnsSlideArguments"
},
{
"$ref": "#/components/schemas/QuoteSlideArguments"
}
]
}
},
"discriminator": {
"propertyName": "name",
"mapping": {
"TitleSlide": "#/components/schemas/TitleSlideArguments",
"BodySlide": "#/components/schemas/BodySlideArguments",
"HeadlineSlide": "#/components/schemas/HeadlineSlideArguments",
"ProsAndConsSlide": "#/components/schemas/ProsAndConsSlideArguments",
"ThreeColumnsSlide": "#/components/schemas/ThreeColumnsSlideArguments",
"QuoteSlide": "#/components/schemas/QuoteSlideArguments"
}
}
},
"SlideName": {
"type": "string",
"description": "Type of the slide to be created.",
"oneOf": [
{
"$ref": "#/components/schemas/TitleSlide"
},
{
"$ref": "#/components/schemas/BodySlide"
},
{
"$ref": "#/components/schemas/HeadlineSlide"
},
{
"$ref": "#/components/schemas/ProsAndConsSlide"
},
{
"$ref": "#/components/schemas/ThreeColumnsSlide"
},
{
"$ref": "#/components/schemas/QuoteSlide"
}
]
},
"TitleSlide": {
"type": "string",
"enum": [
"TitleSlide"
],
"description": "A title slide, used for opening slides, section headers, or title cards. It includes a title and a subtitle and an image to illustrate the slide."
},
"BodySlide": {
"type": "string",
"enum": [
"BodySlide"
],
"description": "Use this layout for prioritizing textual content. Ideal for emphasizing crucial points or detailing complex information. Write detailed content that provides an in-depth explanation and key insights on the chosen topic. This should include essential facts, trends, and relevant points that would inform and engage the audience."
},
"HeadlineSlide": {
"type": "string",
"enum": [
"HeadlineSlide"
],
"description": "Use this layout to introduce new sections or topics within your presentation. It serves as a title, signaling a shift in content or focus. Employ it to break up longer text segments, organize information, and provide clear direction to your audience. Ensure the headline is concise, relevant, and gives a clear preview of the upcoming content."
},
"ProsAndConsSlide": {
"type": "string",
"enum": [
"ProsAndConsSlide"
],
"description": "Use this layout when evaluating the advantages and disadvantages of a topic, decision, or concept. Ensure each argument is concise and directly related to the subject under discussion. This layout aids in providing a balanced view and facilitates informed decision-making."
},
"ThreeColumnsSlide": {
"type": "string",
"enum": [
"ThreeColumnsSlide"
],
"description": "Use this layout when presenting distinct yet interconnected ideas or items. Ideal for contrasting or comparing three related points, outlining the problem-statement-solution framework for startups, or breaking down a complex concept into three simpler components or steps."
},
"QuoteSlide": {
"type": "string",
"enum": [
"QuoteSlide"
],
"description": "Use this layout to show a quote. The quote should be no more than 20 words and should be insightful or inspiring."
},
"TitleSlideArguments": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The main title of the slide. Max five words"
},
"subtitle": {
"type": "string",
"description": "Max ten words in a catchy sentence."
},
"imgUrl": {
"type": "string",
"description": "Url of the image created to illustrate the slide"
}
},
"description": "Arguments when using TitleSlide",
"required": [
"title",
"subtitle",
"imgUrl"
]
},
"BodySlideArguments": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The main title of the slide. In a catchy line, max 5 words"
},
"body": {
"type": "string",
"description": "Write detailed content that provides an in-depth explanation and key insights on the chosen topic. This should include essential facts, trends, and relevant points that would inform and engage the audience. Be expansive and specific like an expert."
},
"imgUrl": {
"type": "string",
"description": "Url of the image created to illustrate the slide"
}
},
"description": "Arguments when using BodySlide",
"required": [
"title",
"body",
"imgUrl"
]
},
"HeadlineSlideArguments": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "in a catchy line, max seven words"
},
"subtitle": {
"type": "string",
"description": "In a catchy line, max 10 words."
},
"imgUrl": {
"type": "string",
"description": "Url of the image created to illustrate the slide"
}
},
"description": "Arguments when using HeadlineSlide",
"required": [
"title",
"subtitle",
"imgUrl"
]
},
"ProsAndConsSlideArguments": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The main title of the slide. In a catchy line, max 5 words"
},
"pros": {
"type": "array",
"items": {
"type": "string",
"description": "Develop the concept or idea here in keys points, max 25 words each key point"
}
},
"cons": {
"type": "array",
"items": {
"type": "string",
"description": "Develop the concept or idea here in keys points, max 25 words each key point"
}
}
},
"description": "Arguments when using ProsAndConsSlide",
"required": [
"title",
"pros",
"cons"
]
},
"ThreeColumnsSlideArguments": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The main title of the slide. In a catchy line, max 5 words"
},
"column1": {
"type": "array",
"items": {
"type": "string",
"description": "Develop the concept or idea here in keys points, max 25 words each key point"
}
},
"column2": {
"type": "array",
"items": {
"type": "string",
"description": "Develop the concept or idea here in keys points, max 25 words each key point"
}
},
"column3": {
"type": "array",
"items": {
"type": "string",
"description": "Develop the concept or idea here in keys points, max 25 words each key point"
}
}
},
"description": "Arguments when using ThreeColumnsSlide",
"required": [
"title",
"column1",
"column2",
"column3"
]
},
"QuoteSlideArguments": {
"type": "object",
"properties": {
"quote": {
"type": "string",
"description": "The quote should be no more than 25 words and should be insightful or inspiring."
},
"author": {
"type": "string",
"description": "The author of the quote."
}
},
"description": "Arguments when using QuoteSlide",
"required": [
"quote",
"author"
]
},
"PresentationLinks": {
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Direct link to view or edit the presentation."
}
}
}
}
}
}