{"id":28842735,"url":"https://github.com/dev-mayanktiwari/blog-generator","last_synced_at":"2026-06-22T19:31:22.866Z","repository":{"id":299651621,"uuid":"1002072862","full_name":"dev-mayanktiwari/blog-generator","owner":"dev-mayanktiwari","description":"AI-powered tool that converts YouTube videos into customizable, ready-to-publish blog posts using Google’s ADK, Genkit, and Cloud Run.","archived":false,"fork":false,"pushed_at":"2025-07-20T13:30:03.000Z","size":3990,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-29T17:16:14.787Z","etag":null,"topics":["adk","cloud-run","express","gcp","genkit","google","nextjs","shadcn","turborepo"],"latest_commit_sha":null,"homepage":"https://blogai.mayanktiwari.tech","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dev-mayanktiwari.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-14T16:51:46.000Z","updated_at":"2025-07-19T09:05:49.000Z","dependencies_parsed_at":"2025-06-17T16:32:58.747Z","dependency_job_id":"5167f994-8dba-4756-a4e0-fdcc40ee7e54","html_url":"https://github.com/dev-mayanktiwari/blog-generator","commit_stats":null,"previous_names":["dev-mayanktiwari/blog-generator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dev-mayanktiwari/blog-generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mayanktiwari%2Fblog-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mayanktiwari%2Fblog-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mayanktiwari%2Fblog-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mayanktiwari%2Fblog-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dev-mayanktiwari","download_url":"https://codeload.github.com/dev-mayanktiwari/blog-generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-mayanktiwari%2Fblog-generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34663522,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"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":["adk","cloud-run","express","gcp","genkit","google","nextjs","shadcn","turborepo"],"created_at":"2025-06-19T16:06:25.229Z","updated_at":"2026-06-22T19:31:22.856Z","avatar_url":"https://github.com/dev-mayanktiwari.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# What is BlogAI?\n\nBlogAI is an AI-powered platform that transforms YouTube videos into professionally written, SEO-optimized blog posts in seconds. Leveraging advanced AI flows, a modern web interface, and a robust backend, BlogAI streamlines content creation for creators, marketers, and businesses.\n\n---\n\n## Demo Video\n\n[![Watch the Demo](./public/thumbnail.png)](https://youtu.be/xhMsTVs4CWc)\n\n---\n\n# Blog Generator Monorepo\n\nA full-stack, AI-powered blog generation platform. This monorepo contains all services, packages, and infrastructure needed to run the system locally or in production.\n\n---\n\n## Table of Contents\n- [Overview](#overview)\n- [Monorepo Structure](#monorepo-structure)\n- [Apps](#apps)\n- [Packages](#packages)\n- [Development Setup](#development-setup)\n- [Running with Docker](#running-with-docker)\n- [Database](#database)\n- [Environment Variables](#environment-variables)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Overview\n\nThis project enables users to generate high-quality blog posts from YouTube videos using advanced AI flows, with a modern web interface, robust backend, and modular architecture. It leverages microservices, a shared type system, and reusable UI components for rapid development and scalability.\n\n## Architecture\n\n![Blog Generator Architecture](./public/architecture.png)\n\n---\n\n## Monorepo Structure\n\n```\nblog-generator/\n  apps/\n    adk/         # Google Agent Development Kit (web search agent for blog generation)\n    client/      # Next.js web interface\n    genkit/      # AI flows and orchestration for blog generation\n    server/      # Node.js/Express backend API\n    transcript/  # (Legacy) YouTube transcript extraction service\n  packages/\n    constants/   # Shared constants\n    db/          # Prisma schema and DB client\n    types/       # Shared TypeScript types\n    ui/          # shadcn/ui React components\n    utils/       # Shared utility functions\n  infra/\n    docker/      # Dockerfiles for all services\n  docker-compose.yaml\n  ...\n```\n\n---\n\n## Apps\n\n### `apps/adk` - Agent Development Kit\n- **Purpose:** Python-based agent for web search and output structuring, used in the blog generation pipeline.\n- **Tech:** Python, Poetry\n- **Entrypoint:** `root_agent/agent.py`\n- **Subagents:** Output structure agent, web search agent\n- **Setup:** See [apps/adk/README.md](./apps/adk/README.md)\n\n### `apps/client` - Web Interface\n- **Purpose:** Next.js frontend for users to generate, view, and manage blog posts.\n- **Tech:** React, Next.js, shadcn/ui, TypeScript\n- **Entrypoint:** `app/`\n- **Features:** Auth, dashboard, blog generation, theming, toast notifications\n- **Setup:** See [apps/client/README.md](./apps/client/README.md)\n\n### `apps/genkit` - AI Flows\n- **Purpose:** Orchestrates AI flows for summarizing YouTube videos, generating search terms, and producing final blog content.\n- **Tech:** Node.js, TypeScript\n- **Entrypoint:** `src/flows/`\n- **Features:** Modular flows, prompt management, service integration\n- **Setup:** See [apps/genkit/README.md](./apps/genkit/README.md)\n\n### `apps/server` - Backend API\n- **Purpose:** Express.js backend for authentication, user management, blog post CRUD, and integration with Genkit and DB.\n- **Tech:** Node.js, Express, Prisma, TypeScript\n- **Entrypoint:** `src/index.ts`\n- **Features:** Auth, user, post, and agent routes; error handling; JWT; Prisma ORM\n- **Setup:** See [apps/server/README.md](./apps/server/README.md)\n\n### `apps/transcript` - (Legacy) Transcript Service\n- **Purpose:** Python service for extracting YouTube video transcripts (not actively used).\n- **Tech:** Python, Poetry, Flask\n- **Entrypoint:** `src/transcript/main.py`\n- **Setup:** See [apps/transcript/README.md](./apps/transcript/README.md)\n\n---\n\n## Packages\n\n### `packages/constants`\n- Shared constants (status codes, messages, etc.)\n- **Setup:** See [packages/constants/README.md](./packages/constants/README.md)\n\n### `packages/db`\n- Prisma schema (`prisma/schema.prisma`)\n- DB client and migrations\n- **Setup:** See [packages/db/README.md](./packages/db/README.md)\n\n### `packages/types`\n- Shared TypeScript types for API, models, and flows\n- **Setup:** See [packages/types/README.md](./packages/types/README.md)\n\n### `packages/ui`\n- Reusable React components (shadcn/ui-based): Button, Card, Input, Select, etc.\n- **Setup:** See [packages/ui/README.md](./packages/ui/README.md)\n\n### `packages/utils`\n- Shared utility functions (error handling, logging, etc.)\n- **Setup:** See [packages/utils/README.md](./packages/utils/README.md)\n\n---\n\n## Development Setup\n\n### Prerequisites\n- Node.js (v20+)\n- pnpm (recommended)\n- Docker (for local DB and services)\n- Python 3.11+ (for transcript/adk if running locally)\n\n### Install dependencies\n```bash\npnpm install\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-mayanktiwari%2Fblog-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdev-mayanktiwari%2Fblog-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-mayanktiwari%2Fblog-generator/lists"}