{"id":24617691,"url":"https://github.com/jacoblincool/chatgpt-action-everywhere","last_synced_at":"2025-05-07T05:24:39.273Z","repository":{"id":206575195,"uuid":"717215876","full_name":"JacobLinCool/ChatGPT-Action-Everywhere","owner":"JacobLinCool","description":"Convert any website into a ChatGPT Action. Enable GPTs to interact with the whole world.","archived":false,"fork":false,"pushed_at":"2025-05-03T16:08:35.000Z","size":571,"stargazers_count":19,"open_issues_count":11,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-03T17:20:59.390Z","etag":null,"topics":["cloudflare-workers","gpt","openapi"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JacobLinCool.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-10T20:38:31.000Z","updated_at":"2025-04-09T18:34:10.000Z","dependencies_parsed_at":"2025-01-16T08:20:23.193Z","dependency_job_id":"8e1aed25-4722-4b27-bf28-f16d490465d5","html_url":"https://github.com/JacobLinCool/ChatGPT-Action-Everywhere","commit_stats":null,"previous_names":["jacoblincool/chatgpt-action-everywhere"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2FChatGPT-Action-Everywhere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2FChatGPT-Action-Everywhere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2FChatGPT-Action-Everywhere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2FChatGPT-Action-Everywhere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JacobLinCool","download_url":"https://codeload.github.com/JacobLinCool/ChatGPT-Action-Everywhere/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252819586,"owners_count":21809043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare-workers","gpt","openapi"],"created_at":"2025-01-24T23:39:57.555Z","updated_at":"2025-05-07T05:24:39.255Z","avatar_url":"https://github.com/JacobLinCool.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChatGPT Action Everywhere\n\nConvert any website into a ChatGPT Action. Enable GPTs to interact with the whole world.\n\n## Concept\n\n\"My GPTs\" is an amazing feature that enables GPT to interact with external APIs through the \"Action\" feature by providing an OpenAPI specification.\n\nAs we know, Large Language Models (LLMs) excel in processing natural language. However, it appears that Actions can only consume JSON data. To enable LLMs to interact with the web, we need to build a bridge between the LLMs and the web.\n\nThis project serves as that bridge, converting webpages into JSON with Markdown content.\n\n```scala\nHTML -\u003e Markdown -\u003e JSON\n```\n\n## Usage\n\nYou can create the spec yourself, as detailed in [The Format](#the-format).\n\nAlternatively, use the [GPT Actions Builder](https://chat.openai.com/g/g-QpAkNkwy4-gpt-actions-builder) to help you build the spec by providing some URLs.\n\n[![image](./images/action-builder.png)](https://chat.openai.com/share/1a97a1fb-53a1-4b4f-9589-e071e46e41c7)\n\n\u003e \u003chttps://chat.openai.com/share/1a97a1fb-53a1-4b4f-9589-e071e46e41c7\u003e\n\n## Example\n\nI have successfully used this to convert Cloudflare's blog into a ChatGPT Action, and [it works well](https://chat.openai.com/g/g-9xYm107vz-cloudflare-blog).\n\n[![image](./images/cloudflare-blog.png)](https://chat.openai.com/share/89a639ef-51bf-4aaf-9d3d-7848823d7cda)\n\n\u003e \u003chttps://chat.openai.com/share/89a639ef-51bf-4aaf-9d3d-7848823d7cda\u003e\n\n## The Format\n\n```yml\nopenapi: 3.0.0\ninfo:\n    title: Some API\n    version: 0.0.0\n    description: Some API :)\nservers:\n    - url: https://chaction.csie.cool/\u003curlencoded-origin-server\u003e/\n\npaths:\n    /index.php/news/:\n        get:\n            summary: The latest news list\n            operationId: list\n            responses:\n                \"200\":\n                    description: ok\n                    content:\n                        application/json:\n                            schema:\n                                type: object\n                                properties:\n                                    content:\n                                        type: string\n                                        description: The page content\n\n    /index.php/{year}/{month}/{day}/{slug}/:\n        get:\n            summary: Get the news detail\n            operationId: fetch\n            parameters:\n                - name: year\n                  in: path\n                  description: The year\n                  required: true\n                  schema:\n                      type: integer\n                - name: month\n                  in: path\n                  description: The month\n                  required: true\n                  schema:\n                      type: integer\n                - name: day\n                  in: path\n                  description: The day\n                  required: true\n                  schema:\n                      type: integer\n                - name: slug\n                  in: path\n                  description: The slug\n                  required: true\n                  schema:\n                      type: string\n            responses:\n                \"200\":\n                    description: ok\n                    content:\n                        application/json:\n                            schema:\n                                type: object\n                                properties:\n                                    content:\n                                        type: string\n                                        description: The page content\n```\n\nFor the origin server, encode the URL using `encodeURIComponent` in JavaScript.\n\nFor example, encode `https://www.csie.ntnu.edu.tw` as `https%3A%2F%2Fwww.csie.ntnu.edu.tw`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacoblincool%2Fchatgpt-action-everywhere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacoblincool%2Fchatgpt-action-everywhere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacoblincool%2Fchatgpt-action-everywhere/lists"}