AI-Project-Index / create_all_pages.py
danielrosehill's picture
commit
7b41fa1
#!/usr/bin/env python3
"""
Generate all HTML category pages from the original-index.md data
"""
import json
# All category data
all_categories = {
"frameworks": {
"title": "Frameworks & Tools",
"description": "Frameworks, tools, and utilities for AI development",
"icon": "πŸ› οΈ",
"projects": [
{"name": "A Few ADKs", "url": "https://github.com/danielrosehill/A-Few-ADKs", "desc": "Point in time collection of some agent development kits (ADKs) to explore"},
{"name": "Agent SDK Env Setup", "url": "https://github.com/danielrosehill/Agent-SDK-Env-Setup", "desc": "Script to clone a few of the main ADKs (agent development kids) for testing/experimentation"},
{"name": "AI Friendly Badge", "url": "https://github.com/danielrosehill/AI-Friendly-Badge", "desc": "Website footer badge signalling AI \"friendliness\""},
{"name": "ASR Training Data Chunker", "url": "https://github.com/danielrosehill/ASR-Training-Data-Chunker", "desc": "Breaks up texts by approximate reading duration"},
{"name": "Batch ClaudeMD Repo Creator", "url": "https://github.com/danielrosehill/Batch-ClaudeMD-Repo-Creator", "desc": "For batch CLAUDE.md creation in large repository collections"},
{"name": "Better Safe", "url": "https://github.com/danielrosehill/Better-Safe", "desc": "CLI for taking on-demand Snapper snapshots (BTRFS)"},
{"name": "Cline Rules", "url": "https://github.com/danielrosehill/Cline-Rules", "desc": "Rules file for Cline"},
{"name": "Continue Dev Blocks", "url": "https://github.com/danielrosehill/Continue-Dev-Blocks", "desc": "Configuration blocks for Continue.dev code-gen assistants"},
{"name": "Email AI Outputs Workflow", "url": "https://github.com/danielrosehill/Email-AI-Outputs-Workflow", "desc": "N8N workflow for sharing prompts and outputs with friends and family with a reformatting node for smoother MD to email-safe HTML"},
{"name": "Gemini CLI Home Guidance", "url": "https://github.com/danielrosehill/Gemini-CLI-Home-Guidance", "desc": "Gemini.md (\"rules\") for the home folder / non repo constrained execution for Gemini CLI (model)"},
{"name": "Gemini Desktop Recorder Notepad", "url": "https://github.com/danielrosehill/Gemini-Desktop-Recorder-Notepad", "desc": "Voice recorder intended for easy voice note capture with AI (STT) postprocessing/cleanup"},
{"name": "Gemini Prompt Library ideator", "url": "https://github.com/danielrosehill/Gemini-Prompt-Library-ideator", "desc": "Using Gemini structured outputs to ideate a prompt library for Open Web UI"},
{"name": "Gemini SSML Formatter", "url": "https://github.com/danielrosehill/Gemini-SSML-Formatter", "desc": "Agent/app using Gemini to format plain markdown into speech synthesis markup language (SSML) for TTS narration"},
{"name": "Gemini Voice Notepad", "url": "https://github.com/danielrosehill/Gemini-Voice-Notepad", "desc": "Voice note transcription and cleanup with reformatting support"},
{"name": "Google Air Quality MCP", "url": "https://github.com/danielrosehill/Google-Air-Quality-MCP", "desc": "WIP - MCP server for querying Google Map's environmental API to retrieve air quality data for a geolocation"},
{"name": "Linux Desktop ClaudeMD Seeder", "url": "https://github.com/danielrosehill/Linux-Desktop-ClaudeMD-Seeder", "desc": "Seeds Claude.md files at common places in Linux Desktop filesystems"},
{"name": "N8N LLM Workflow Bulk Updater", "url": "https://github.com/danielrosehill/N8N-LLM-Workflow-Bulk-Updater", "desc": "Backend script for applying bulk model updates to workflows (use-case: updating LLMs in nodes)"},
{"name": "N8N Workflow Sanitiser Agent", "url": "https://github.com/danielrosehill/N8N-Workflow-Sanitiser-Agent", "desc": "Configuration for an AI agent for sanitising (redacting personal details) in N8N workflow exports"},
{"name": "Open In Windsurf KDE", "url": "https://github.com/danielrosehill/Open-In-Windsurf-KDE", "desc": "Implementing an \"Open In Windsurf\" (AI IDE) context menu element for KDE Plasma"},
{"name": "Private And Public Claude MD", "url": "https://github.com/danielrosehill/Private-And-Public-Claude-MD", "desc": "Slash command to seed private and public CLAUDE.md files"},
{"name": "Prompt Library Privacy Screener", "url": "https://github.com/danielrosehill/Prompt-Library-Privacy-Screener", "desc": "Model for a PII screen (using Ollama) for open sourcing prompt libraries safely"},
{"name": "quick repo creator", "url": "https://github.com/danielrosehill/quick-repo-creator", "desc": "A streamlined CLI tool for fast repository creation workflow with GitHub integration and IDE support"},
{"name": "Smithery Batch Installer", "url": "https://github.com/danielrosehill/Smithery-Batch-Installer", "desc": "Speeds up installing Smithery MCP servers onto multiple clients"},
{"name": "Structured System Prompt Generator", "url": "https://github.com/danielrosehill/Structured-System-Prompt-Generator", "desc": "Streamlit generator to aid with the creation of structured prompts"},
{"name": "Text Transformation Prompt Combiner", "url": "https://github.com/danielrosehill/Text-Transformation-Prompt-Combiner", "desc": "Basic implementation of a prompt concatenation utility for text transformation system prompts for converting transcribed text"},
{"name": "To Clone Or Not To Clone", "url": "https://github.com/danielrosehill/To-Clone-Or-Not-To-Clone", "desc": "Interactive CLI for cloning your Github repos"},
{"name": "Vibe Coded Disclosure", "url": "https://github.com/danielrosehill/Vibe-Coded-Disclosure", "desc": "Quick utility for adding FYI type notices to repos that they were vibe coded"},
{"name": "What Reqs Scanner", "url": "https://github.com/danielrosehill/What-Reqs-Scanner", "desc": "Python utility that scans a repo base for requirements.txt to analyse most used packages and suggest base env"},
{"name": "Whisper Converter Linux", "url": "https://github.com/danielrosehill/Whisper-Converter-Linux", "desc": "Minimalist AI-generated desktop utility for Linux using Whisper API to transcribe audio files"},
{"name": "Windsurf Global Rules", "url": "https://github.com/danielrosehill/Windsurf-Global-Rules", "desc": "Some snippets for global rules configurations for Windsurf IDE"},
{"name": "Windsurf Rules", "url": "https://github.com/danielrosehill/Windsurf-Rules", "desc": "Updated Windsurf rules"},
{"name": "Windsurf Rules 0925", "url": "https://github.com/danielrosehill/Windsurf-Rules-0925", "desc": "Refactored Windsurf Rules for the program's change to a modular config approach"},
]
},
"claude-code": {
"title": "Claude Code Projects",
"description": "Projects built with and for Claude Code CLI",
"icon": "πŸ’»",
"projects": [
{"name": "AI Developer Notebook", "url": "https://github.com/danielrosehill/AI-Developer-Notebook", "desc": "Notes for configuring a reference notebook with Claude Code"},
{"name": "Claude Code Context Feature Requests", "url": "https://github.com/danielrosehill/Claude-Code-Context-Feature-Requests", "desc": "A couple of feature requests (including my own) discussing context handling in Claude code"},
{"name": "Claude Code Linux Desktop Slash Commands", "url": "https://github.com/danielrosehill/Claude-Code-Linux-Desktop-Slash-Commands", "desc": "Slash commands for Linux desktop sysadmin with Claude Code (or any other agent)"},
{"name": "Claude Code MCP Command Generator", "url": "https://github.com/danielrosehill/Claude-Code-MCP-Command-Generator", "desc": "Provides CC MCP installation commands"},
{"name": "Claude Code Repo Managers ClaudeMD", "url": "https://github.com/danielrosehill/Claude-Code-Repo-Managers-ClaudeMD", "desc": "CLAUDE.md files for repo base levels for bulk mgmt"},
{"name": "Claude Code Repos Index", "url": "https://github.com/danielrosehill/Claude-Code-Repos-Index", "desc": "Index of repositories related to Claude Code CLI"},
{"name": "Claude Code Writing Squad", "url": "https://github.com/danielrosehill/Claude-Code-Writing-Squad", "desc": "Model repository structure for using a Claude Code agent crew for writing related tasks"},
{"name": "Claude OS Sync Agent", "url": "https://github.com/danielrosehill/Claude-OS-Sync-Agent", "desc": "Idea - using Claude Code in place of Ansible for cross-device updating/sync"},
{"name": "Claude Slash Commands", "url": "https://github.com/danielrosehill/Claude-Slash-Commands", "desc": "My Claude Code slash commands"},
{"name": "Claude Sub Agent Network", "url": "https://github.com/danielrosehill/Claude-Sub-Agent-Network", "desc": "Collection of subagents for Claude Code with configs spanning ideation, editing, version control"},
{"name": "Cool Claude Code Stuff", "url": "https://github.com/danielrosehill/Cool-Claude-Code-Stuff", "desc": "Claude Code repos and other resources"},
{"name": "Home Folder Claude MD", "url": "https://github.com/danielrosehill/Home-Folder-Claude-MD", "desc": "CLAUDE.md for my home directory on an Ubuntu Linux desktop"},
{"name": "Non Code Claude Code", "url": "https://github.com/danielrosehill/Non-Code-Claude-Code", "desc": "Small collection of non-development related uses for Claude Code"},
{"name": "Smithery Claude Code MCP Jumpstarter", "url": "https://github.com/danielrosehill/Smithery-Claude-Code-MCP-Jumpstarter", "desc": "Group of Smithery MCPs for Claude Code"},
]
},
"mcp": {
"title": "MCP Projects",
"description": "Model Context Protocol servers and implementations",
"icon": "πŸ”Œ",
"projects": [
{"name": "Google Air Quality MCP Postman Autogenerated", "url": "https://github.com/danielrosehill/Google-Air-Quality-MCP-Postman-Autogenerated", "desc": "Auto-generated MCP server for Google Air Quality API"},
{"name": "Jewish Interest MCP Projects", "url": "https://github.com/danielrosehill/Jewish-Interest-MCP-Projects", "desc": "Some MCP (model context protocol) servers which might be of interest to Jewish users"},
{"name": "Linux MCP Clients", "url": "https://github.com/danielrosehill/Linux-MCP-Clients", "desc": "A very small list of MCP clients that are available to Linux users, GUIs + CLIs"},
{"name": "MCP Projects", "url": "https://github.com/danielrosehill/MCP-Projects", "desc": "Various MCP related projects I'm either working on (or have worked on)"},
{"name": "MCP Server Ideas", "url": "https://github.com/danielrosehill/MCP-Server-Ideas", "desc": "Plans/WIP for MCP servers"},
{"name": "MCP Server JSON Sync", "url": "https://github.com/danielrosehill/MCP-Server-JSON-Sync", "desc": "Sync script for syncing VS Code MCP server JSON to Roo Code's store"},
{"name": "Qwen Agent", "url": "https://github.com/danielrosehill/Qwen-Agent", "desc": "Agent framework and applications built upon Qwen>=3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc."},
{"name": "awesome mcp clients", "url": "https://github.com/danielrosehill/awesome-mcp-clients", "desc": "A collection of MCP clients."},
]
},
"gemini": {
"title": "Gemini Projects",
"description": "Projects leveraging Google's Gemini AI",
"icon": "✨",
"projects": [
{"name": "Gemini AI Podcast Generator Web UI", "url": "https://github.com/danielrosehill/Gemini-AI-Podcast-Generator-Web-UI", "desc": "Web UI for Gemini AI podcast generator (Firebase Studio project)"},
{"name": "Gemini Ubuntu Maintenance Agent", "url": "https://github.com/danielrosehill/Gemini-Ubuntu-Maintenance-Agent", "desc": "Maintenance agent for Ubuntu systems using Gemini"},
{"name": "Gemini Vibe Coding Projects", "url": "https://github.com/danielrosehill/Gemini-Vibe-Coding-Projects", "desc": "List of vibe-coded starters created with Google AI Studio app builder"},
{"name": "Multimodal AI Use Case Ideator", "url": "https://github.com/danielrosehill/Multimodal-AI-Use-Case-Ideator", "desc": "Ideates use-cases for multimodal AI (Gemini)"},
{"name": "STT To TTS", "url": "https://github.com/danielrosehill/STT-To-TTS", "desc": "Gemini app which captures user speech, condenses (LLM), and then synthes"},
{"name": "Structured Gemini Prompts", "url": "https://github.com/danielrosehill/Structured-Gemini-Prompts", "desc": "A couple of examples of using Gemini 2.5 with structured outputs in Google AI Studio in order to conduct document analysis."},
]
},
"automation": {
"title": "Automation & Workflows",
"description": "N8N workflows and automation tools",
"icon": "πŸ”„",
"projects": [
{"name": "Israel Morning News Briefs N8N Perplexity Sonar", "url": "https://github.com/danielrosehill/Israel-Morning-News-Briefs-N8N-Perplexity-Sonar", "desc": "Using Perplexity API structured prompting and N8N to deliver a tailored news brief"},
{"name": "N8N Expense Processing Workflow", "url": "https://github.com/danielrosehill/N8N-Expense-Processing-Workflow", "desc": "Expense processing backend workflow with AI agent for doc analysis"},
{"name": "N8N Test Agents", "url": "https://github.com/danielrosehill/N8N-Test-Agents", "desc": "Simple n8n agent patterns for learning the ropes or validating MCP calling"},
{"name": "N8N Voice Note Context Pipeline Workflow", "url": "https://github.com/danielrosehill/N8N-Voice-Note-Context-Pipeline-Workflow", "desc": "Workflow for extracting context data from voice notes and passing them into Pipecone vector database for upserting"},
{"name": "N8N Workflows Index", "url": "https://github.com/danielrosehill/N8N-Workflows-Index", "desc": "Index of N8N workflows that I have shared on Github"},
{"name": "Parenting Questions AI Agent Workflow", "url": "https://github.com/danielrosehill/Parenting-Questions-AI-Agent-Workflow", "desc": "Workflow for an agent that answers parenting questions by email with upload to Google Drive"},
{"name": "Save AI Outputs To Nuclino N8N", "url": "https://github.com/danielrosehill/Save-AI-Outputs-To-Nuclino-N8N", "desc": "N8N workflow for saving AI outputs to Nuclino and posting a notification to Slack"},
{"name": "Stack Research Agent N8N Config", "url": "https://github.com/danielrosehill/Stack-Research-Agent-N8N-Config", "desc": "N8N configuration for stack research agent"},
{"name": "Structured Output Schemas", "url": "https://github.com/danielrosehill/Structured-Output-Schemas", "desc": "Reuseable JSON schemas for structured Ai assistant/agent workflows"},
{"name": "System Prompt Tuning Agent N8N", "url": "https://github.com/danielrosehill/System-Prompt-Tuning-Agent-N8N", "desc": "N8N agent workflow for an agent that recommends fixes to system prompts based on structured user inputs provided by form"},
{"name": "Voice Prompt Enhancement Node", "url": "https://github.com/danielrosehill/Voice-Prompt-Enhancement-Node", "desc": "Configuration for an intermediate agent in voice automation workflows that bridge voice input to other actions"},
{"name": "Voicenotes Prompt To Email Workflow N8N", "url": "https://github.com/danielrosehill/Voicenotes-Prompt-To-Email-Workflow-N8N", "desc": "Voice notes to email workflow using N8N"},
]
},
"context": {
"title": "Context & Prompt Libraries",
"description": "Context repositories and prompt collections",
"icon": "πŸ“š",
"projects": [
{"name": "Audiopenai Edit Prompts", "url": "https://github.com/danielrosehill/Audiopenai-Edit-Prompts", "desc": "Text transformation prompts library for Audiopen.ai (my customs)"},
{"name": "Career Data AI Context Repo", "url": "https://github.com/danielrosehill/Career-Data-AI-Context-Repo", "desc": "Context repository for AI tools providing career info to guide agents, assistants, etc"},
{"name": "Long AI Prompting Experiment", "url": "https://github.com/danielrosehill/Long-AI-Prompting-Experiment", "desc": "Experiment testing the \"added value\" of long context-dense prompts (versus casual converastional prompts) and the value of a voice \"prompt optimisation\" agent"},
{"name": "Software Wish List AI Context", "url": "https://github.com/danielrosehill/Software-Wish-List-AI-Context", "desc": "Context repository to connect to AI tools - things I look for in most software evaluations"},
{"name": "Text Transformation Prompt Library", "url": "https://github.com/danielrosehill/Text-Transformation-Prompt-Library", "desc": "Updated repo of text transformation prompts (raw STT transcripts -> *). New repo for capturing via automations."},
{"name": "Voice To Prompt Pipeline", "url": "https://github.com/danielrosehill/Voice-To-Prompt-Pipeline", "desc": "A conceptual voice to prompt pipeline that attempts to separate instructions from provided context for better results"},
]
},
"utilities": {
"title": "Tools & Utilities",
"description": "Standalone tools and utility applications",
"icon": "πŸ”§",
"projects": [
{"name": "ACR 1252 GUI 1025", "url": "https://github.com/danielrosehill/ACR-1252-GUI-1025", "desc": "Updated \"vibe-coded\" GUI for reading/writing to the ACR1252 USB NFC reader/writer (Linux)"},
{"name": "AI Assistant Ideator Streamlit", "url": "https://github.com/danielrosehill/AI-Assistant-Ideator-Streamlit", "desc": "Streamlit implementation for an AI \"self-ideation\" utility"},
{"name": "AI Assistant Ideator", "url": "https://github.com/danielrosehill/AI-Assistant-Ideator", "desc": "Streamlit app for ideating AI assisants"},
{"name": "Bash Alias Manager Claude", "url": "https://github.com/danielrosehill/Bash-Alias-Manager-Claude", "desc": "Claude agent directory for managing bash aliases"},
{"name": "Bug Reports Public", "url": "https://github.com/danielrosehill/Bug-Reports-Public", "desc": "Sanitised or non-sensitive bug reports that may have diagnostic utility for others"},
{"name": "Career Pivot AI", "url": "https://github.com/danielrosehill/Career-Pivot-AI", "desc": "Career pivot ideation app (AI Studio, vibe coded starter)"},
{"name": "Great AI Convos", "url": "https://github.com/danielrosehill/Great-AI-Convos", "desc": "A few timestampped conversations with AI tools that left an impression, recorded for posterity"},
{"name": "LLM Preferences Guide", "url": "https://github.com/danielrosehill/LLM-Preferences-Guide", "desc": "(Experiment) Predefined set of instructions for local agents governing LLM usage and selection"},
{"name": "Ollama Ideation UI", "url": "https://github.com/danielrosehill/Ollama-Ideation-UI", "desc": "Desktop app for running batch \"ideation\" prompts with a local LLM"},
{"name": "Shakespearean Text Generator Streamlit", "url": "https://github.com/danielrosehill/Shakespearean-Text-Generator-Streamlit", "desc": "Strealit app for generating Shakespearean text ... because why not"},
{"name": "Tech Stack Structured", "url": "https://github.com/danielrosehill/Tech-Stack-Structured", "desc": "Structured version of tech stack, including AI tools"},
{"name": "Tech Tool Prompting 0525", "url": "https://github.com/danielrosehill/Tech-Tool-Prompting-0525", "desc": "Some stack evaluation prompts as I try to finish my stack \"updating\" process"},
{"name": "Voice Notepad Prototype Planning", "url": "https://github.com/danielrosehill/Voice-Notepad-Prototype-Planning", "desc": "Planning and outlining for an AI voice app for organisation"},
{"name": "Whisper Notepad Simple", "url": "https://github.com/danielrosehill/Whisper-Notepad-Simple", "desc": "A Linux desktop utility for converting speech to text using the OpenAI Whisper API"},
]
},
"documentation": {
"title": "Documentation & Indexes",
"description": "Documentation projects and resource indexes",
"icon": "πŸ“–",
"projects": [
{"name": "AI Agents", "url": "https://github.com/danielrosehill/AI-Agents", "desc": "Periodically updated index of AI agent configurations that I'm working on (or have created)"},
{"name": "AI Generated Projects Index", "url": "https://github.com/danielrosehill/AI-Generated-Projects-Index", "desc": "Index of development projects that were partially or fully developed using AI"},
{"name": "AI Projects Index", "url": "https://github.com/danielrosehill/AI-Projects-Index", "desc": "Index of AI project related indices (master index)"},
{"name": "Awesome AI Agents And Assistants", "url": "https://github.com/danielrosehill/Awesome-AI-Agents-And-Assistants", "desc": "An ecosystem map of the AI agent and assistant building landscape in Feb 2025"},
{"name": "Awesome AI Coding Tools", "url": "https://github.com/danielrosehill/Awesome-AI-Coding-Tools", "desc": "September 1st 2025 Snapshot"},
{"name": "Awesome List Repos Index", "url": "https://github.com/danielrosehill/Awesome-List-Repos-Index", "desc": "Index of listing repositories I have created"},
{"name": "Awesome Whisper Apps", "url": "https://github.com/danielrosehill/Awesome-Whisper-Apps", "desc": "Useful speech to text tools that use Whisper under the hood (API/local)"},
{"name": "Backup Projects Index", "url": "https://github.com/danielrosehill/Backup-Projects-Index", "desc": "Indexing repo of backup related projects and scripts"},
{"name": "Context Projects Index", "url": "https://github.com/danielrosehill/Context-Projects-Index", "desc": "Index of projects related to context-gathering and generation for AI, including via interview approaches"},
{"name": "Deep Research Projects 0425", "url": "https://github.com/danielrosehill/Deep-Research-Projects-0425", "desc": "A collection of links to a few AI \"deep research\" projects and agents, April 2025"},
{"name": "Hebrew LLMs", "url": "https://github.com/danielrosehill/Hebrew-LLMs", "desc": "A pathfinder repo (index) to some Hebrew language LLMs on Hugging Face"},
{"name": "Linux STT And Voice Assistants", "url": "https://github.com/danielrosehill/Linux-STT-And-Voice-Assistants", "desc": "Point in time snapshot/index of STT and voice assistants projects for Linux desktop"},
{"name": "My Docs Index", "url": "https://github.com/danielrosehill/My-Docs-Index", "desc": "An index to my various documentation projects, both on Github and elsewhere"},
{"name": "Text Transformation Prompt Collection 2", "url": "https://github.com/danielrosehill/Text-Transformation-Prompt-Collection-2", "desc": "An abbreviated collection of STT transformation prompts"},
]
},
"miscellaneous": {
"title": "Miscellaneous",
"description": "Various AI experiments and unique projects",
"icon": "🌟",
"projects": [
{"name": "AI Agent Ideation Agent", "url": "https://github.com/danielrosehill/AI-Agent-Ideation-Agent", "desc": "Ideation agent that generates ideas for AI agents!"},
{"name": "AI Output Storage Backend Data Models", "url": "https://github.com/danielrosehill/AI-Output-Storage-Backend-Data-Models", "desc": "Some simple data tables for populating a backend for storing prompt runs"},
{"name": "Agents.md Templates", "url": "https://github.com/danielrosehill/Agents.md-Templates", "desc": "Template agents.md templates for use with OpenAI Codex"},
{"name": "Ai Development Template", "url": "https://github.com/danielrosehill/Ai-Development-Template", "desc": "Development template for AI projects"},
{"name": "Assistant Self Ideation 280325", "url": "https://github.com/danielrosehill/Assistant-Self-Ideation-280325", "desc": "AI assistant \"self-ideation\" run"},
{"name": "Back Up Your SaaS", "url": "https://github.com/danielrosehill/Back-Up-Your-SaaS", "desc": "Notes for fellow cautious trusters of \"the cloud\""},
{"name": "Github AI Searches", "url": "https://github.com/danielrosehill/Github-AI-Searches", "desc": "A series of search links for those wishing to drink from the firehose of open-source AI"},
{"name": "LLM Detective", "url": "https://github.com/danielrosehill/LLM-Detective", "desc": "Agent that tries to probe other models' capabilities with conversation"},
{"name": "Llama OS Doctor Idea", "url": "https://github.com/danielrosehill/Llama-OS-Doctor-Idea", "desc": "Planning notes for an AI agent / experiment"},
{"name": "Local Linux Repair Bot", "url": "https://github.com/danielrosehill/Local-Linux-Repair-Bot", "desc": "Experimentary repo to try use an AI IDE as a local agent workspace for local OS debugging"},
{"name": "Multimodal AI Taxonomy", "url": "https://github.com/danielrosehill/Multimodal-AI-Taxonomy", "desc": "Attempting to map out the various input/output permutations for multimodal AI"},
{"name": "My Weird Prompts", "url": "https://github.com/danielrosehill/My-Weird-Prompts", "desc": "Blog/podcast made out of colorful (and mundane) AI prompts - and answers!"},
{"name": "OSINT Missile Intelligence Agent", "url": "https://github.com/danielrosehill/OSINT-Missile-Intelligence-Agent", "desc": "Snap reports about causes and quantitiative info about hostile missile launches"},
{"name": "One Prompt AI Book", "url": "https://github.com/danielrosehill/One-Prompt-AI-Book", "desc": "Experiment - generating a book using a single prompt"},
{"name": "OpenAI Image Renamer", "url": "https://github.com/danielrosehill/OpenAI-Image-Renamer", "desc": "Simple Python script for batch file renaming operations with OpenAI API"},
{"name": "Perplexity API Tests 020425", "url": "https://github.com/danielrosehill/Perplexity-API-Tests-020425", "desc": "Quick test prompts to compare respones against various Sonar API endpoints"},
{"name": "Remote Jobs Research Agent", "url": "https://github.com/danielrosehill/Remote-Jobs-Research-Agent", "desc": "Company research agent targeted towards the needs of remote job seekers sourcing detailed information about company backgrounds as well as remote-specific information"},
{"name": "STT Fine Tune Project Outline", "url": "https://github.com/danielrosehill/STT-Fine-Tune-Project-Outline", "desc": "Planning doc for STT fine-tuning and eval project"},
{"name": "STT Voice Note Evaluation", "url": "https://github.com/danielrosehill/STT-Voice-Note-Evaluation", "desc": "STT voice note evaluation project"},
{"name": "Text To Image Test Prompts", "url": "https://github.com/danielrosehill/Text-To-Image-Test-Prompts", "desc": "Informal prompts for testing out text-to-image"},
{"name": "The Bot Has A Question", "url": "https://github.com/danielrosehill/The-Bot-Has-A-Question", "desc": "Weird AI experiment #342"},
{"name": "The Jerusalem Odyssey Text", "url": "https://github.com/danielrosehill/The-Jerusalem-Odyssey-Text", "desc": "A 100 page book manuscript generated from a single prompt using Sonnet 3.7"},
{"name": "Veo 31 Prompts", "url": "https://github.com/danielrosehill/Veo-31-Prompts", "desc": "A few ridiculous prompts for trying out Veo 3.1"},
{"name": "Voice Note Dataset", "url": "https://github.com/danielrosehill/Voice-Note-Dataset", "desc": "Frontend for open source vote note dataset for annotation/classifictaion project"},
{"name": "Voice Notepad With Transformations", "url": "https://github.com/danielrosehill/Voice-Notepad-With-Transformations", "desc": "Linux voice notepad (latest version) with text transformations in addition to STT"},
{"name": "Whisper Notepad For Linux", "url": "https://github.com/danielrosehill/Whisper-Notepad-For-Linux", "desc": "Notepad for Linux that uses OpenAI Whisper (API) and reformats dictated text"},
{"name": "Wireframe Cleaner Nano Banana", "url": "https://github.com/danielrosehill/Wireframe-Cleaner-Nano-Banana", "desc": "Clean up handdrawn wireframes/sketches with Nano Banana (WIP)"},
]
}
}
def generate_category_page(filename, category_data):
"""Generate an HTML page for a category"""
html = f'''<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{category_data["title"]} - AI Projects Index</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<div class="container">
<h1>{category_data["icon"]} {category_data["title"]}</h1>
<p class="subtitle">{category_data["description"]}</p>
</div>
</header>
<main class="container">
<a href="index.html" class="back-link">← Back to Index</a>
<section class="search-section">
<input type="text" id="projectSearch" placeholder="Search projects..." />
</section>
<section class="projects-list">
'''
for project in category_data["projects"]:
html += f''' <div class="project-card">
<h3><a href="{project["url"]}" target="_blank">{project["name"]}</a></h3>
<span class="badge">{category_data["title"]}</span>
<p>{project["desc"]}</p>
</div>
'''
html += ''' </section>
</main>
<footer>
<div class="container">
<p>&copy; 2025 Daniel Rosehill. Last Updated: August 2025</p>
<p>
<a href="https://github.com/danielrosehill" target="_blank">GitHub</a> |
<a href="https://danielrosehill.com" target="_blank">Website</a> |
<a href="mailto:public@danielrosehill.com">Contact</a>
</p>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>
'''
with open(filename, 'w') as f:
f.write(html)
print(f"Generated {filename}")
# Generate pages
for category_key, category_data in all_categories.items():
generate_category_page(f"{category_key}.html", category_data)
print("\nAll category pages generated successfully!")