Human Anatomy and Physiology Education Expert · GPT 작업
webPilot
Start with a Request: Users can either directly request the 'longContentWriter' to write a long form article or choose to use 'webPageReader' for information gathering before content creation. In both scenarios, before using the 'longContentWriter' service, I confirm all details of their request with the user, including the writing task (task), content summary (summary), writing style (style), and any additional information they provide. Information Gathering with 'webPageReader': When 'webPageReader' is used, I search the internet and gather relevant information based on the writing task. If more information is needed to enhance the article's depth and accuracy, I continue using 'webPageReader', integrating this information into the reference section. Content Generation by 'longContentWriter': After confirming all details with the user, including any additional contributions and enhanced information from 'webPageReader', I proceed to generate the long-form content. This ensures the content aligns with the specified requirements and style. Delivery of the Final Article: Upon completion, the content is delivered to the user for review. They can request revisions or additional information if necessary. Default Assumptions in Responses: When users request content creation, especially in areas requiring specific knowledge like Bitcoin trends, I will make an initial assumption about the writing style and target audience. For instance, I might assume a technical analysis style aimed at professionals. I will then ask the user if this assumption is okay or if they need any modifications. This approach helps streamline the content creation process.
POST /api/readvisit web pagePOST /api/writegenerate a book
원본 API 스키마
{
"openapi": "3.1.0",
"info": {
"title": "webPilot",
"description": "Start with a Request: Users can either directly request the 'longContentWriter' to write a long form article or choose to use 'webPageReader' for information gathering before content creation. In both scenarios, before using the 'longContentWriter' service, I confirm all details of their request with the user, including the writing task (task), content summary (summary), writing style (style), and any additional information they provide.\nInformation Gathering with 'webPageReader': When 'webPageReader' is used, I search the internet and gather relevant information based on the writing task. If more information is needed to enhance the article's depth and accuracy, I continue using 'webPageReader', integrating this information into the reference section.\nContent Generation by 'longContentWriter': After confirming all details with the user, including any additional contributions and enhanced information from 'webPageReader', I proceed to generate the long-form content. This ensures the content aligns with the specified requirements and style.\nDelivery of the Final Article: Upon completion, the content is delivered to the user for review. They can request revisions or additional information if necessary.\nDefault Assumptions in Responses: When users request content creation, especially in areas requiring specific knowledge like Bitcoin trends, I will make an initial assumption about the writing style and target audience. For instance, I might assume a technical analysis style aimed at professionals. I will then ask the user if this assumption is okay or if they need any modifications. This approach helps streamline the content creation process.",
"version": "v1.1"
},
"servers": [
{
"url": "https://gpts.webpilot.ai"
}
],
"paths": {
"/api/read": {
"post": {
"operationId": "webPageReader",
"x-openai-isConsequential": false,
"summary": "visit web page",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/visitWebPageRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/visitWebPageResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/visitWebPageError"
}
}
}
}
}
}
},
"/api/write": {
"post": {
"operationId": "longContentWriter",
"x-openai-isConsequential": false,
"summary": "generate a book",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/generateContentRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/generateContentResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/generateContentError"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"generateContentRequest": {
"type": "object",
"required": [
"task",
"language",
"summary",
"style"
],
"properties": {
"task": {
"type": "string",
"description": "The \"task\" field outlines the specific requirements and objectives for generating the content. This includes detailed instructions on what needs to be accomplished through the writing, such as the main topic to be covered, any particular arguments or perspectives to be presented, and the desired outcome or impact of the piece. This field serves as a directive for the content creation process, ensuring that the writing not only adheres to the given guidelines but also effectively achieves its intended purpose, whether it's to inform, persuade, entertain, or educate the audience."
},
"language": {
"type": "string",
"description": "Required, the language used by the user in the request, according to the ISO 639-1 standard. For Chinese, use zh-CN for Simplified Chinese and zh-TW for Traditional Chinese."
},
"summary": {
"type": "string",
"description": "The \"summary\" field encapsulates a concise overview of the writing content, presenting the core themes, key points, and primary objectives of the piece. This brief but comprehensive synopsis serves as a roadmap, guiding the overall direction and focus of the writing, ensuring that it remains aligned with the intended message and purpose throughout the development process. This summary not only aids in maintaining coherence and relevance but also provides a clear preview of what the reader can expect from the full content."
},
"reference": {
"type": "string",
"description": "The \"reference\" field is a curated collection of information sourced from the Internet via WebPilot, or proveded by the user, specifically tailored to enrich and support the writing task at hand. It involves a selective process where relevant data, facts, and insights related to the topic are gathered, ensuring that the content is not only well-informed and accurate but also closely aligned with the specific requirements and objectives of the writing project. This field acts as a foundation, providing a rich base of verified and pertinent information from which the article or content is crafted. This field would be long."
},
"style": {
"type": "string",
"description": "The \"style\" field in content creation is a detailed framework encompassing three pivotal components - the writing tone or style, the target audience, and the publication medium. This field is structured as \"[specific writing style], aimed at [target audience], using [language style], inspired by [notable content creator].\" The writing style element ranges from formal and analytical to casual and engaging, setting the overall tone. The target audience aspect identifies the specific reader group, such as students, professionals, or the general public, tailoring the content's complexity and relevance. The language style, whether academic, colloquial, or technical, shapes the linguistic approach. The final component, inspired by a notable content creator, serves as a reference for the desired tone and approach, like \"analytical and concise, aimed at business professionals, using professional language, inspired by a renowned business journalist.\" This clear and structured definition ensures the content is effectively aligned with the audience's needs and the publication's format."
}
}
},
"generateContentResponse": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Result message of the request"
}
}
},
"generateContentError": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "error code"
},
"message": {
"type": "string",
"description": "error message"
},
"detail": {
"type": "string",
"description": "error detail"
}
}
},
"visitWebPageResponse": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The title of this web page"
},
"content": {
"type": "string",
"description": "The content of the web page's url to be summarized"
},
"meta": {
"type": "object",
"description": "The Html meta info of the web page"
},
"links": {
"type": "array",
"description": "Some links in the web page",
"items": {
"type": "string"
}
},
"extra_search_results": {
"type": "array",
"description": "Additional Search results",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "the title of this search result"
},
"link": {
"type": "string",
"description": "the link of this search result"
},
"snippet": {
"type": "string",
"description": "the snippet of this search result"
}
}
}
},
"todo": {
"type": "array",
"description": "what to do with the content",
"items": {
"type": "string"
}
},
"tips": {
"type": "array",
"description": "Tips placed at the end of the answer",
"items": {
"type": "string"
}
},
"rules": {
"description": "Adherence is required when outputting content.",
"items": {
"type": "string"
}
}
}
},
"visitWebPageRequest": {
"type": "object",
"required": [
"link",
"ur"
],
"properties": {
"link": {
"type": "string",
"description": "Required, The web page's url to visit and retrieve content from."
},
"ur": {
"type": "string",
"description": "Required, a clear statement of the user's request, can be used as a search query and may include search operators."
},
"lp": {
"type": "boolean",
"description": "Required, Whether the link is directly provided by the user"
},
"rt": {
"type": "boolean",
"description": "If the last request doesn't meet user's need, set this to true when trying to retry another request."
},
"l": {
"type": "string",
"description": "Required, the language used by the user in the request, according to the ISO 639-1 standard. For Chinese, use zh-CN for Simplified Chinese and zh-TW for Traditional Chinese."
}
}
},
"visitWebPageError": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "error code"
},
"message": {
"type": "string",
"description": "error message"
},
"detail": {
"type": "string",
"description": "error detail"
}
}
}
}
}
}Scrape API
An API to scrape web content.
POST /scrapeScrape a webpageFetch the content from a webpage with options for formats and content extraction.
POST /crawlStart a web crawlInitiate a web crawling session, following various configurable options.
GET /crawl/{id}Get the status of a crawl jobRetrieve the status and details of a crawl job by its ID.
DELETE /crawl/{id}Cancel a crawl jobCancel a crawl job by its ID.
POST /mapMap a website with a search queryMap the links on a website starting from a base URL, using a search query, and various options.
원본 API 스키마
{
"openapi": "3.1.0",
"info": {
"title": "Scrape API",
"version": "1.0.0",
"description": "An API to scrape web content."
},
"servers": [
{
"url": "https://api.firecrawl.dev/v1",
"description": "Production server"
}
],
"paths": {
"/scrape": {
"post": {
"operationId": "scrapeWebpage",
"summary": "Scrape a webpage",
"description": "Fetch the content from a webpage with options for formats and content extraction.",
"x-openai-isConsequential": false,
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The URL to scrape.",
"example": "https://example.com"
},
"formats": {
"type": "array",
"items": {
"type": "string",
"enum": [
"markdown",
"html",
"rawHtml",
"links",
"screenshot",
"extract",
"screenshot@fullPage"
]
},
"description": "Formats to include in the output.",
"example": [
"markdown"
]
},
"onlyMainContent": {
"type": "boolean",
"default": true,
"description": "Only return the main content of the page excluding headers, navs, footers, etc."
},
"includeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags to include in the output."
},
"excludeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags to exclude from the output."
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Headers to send with the request, such as cookies or user-agent."
},
"waitFor": {
"type": "integer",
"default": 0,
"description": "Specify a delay in milliseconds before fetching the content."
},
"timeout": {
"type": "integer",
"default": 30000,
"description": "Timeout in milliseconds for the request."
},
"extract": {
"type": "object",
"properties": {
"schema": {
"type": "object",
"description": "The schema to use for the extraction."
},
"systemPrompt": {
"type": "string",
"description": "The system prompt to use for the extraction."
},
"prompt": {
"type": "string",
"description": "The prompt to use for the extraction without a schema."
}
},
"description": "Optional extraction parameters."
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"example": true
},
"data": {
"type": "object",
"properties": {
"markdown": {
"type": "string",
"example": "<string>"
},
"html": {
"type": [
"string",
"null"
],
"example": "<string>"
},
"rawHtml": {
"type": [
"string",
"null"
],
"example": "<string>"
},
"screenshot": {
"type": [
"string",
"null"
],
"example": "<string>"
},
"links": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"<string>"
]
},
"metadata": {
"type": "object",
"properties": {
"title": {
"type": "string",
"example": "<string>"
},
"description": {
"type": "string",
"example": "<string>"
},
"language": {
"type": [
"string",
"null"
],
"example": "<string>"
},
"sourceURL": {
"type": "string",
"example": "<string>"
},
"statusCode": {
"type": "integer",
"example": 123
},
"error": {
"type": [
"string",
"null"
],
"example": "<string>"
}
}
},
"llm_extraction": {
"type": [
"object",
"null"
],
"description": "Displayed when using LLM extraction."
},
"warning": {
"type": [
"string",
"null"
],
"description": "Warning message related to the extraction process."
}
}
}
}
}
}
}
},
"400": {
"description": "Bad request. Missing or invalid parameters."
},
"401": {
"description": "Unauthorized request. Invalid token."
},
"500": {
"description": "Internal server error."
}
},
"security": [
{
"bearerAuth": []
}
]
}
},
"/crawl": {
"post": {
"operationId": "startCrawl",
"summary": "Start a web crawl",
"x-openai-isConsequential": false,
"description": "Initiate a web crawling session, following various configurable options.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The base URL to start crawling from.",
"example": "https://example.com"
},
"excludePaths": {
"type": "array",
"items": {
"type": "string"
},
"description": "URL patterns to exclude.",
"example": [
"/exclude"
]
},
"includePaths": {
"type": "array",
"items": {
"type": "string"
},
"description": "URL patterns to include.",
"example": [
"/include"
]
},
"maxDepth": {
"type": "integer",
"default": 2,
"description": "Maximum depth to crawl relative to the entered URL."
},
"ignoreSitemap": {
"type": "boolean",
"default": true,
"description": "Ignore the website sitemap when crawling."
},
"limit": {
"type": "integer",
"default": 10,
"description": "Maximum number of pages to crawl."
},
"allowBackwardLinks": {
"type": "boolean",
"default": false,
"description": "Enables the crawler to navigate back to previously linked pages."
},
"allowExternalLinks": {
"type": "boolean",
"default": false,
"description": "Allows the crawler to follow links to external websites."
},
"webhook": {
"type": "string",
"description": "The URL to send webhook notifications."
},
"scrapeOptions": {
"type": "object",
"properties": {
"formats": {
"type": "array",
"items": {
"type": "string",
"enum": [
"markdown",
"html",
"rawHtml",
"links",
"screenshot"
]
},
"description": "Formats to include in the output.",
"example": [
"markdown"
]
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Headers to send with the request."
},
"includeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags to include in the output."
},
"excludeTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags to exclude from the output."
},
"onlyMainContent": {
"type": "boolean",
"default": true,
"description": "Only return the main content of the page."
},
"waitFor": {
"type": "integer",
"default": 123,
"description": "Wait in milliseconds for the page to load before fetching."
}
},
"description": "Options for scraping while crawling."
}
}
}
}
}
},
"responses": {
"200": {
"description": "Crawl initiated successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"example": true
},
"id": {
"type": "string",
"example": "crawl_id"
},
"url": {
"type": "string",
"example": "https://example.com"
}
}
}
}
}
},
"400": {
"description": "Bad request. Missing or invalid parameters."
},
"401": {
"description": "Unauthorized request. Invalid token."
},
"500": {
"description": "Internal server error."
}
},
"security": [
{
"bearerAuth": []
}
]
}
},
"/crawl/{id}": {
"get": {
"operationId": "getCrawlStatus",
"summary": "Get the status of a crawl job",
"x-openai-isConsequential": false,
"description": "Retrieve the status and details of a crawl job by its ID.",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "The ID of the crawl job"
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "The current status of the crawl job. Can be scraping, completed, or failed.",
"example": "scraping"
},
"total": {
"type": "integer",
"description": "The total number of pages that were attempted to be crawled.",
"example": 123
},
"completed": {
"type": "integer",
"description": "The number of pages that have been successfully crawled.",
"example": 123
},
"creditsUsed": {
"type": "integer",
"description": "The number of credits used for the crawl.",
"example": 123
},
"expiresAt": {
"type": "string",
"format": "date-time",
"description": "The date and time when the crawl will expire.",
"example": "2023-11-07T05:31:56Z"
},
"next": {
"type": [
"string",
"null"
],
"description": "The URL to retrieve the next 10MB of data, if available.",
"example": "https://example.com/next"
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"markdown": {
"type": "string",
"description": "Markdown content of the page."
},
"html": {
"type": [
"string",
"null"
],
"description": "HTML version of the content if includeHtml is true.",
"example": "<string>"
},
"rawHtml": {
"type": [
"string",
"null"
],
"description": "Raw HTML content if includeRawHtml is true."
},
"links": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of links on the page if includeLinks is true."
},
"screenshot": {
"type": [
"string",
"null"
],
"description": "Screenshot of the page if includeScreenshot is true."
},
"metadata": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Title of the page."
},
"description": {
"type": "string",
"description": "Description of the page."
},
"language": {
"type": [
"string",
"null"
],
"description": "Language of the page content.",
"example": "en"
},
"sourceURL": {
"type": "string",
"description": "The source URL of the page."
},
"statusCode": {
"type": "integer",
"description": "HTTP status code of the page.",
"example": 200
},
"error": {
"type": [
"string",
"null"
],
"description": "The error message if there was an issue fetching the page."
}
}
}
}
},
"description": "The data from the crawl."
}
}
}
}
}
},
"400": {
"description": "Bad request. Missing or invalid parameters."
},
"401": {
"description": "Unauthorized request. Invalid token."
},
"404": {
"description": "Crawl job not found."
},
"500": {
"description": "Internal server error."
}
},
"security": [
{
"bearerAuth": []
}
]
},
"delete": {
"operationId": "cancelCrawlJob",
"summary": "Cancel a crawl job",
"x-openai-isConsequential": false,
"description": "Cancel a crawl job by its ID.",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "The ID of the crawl job"
}
],
"responses": {
"200": {
"description": "Crawl job successfully cancelled.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indicates if the crawl job was cancelled successfully.",
"example": true
},
"message": {
"type": "string",
"description": "A message describing the result of the cancellation.",
"example": "Crawl job successfully cancelled."
}
}
}
}
}
},
"400": {
"description": "Bad request. Missing or invalid parameters."
},
"401": {
"description": "Unauthorized request. Invalid token."
},
"404": {
"description": "Crawl job not found."
},
"500": {
"description": "Internal server error."
}
},
"security": [
{
"bearerAuth": []
}
]
}
},
"/map": {
"post": {
"operationId": "mapWebsite",
"summary": "Map a website with a search query",
"x-openai-isConsequential": false,
"description": "Map the links on a website starting from a base URL, using a search query, and various options.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The base URL to start mapping from.",
"example": "https://example.com"
},
"search": {
"type": "string",
"description": "Search query to use for mapping. Limited to 100 results in Alpha phase, but no limit is applied if more results are found.",
"example": "example search"
},
"ignoreSitemap": {
"type": "boolean",
"default": true,
"description": "Ignore the website's sitemap during the crawl."
},
"includeSubdomains": {
"type": "boolean",
"default": false,
"description": "Whether to include subdomains of the website in the mapping."
},
"limit": {
"type": "integer",
"default": 5000,
"description": "Maximum number of links to return."
}
}
}
}
}
},
"responses": {
"200": {
"description": "Mapping successful",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"example": true
},
"links": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of found links.",
"example": [
"https://example.com/link1",
"https://example.com/link2"
]
}
}
}
}
}
},
"400": {
"description": "Bad request. Missing or invalid parameters."
},
"401": {
"description": "Unauthorized request. Invalid token."
},
"500": {
"description": "Internal server error."
}
},
"security": [
{
"bearerAuth": []
}
]
}
}
},
"components": {
"schemas": {},
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
}
}
}
}