{"id":29861051,"url":"https://github.com/lucab85/tubecatalog","last_synced_at":"2026-04-05T23:04:35.309Z","repository":{"id":306596284,"uuid":"1026721590","full_name":"lucab85/TubeCatalog","owner":"lucab85","description":"AI-powered title, description, and keyword optimization","archived":false,"fork":false,"pushed_at":"2025-07-26T13:53:09.000Z","size":358,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-26T18:32:30.704Z","etag":null,"topics":["agentic-builder","ai-app","content-automation","gpt-4","metadata-generator","nodejs","openai","radix-ui","replit","seo-tools","tailwindcss","typescript","video-catalog","video-optimization","youtube","youtube-api","youtube-metadata","youtube-seo","youtube-tools","youtube-transcript"],"latest_commit_sha":null,"homepage":"https://youtu.be/UnWQEJDmego","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/lucab85.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-26T13:26:27.000Z","updated_at":"2025-07-26T13:57:28.000Z","dependencies_parsed_at":"2025-07-26T18:32:34.053Z","dependency_job_id":"60b62ad7-b5e9-4072-a0ee-4634fa93df89","html_url":"https://github.com/lucab85/TubeCatalog","commit_stats":null,"previous_names":["lucab85/tubecatalog"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lucab85/TubeCatalog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucab85%2FTubeCatalog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucab85%2FTubeCatalog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucab85%2FTubeCatalog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucab85%2FTubeCatalog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucab85","download_url":"https://codeload.github.com/lucab85/TubeCatalog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucab85%2FTubeCatalog/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267808262,"owners_count":24147391,"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","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["agentic-builder","ai-app","content-automation","gpt-4","metadata-generator","nodejs","openai","radix-ui","replit","seo-tools","tailwindcss","typescript","video-catalog","video-optimization","youtube","youtube-api","youtube-metadata","youtube-seo","youtube-tools","youtube-transcript"],"created_at":"2025-07-30T04:11:39.655Z","updated_at":"2025-12-30T21:55:09.405Z","avatar_url":"https://github.com/lucab85.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TubeCatalog 🎬\n**AI-powered YouTube Metadata Generator built with Replit Agentic Builder, GPT-4, and YouTube Data API v3**\n\n---\n\n## 🚀 Overview\n\n**TubeCatalog** is an intelligent video cataloging app that automates the creation of YouTube titles, descriptions, and SEO-optimized keywords using OpenAI's GPT-4 and real-time video metadata from the YouTube Data API.\n\nPaste a YouTube URL and the app generates:\n- ✅ An SEO-optimized **title**\n- ✅ A detailed, AI-generated **description**\n- ✅ Exactly **40 comma-separated keywords** (no hashtags)\n\n---\n\n## ✨ Features\n\n- 🔗 Input any YouTube video URL\n- 🧠 Extract metadata and auto-generated transcript (if available)\n- ✍️ Generate structured, optimized metadata using GPT-4\n- 🖼️ Display video preview, thumbnail, and original info\n- 📋 One-click copy functionality for all generated content\n- 🌐 Built using Replit's **Agentic Builder**, **Tailwind CSS**, and **Radix UI**\n\n---\n\n## 🧱 Tech Stack\n\n- **Frontend**: Radix UI + Tailwind CSS\n- **Backend**: Node.js / TypeScript\n- **APIs**: \n  - [YouTube Data API v3](https://developers.google.com/youtube/v3)\n  - [youtube-transcript](https://www.npmjs.com/package/youtube-transcript)\n  - [OpenAI GPT-4](https://platform.openai.com/)\n- **Platform**: Replit\n\n---\n\n## 🧑‍💻 Setup Instructions\n\n### 1. Clone the Repository\n```bash\ngit clone https://github.com/lucab85/TubeCatalog.git\ncd TubeCatalog\n````\n\n### 2. Install Dependencies\n\n```bash\nnpm install\n```\n\n### 3. Create `.env` File\n\n```env\nYOUTUBE_API_KEY=your_youtube_api_key\nOPENAI_API_KEY=your_openai_api_key\n```\n\n### 4. Run the App\n\n```bash\nnpm run dev\n```\n\n---\n\n## 📦 API Keys Required\n\n| Service          | Key               | Use                             |\n| ---------------- | ----------------- | ------------------------------- |\n| YouTube Data API | `YOUTUBE_API_KEY` | To fetch video metadata         |\n| OpenAI API       | `OPENAI_API_KEY`  | To generate content using GPT-4 |\n\n---\n\n## 📷 Screenshot\n\n![TubeCatalog Screenshot](./screenshot.jpg)\n\n---\n\n## 🧪 Example Output\n\nFor `https://youtu.be/UnWQEJDmego`\n\n* **Title**: *Unlocking AI OCR: Revolutionizing Text Recognition Technology*\n* **Description**: *(Full paragraph with use cases and insights from transcript)*\n* **Keywords (40)**: `AI OCR, Optical Character Recognition, text recognition, ...`\n\n---\n\n## 📄 License\n\nMIT License © 2025 Luca Berton\n[https://lucaberton.com](https://lucaberton.com)\n\n---\n\n## 🙌 Contribute\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\n### 🔗 Links\n\n* 🎬 [Demo Video on YouTube](https://youtu.be/Js58yqsz5Ww) – *See TubeCatalog in action*\n* 🌐 [Live App Demo](https://replit.com/@lucaberton/TubeCatalog)\n* 📺 [YouTube Channel](https://youtube.com/@lucaberton)\n* 🤖 [OpenAI API](https://platform.openai.com/)\n* 📘 [YouTube API Docs](https://developers.google.com/youtube/v3)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucab85%2Ftubecatalog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucab85%2Ftubecatalog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucab85%2Ftubecatalog/lists"}