Public
Like
veo-feed
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data β all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v417View latest version
A web application that converts URLs into TikTok-style videos using AI-generated summaries and screenshots.
- Convert any URL into a video using Veo AI
- Fetch markdown content and screenshots from URLs
- Generate AI summaries using Gemini API
- TikTok-style scrolling feed with scroll-snap
- Auto-play videos when scrolled into view
- Audio controls with mute/unmute toggle
- Customizable video generation prompts
βββ backend/
β βββ index.ts # Main Hono server
β βββ routes/
β β βββ videos.ts # Video generation endpoints
β β βββ static.ts # Static file serving
β βββ database/
β βββ migrations.ts # SQLite schema
β βββ queries.ts # Database operations
βββ frontend/
β βββ index.html # Main HTML template
β βββ index.tsx # React app entry point
β βββ components/
β β βββ App.tsx # Main app component
β β βββ VideoFeed.tsx # TikTok-style feed
β β βββ VideoCard.tsx # Individual video component
β β βββ URLInput.tsx # URL input form
β βββ style.css # Custom styles
βββ shared/
βββ types.ts # Shared TypeScript types
βββ utils.ts # Shared utility functions
POST /api/videos/generate- Generate video from URLGET /api/videos- Get all generated videosGET /api/videos/:id- Get specific videoDELETE /api/videos/:id- Delete video
GEMINI_API_KEY- Google Gemini API key for summaries (required)VEO_API_KEY- Veo API key for video generation (optional - currently using placeholder)
- Get a Gemini API key from Google AI Studio
- Add the
GEMINI_API_KEYenvironment variable in Val Town - The Veo integration is currently a placeholder - you'll need to implement the actual Veo API calls
- The application uses external services:
https://markdownify.val.run/for converting web pages to markdownhttps://screenshot.val.run/for taking page screenshots
- Enter URLs in the input form
- Videos are generated automatically using:
- Markdown content from the URL
- Screenshot of the page
- AI-generated summary
- Custom video generation prompt
- Scroll through the TikTok-style feed
- Customize video prompts in the settings
- NEVER USE:
https://esm.sh/@google/generative-ai@0.1.3 - ALWAYS USE:
https://esm.sh/@google/genai - Correct Import:
import { GoogleGenAI } from "https://esm.sh/@google/genai"; - Correct Initialization:
const genAI = new GoogleGenAI({ apiKey: Deno.env.get("GEMINI_API_KEY") || "", });
- Correct API Call:
const result = await genAI.models.generateContent({ model: "gemini-flash-latest", contents: summaryPrompt, }); const summary = result.text;
- Markdown Service:
https://markdownifyurl.val.run/?url=${encodeURIComponent(url)} - Screenshot Service:
https://screenshot.val.run/?url=${encodeURIComponent(url)}