{"id":13456424,"url":"https://github.com/aschmelyun/subvert","last_synced_at":"2025-05-15T10:01:25.615Z","repository":{"id":148711865,"uuid":"617662019","full_name":"aschmelyun/subvert","owner":"aschmelyun","description":"Generate subtitles, summaries, and chapters from videos in seconds","archived":false,"fork":false,"pushed_at":"2025-01-31T05:56:54.000Z","size":1440,"stargazers_count":830,"open_issues_count":23,"forks_count":57,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-10T06:39:13.836Z","etag":null,"topics":["chatgpt","openai","transcription","translation","video-editing","whisper"],"latest_commit_sha":null,"homepage":"https://subvert.dev","language":"PHP","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/aschmelyun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":"aschmelyun"}},"created_at":"2023-03-22T21:07:46.000Z","updated_at":"2025-04-08T11:28:24.000Z","dependencies_parsed_at":"2025-02-12T20:00:22.840Z","dependency_job_id":null,"html_url":"https://github.com/aschmelyun/subvert","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aschmelyun%2Fsubvert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aschmelyun%2Fsubvert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aschmelyun%2Fsubvert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aschmelyun%2Fsubvert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aschmelyun","download_url":"https://codeload.github.com/aschmelyun/subvert/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254319715,"owners_count":22051072,"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":["chatgpt","openai","transcription","translation","video-editing","whisper"],"created_at":"2024-07-31T08:01:21.624Z","updated_at":"2025-05-15T10:01:25.101Z","avatar_url":"https://github.com/aschmelyun.png","language":"PHP","funding_links":["https://github.com/sponsors/aschmelyun"],"categories":["PHP","Computer Vision, Image \u0026 Video Processing","Openai","ChatGPT-based applications","Video Processing"],"sub_categories":["Recommended core stack","Other sdk/libraries","Utilities \u0026 Tools"],"readme":"# Subvert\n\n![Docker Semver](https://img.shields.io/docker/v/aschmelyun/subvert?style=flat-square)\n![Docker Pulls](https://img.shields.io/docker/pulls/aschmelyun/subvert?label=pulls\u0026style=flat-square)\n\nGenerate subtitles, chapters, and summaries of videos in seconds with the help of OpenAI.\n\n🚧 This is very much a work-in-progress, please [create issues](https://github.com/aschmelyun/subvert/issues/new) for bugs if they appear 🚧\n\n![Demo gif of Subvert converting a video](media/subvert-demo.gif)\n\n## Getting started\n\nYou'll need:\n\n- [Docker installed](https://docs.docker.com/get-docker/) on your local machine\n- An [OpenAI API key](https://platform.openai.com/account/api-keys)\n\nSubvert is self-contained in a single Docker image and can be started with a one-line command:\n\n```\ndocker run -it -p 80:8080 -e OPENAI_API_KEY=sk-123abc aschmelyun/subvert\n```\n\nThis will boot up a server running the application and make it available to your machine at http://localhost.\n\n## How it works\n\nAfter selecting a video file to process, you have the option of choosing whether you also want to generate chapters and a summary.\n\nYour video is sent to an API where the audio is extracted from it using FFMpeg, and then sent to **OpenAI's Whisper model** for transcription into the common vtt format.\n\nIf you chose to select chapters or a summary, that transcript is then sent to a **ChatGPT model** for processing into concise chapters of the length you wanted, and a brief summary that would fit in something like a YouTube description.\n\n## Configuration\n\nYou can adjust a few parameters in the container by passing in [environment variables](https://docs.docker.com/engine/reference/commandline/run/#env) with your command using additional `-e` flags. Here are the current ones you can add:\n\n- `OPENAI_API_KEY` **(required)** - Sets the key responsible for communication with OpenAI's APIs. No default.\n- `UPLOAD_MAX_FILESIZE` - Changes PHP's UPLOAD_MAX_FILESIZE setting. Default: `256M`\n- `MEMORY_LIMIT` - Changes PHP's MEMORY_LIMIT setting. Default: `512M`\n\n## Starting from source\n\nAlternative, if you have **PHP 8.1+** and **npm** installed on your local machine, you can boot the application up directly from the source code instead.\n\nFirst, check out this repo to your desired location. Then, navigate to the `src` directory and run:\n\n```\n./startup.sh\n```\n\nAlternatively, you can run the commands inside of the `startup.sh` script individually for the same result.\n\n## Deploying\n\nBecause this project is contained in a single Dockerfile, it can be deployed immediately to any server provisioned with Docker. Alternatively, the Subvert Docker image can be ran on cloud instances via AWS, Azure, GCP, Fly.io, etc.\n\n\u003e Note: This image currently only exposes the insecure :80 http port.\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faschmelyun%2Fsubvert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faschmelyun%2Fsubvert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faschmelyun%2Fsubvert/lists"}