Free video search and download integration for the Automated Video Generator. Fetches CC-licensed and public domain videos from Wikimedia Commons and Internet Archive without requiring any API key, token, or registration.
Feature: Free Video Downloader
Files: src/lib/free-video/
Config: No env vars required (always enabled as fallback)
Provider APIs:
https://commons.wikimedia.org/w/api.php (Wikimedia Commons)https://archive.org/advancedsearch.php (Internet Archive)The Automated Video Generator includes two built-in free video providers that require no API key, no registration, and no token:
These act as a middle fallback tier in the video pipeline — after Pexels and Pixabay (which need API keys) but before Openverse images.
fetchVisualsForScene() in src/lib/visual-fetcher.ts.PEXELS_API_KEY).PIXABAY_API_KEY).No API keys are required for steps 4–6. The pipeline runs entirely on free content if you set only OPENVERSE_ENABLED=true (the default).
Free video sources activate in these scenarios:
PEXELS_API_KEY nor PIXABAY_API_KEY are set, the free sources are the primary video source (before Openverse images).| Source | Typical Content | License |
|---|---|---|
| Wikimedia Commons | Educational, scientific, nature, animals, historical | CC BY-SA, CC0, Public Domain |
| Internet Archive | Documentaries, news, educational, public domain films | Public Domain, CC BY |
Video formats include WebM, MP4, and OGG. Resolutions range from 240p to 4K depending on the source.
Wikimedia Commons videos are typically CC-licensed. The integration returns the creator, license, and sourcePageUrl fields. Internet Archive content is typically Public Domain. If you publish videos publicly, you should verify the specific license of each downloaded video and provide attribution where required.
The count parameter defaults to 3 in the pipeline, and can go up to 50 via the API. The search is capped at reasonable limits to avoid rate limiting. Wikimedia Commons allows approximately 8–10 rapid requests before a brief cooldown.
Yes. There are three entry points:
GET /api/free-video/search?keyword=space&source=all&count=5search_free_video { keyword: "cat", source: "wikimedia", count: 3 }/video-download page has a dedicated “Free Sources” tab{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Automated Video Generator — Free Video Sources Integration",
"operatingSystem": "Windows, macOS, Linux",
"applicationCategory": "Multimedia",
"description": "Free CC-licensed and public domain video search integration that works without any API key. Provides video fallback for video generation pipelines using Wikimedia Commons and Internet Archive public catalogs.",
"featureList": "Wikimedia Commons API integration, Internet Archive API integration, no API key required, CC-licensed video search, public domain video search, automatic video fallback in pipeline, MCP tools for AI agents, HTTP API for custom integrations, frontend UI for manual browsing",
"url": "https://github.com/itsPremkumar/Automated-Video-Generator",
"license": "MIT",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
}
User/Agent ──► Frontend UI / MCP Tool / HTTP API / Pipeline
│
┌───────▼────────┐
│ App Service │ freeVideoAppService.search()
│ (Orchestrator)│ freeVideoAppService.download()
└───────┬────────┘
│
┌───────▼────────┐
│ Adapter │ freeVideoAdapter.searchAll()
│ (Parallel) │ freeVideoAdapter.searchAndDownloadFirst()
└───────┬────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Wikimedia│ │ Internet │ │ Download │
│ Provider │ │ Archive │ │ Manager │
│ │ │ Provider │ │ │
└──────────┘ └──────────┘ └──────────┘
GET /api/free-video/search?keyword={query}&source={all|wikimedia|archive}&count={1-50}&maxDuration={seconds}&minResolution={px}&sortBy={relevance|newest|resolution}
GET /api/free-video/sources
POST /api/free-video/download
Body: { url, title, creator?, license?, format? }
| Tool | Description |
|---|---|
search_free_video |
Search for free CC-licensed videos from Wikimedia Commons and Internet Archive |
download_free_video |
Download a free CC-licensed video by URL to the project workspace |
| File | Purpose |
|---|---|
src/lib/free-video/models.ts |
Shared types: VideoResult, SearchFilters, VideoProvider, DownloadResult |
src/lib/free-video/index.ts |
Singleton exports: wikiProvider, archiveProvider, freeVideoDownloader, freeVideoAdapter |
src/lib/free-video/providers/wikimedia.ts |
Wikimedia Commons API client — search() |
src/lib/free-video/providers/archive.ts |
Internet Archive API client — search() |
src/lib/free-video/download/downloader.ts |
Concurrent download manager with resume and retry |
src/lib/free-video/adapter.ts |
Maps VideoResult → MediaAsset for pipeline integration |
src/lib/free-video/http-client.ts |
Axios-based HTTP client with User-Agent |
src/lib/free-video/utils.ts |
Retry, filename sanitization, path utilities |
src/application/free-video-app.service.ts |
Application service layer — search() + download() |
src/adapters/http/free-video-controller.ts |
HTTP API handlers |
src/adapters/http/api-routes.ts |
Route registration |
src/adapters/mcp/register-free-video-tools.ts |
MCP tool registration |
src/lib/visual-fetcher.ts |
Pipeline integration — fallback chain (lines 944–974) |
src/views/video-download.view.ts |
Frontend “Free Sources” tab |
| Parameter | Type | Default | Description |
|---|---|---|---|
keyword |
string | (required) | Search query |
count |
number | 5 | Max results per source (1–50) |
source |
string | all |
all, wikimedia, or archive |
maxDuration |
number | — | Max video duration in seconds |
minResolution |
number | — | Min vertical resolution (e.g., 720) |
sortBy |
string | relevance |
relevance, newest, or resolution |
If either provider is unreachable or returns an error, it is caught independently (the providers run in parallel via Promise.allSettled). The pipeline continues to the next available source. If all free sources fail, the pipeline falls through to Openverse images.