SKILL.md
Media Archive UI Generator
This skill helps you convert a standard web page into a self-contained, offline-capable video gallery. It is useful for archiving projects where you want to keep the UI visuals but serve local video content.
Workflow
1. Open target page
- Goal: Ensure local browser can open the target page
- Action:
- Ensure that prompt contains target URL, if not ask user for it - Open the target page in the browser - Create ./web directory. - Create ./web/images directory. - You modify files only within ./web directory
2. Asset Localization
- Goal: Make an offline copy of the target page with local assets
- Action:
- Understand how ./example/index.html and ./example/style.css are structured - Scan the target page in the browser to understand the visual layout. You must keep all the text content verbatim from the target page. No omissions or replacements. - All images must be be present on the target page. No omissions or replacements. - Inventory: List all local video files first. This will be your "source of truth" to match images and titles against. - Create a local copy of the target page ./web/index.html, use ./example/style.css instead of original CSS styles - Download all images (thumbnails) ./index.html needs to ./web/images. - Make ./web/index.html references to local resources in ./web/images - Parsing Strategy: - For small projects (< 20 items), it is often faster to manually identify and download images than to write a complex parser. - If parsing srcset, allow for fallbacks. If a .webp URL 404s, try the .jpg version. - Naming: Rename downloaded images to match their corresponding video filenames (e.g., if video is yoga-flow.mp4, save image as yoga-flow.jpg). This makes linking easier. - Do not install any software or dependencies. Do not create and run python scripts.
3. Remove External Dependencies
- Goal: Maximize speed and privacy, remove reliance on external CDNs.
- Action:
- Remove <link> tags for external fonts (e.g., Google Fonts, Adobe Fonts). - Update CSS --font-family variables to use generic system fonts (e.g., sans-serif, -apple-system, Inter, BlinkMacSystemFont).
4. Connect Local Media
- Goal: Make the gallery functional.
- Action:
- Locate local video files (e.g., .mp4, .mkv) in the project directory. - Match video files to the UI cards/episodes in the HTML based on order or naming convention. - Update anchor tags (<a href="...">) to link directly to the local video files.
5. Premium UI Polish
- Goal: Create a high-quality "Netflix-style" browsing experience.
- Action:
- Dark Mode: Ensure the background is dark (e.g., #000 or #1c1c1e) and text is light/white. - Play Overlays: Add CSS to display a "Play" button (▶) icon over thumbnails on hover. - Micro-interactions: Add hover scaling (transform: scale(1.02)) and brightness effects to thumbnails to indicate interactivity.
Common CSS Patterns to Use
Play Button Overlay
.card-image-container {
position: relative;
overflow: hidden;
}
/* Play Button Icon */
.card-image-container::after {
content: "▶";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 44px;
height: 44px;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(4px);
border-radius: 50%;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
opacity: 0;
transition: opacity 0.2s ease, transform 0.2s ease;
padding-left: 3px; /* Optical centering */
}
/* Hover State */
.card:hover .card-image-container::after {
opacity: 1;
transform: translate(-50%, -50%) scale(1.1);
}
/* Image Dimming */
.card img {
transition: filter 0.2s ease;
}
.card:hover img {
filter: brightness(0.7);
}
Examples
For a complete reference implementation, check the examples/ directory:
- [index.html](./examples/index.html): A full example of the HTML structure with local image paths and video links.
- [style.css](./examples/style.css): The complete CSS including dark mode variables, responsive grid, and the interactive play button overlay.