[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71CM7B45RC16S8EM20B9ZP2":3,"skill-same:01M71CM7B45RC16S8EM20B9ZP2":103},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M71CM7B45RC16S8EM20B9ZP2","open-notebook",null,"Self-hosted, open-source alternative to Google NotebookLM for AI-powered research and document analysis. Use when organizing research materials into notebooks, ingesting diverse content sources (PDFs, videos, audio, web pages, Office documents), generating AI-powered notes and summaries, creating multi-speaker podcasts from research, chatting with documents using context-aware AI, searching across materials with full-text and vector search, or running custom content transformations. Supports 16+ AI providers including OpenAI, Anthropic, Google, Ollama, Groq, and Mistral with complete data privacy through self-hosting.","strmt7\u002Fai_skills_collection_benchmarked","strmt7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F28989754?v=4","01M71929P914SWKQ7QJV24NBBY","Stratos","01M71929Q9VGKQ7PWYR95VSQQQ",1,"MIT","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"open notebook","notebook","open","text","when","source","sources","across","self","groq","ollama","google","Audio","analysis","data","vector","search","openai","notes","documents","2026-11-10 10:12:30",false,"---\nname: open-notebook\ndescription: Self-hosted, open-source alternative to Google NotebookLM for AI-powered research and document analysis. Use when organizing research materials into notebooks, ingesting diverse content sources (PDFs, videos, audio, web pages, Office documents), generating AI-powered notes and summaries, creating multi-speaker podcasts from research, chatting with documents using context-aware AI, searching across materials with full-text and vector search, or running custom content transformations. Supports 16+ AI providers including OpenAI, Anthropic, Google, Ollama, Groq, and Mistral with complete data privacy through self-hosting.\nlicense: MIT\nmetadata:\n    skill-author: K-Dense Inc.\n---\n\n# Open Notebook\n\n## Overview\n\nOpen Notebook is an open-source, self-hosted alternative to Google's NotebookLM that enables researchers to organize materials, generate AI-powered insights, create podcasts, and have context-aware conversations with their documents — all while maintaining complete data privacy.\n\nUnlike Google's Notebook LM, which has no publicly available API outside of the Enterprise version, Open Notebook provides a comprehensive REST API, supports 16+ AI providers, and runs entirely on your own infrastructure.\n\n**Key advantages over NotebookLM:**\n- Full REST API for programmatic access and automation\n- Choice of 16+ AI providers (not locked to Google models)\n- Multi-speaker podcast generation with 1-4 customizable speakers (vs. 2-speaker limit)\n- Complete data sovereignty through self-hosting\n- Open source and fully extensible (MIT license)\n\n**Repository:** https:\u002F\u002Fgithub.com\u002Flfnovo\u002Fopen-notebook\n\n## Quick Start\n\n### Prerequisites\n\n- Docker Desktop installed\n- API key for at least one AI provider (or local Ollama for free local inference)\n\n### Installation\n\nDeploy Open Notebook using Docker Compose:\n\n```bash\n# Download the docker-compose file\ncurl -o docker-compose.yml https:\u002F\u002Fraw.githubusercontent.com\u002Flfnovo\u002Fopen-notebook\u002Fmain\u002Fdocker-compose.yml\n\n# Set the required encryption key\nexport OPEN_NOTEBOOK_ENCRYPTION_KEY=\"your-secret-key-here\"\n\n# Launch the services\ndocker-compose up -d\n```\n\nAccess the application:\n- **Frontend UI:** http:\u002F\u002Flocalhost:8502\n- **REST API:** http:\u002F\u002Flocalhost:5055\n- **API Documentation:** http:\u002F\u002Flocalhost:5055\u002Fdocs\n\n### Configure AI Provider\n\nAfter startup, configure at least one AI provider:\n\n1. Navigate to **Settings > API Keys** in the UI\n2. Add credentials for your preferred provider (OpenAI, Anthropic, etc.)\n3. Test the connection and discover available models\n4. Register models for use across the platform\n\nOr configure via the REST API:\n\n```python\nimport requests\n\nBASE_URL = \"http:\u002F\u002Flocalhost:5055\u002Fapi\"\n\n# Add a credential for an AI provider\nresponse = requests.post(f\"{BASE_URL}\u002Fcredentials\", json={\n    \"provider\": \"openai\",\n    \"name\": \"My OpenAI Key\",\n    \"api_key\": \"\u003CAPI_KEY>\"\n})\ncredential = response.json()\n\n# Discover available models\nresponse = requests.post(\n    f\"{BASE_URL}\u002Fcredentials\u002F{credential['id']}\u002Fdiscover\"\n)\ndiscovered = response.json()\n\n# Register discovered models\nrequests.post(\n    f\"{BASE_URL}\u002Fcredentials\u002F{credential['id']}\u002Fregister-models\",\n    json={\"model_ids\": [m[\"id\"] for m in discovered[\"models\"]]}\n)\n```\n\n## Core Features\n\n### Notebooks\nOrganize research into separate notebooks, each containing sources, notes, and chat sessions.\n\n```python\nimport requests\n\nBASE_URL = \"http:\u002F\u002Flocalhost:5055\u002Fapi\"\n\n# Create a notebook\nresponse = requests.post(f\"{BASE_URL}\u002Fnotebooks\", json={\n    \"name\": \"Cancer Genomics Research\",\n    \"description\": \"Literature review on tumor mutational burden\"\n})\nnotebook = response.json()\nnotebook_id = notebook[\"id\"]\n```\n\n### Sources\nIngest diverse content types including PDFs, videos, audio files, web pages, and Office documents. Sources are processed for full-text and vector search.\n\n```python\n# Add a web URL source\nresponse = requests.post(f\"{BASE_URL}\u002Fsources\", data={\n    \"url\": \"https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.00001\",\n    \"notebook_id\": notebook_id,\n    \"process_async\": \"true\"\n})\nsource = response.json()\n\n# Upload a PDF file\nwith open(\"paper.pdf\", \"rb\") as f:\n    response = requests.post(\n        f\"{BASE_URL}\u002Fsources\",\n        data={\"notebook_id\": notebook_id},\n        files={\"file\": (\"paper.pdf\", f, \"application\u002Fpdf\")}\n    )\n```\n\n### Notes\nCreate and manage notes (human or AI-generated) associated with notebooks.\n\n```python\n# Create a human note\nresponse = requests.post(f\"{BASE_URL}\u002Fnotes\", json={\n    \"title\": \"Key Findings\",\n    \"content\": \"TMB correlates with immunotherapy response in NSCLC...\",\n    \"note_type\": \"human\",\n    \"notebook_id\": notebook_id\n})\n```\n\n### Context-Aware Chat\nChat with your research materials using AI that cites sources.\n\n```python\n# Create a chat session\nsession = requests.post(f\"{BASE_URL}\u002Fchat\u002Fsessions\", json={\n    \"notebook_id\": notebook_id,\n    \"title\": \"TMB Discussion\"\n}).json()\n\n# Send a message with context from sources\nresponse = requests.post(f\"{BASE_URL}\u002Fchat\u002Fexecute\", json={\n    \"session_id\": session[\"id\"],\n    \"message\": \"What are the key biomarkers for immunotherapy response?\",\n    \"context\": {\"include_sources\": True, \"include_notes\": True}\n})\n```\n\n### Search\nSearch across all materials using full-text or vector (semantic) search.\n\n```python\n# Vector search across the knowledge base\nresults = requests.post(f\"{BASE_URL}\u002Fsearch\", json={\n    \"query\": \"tumor mutational burden immunotherapy\",\n    \"search_type\": \"vector\",\n    \"limit\": 10\n}).json()\n\n# Ask a question with AI-powered answer\nanswer = requests.post(f\"{BASE_URL}\u002Fsearch\u002Fask\u002Fsimple\", json={\n    \"query\": \"How does TMB predict checkpoint inhibitor response?\"\n}).json()\n```\n\n### Podcast Generation\nGenerate professional multi-speaker podcasts from research materials with 1-4 customizable speakers.\n\n```python\n# Generate a podcast episode\njob = requests.post(f\"{BASE_URL}\u002Fpodcasts\u002Fgenerate\", json={\n    \"notebook_id\": notebook_id,\n    \"episode_profile_id\": episode_profile_id,\n    \"speaker_profile_ids\": [speaker1_id, speaker2_id]\n}).json()\n\n# Check generation status\nstatus = requests.get(f\"{BASE_URL}\u002Fpodcasts\u002Fjobs\u002F{job['job_id']}\").json()\n\n# Download audio when ready\naudio = requests.get(\n    f\"{BASE_URL}\u002Fpodcasts\u002Fepisodes\u002F{status['episode_id']}\u002Faudio\"\n)\n```\n\n### Content Transformations\nApply custom AI-powered transformations to content for summarization, extraction, and analysis.\n\n```python\n# Create a custom transformation\ntransform = requests.post(f\"{BASE_URL}\u002Ftransformations\", json={\n    \"name\": \"extract_methods\",\n    \"title\": \"Extract Methods\",\n    \"description\": \"Extract methodology details from papers\",\n    \"prompt\": \"Extract and summarize the methodology section...\",\n    \"apply_default\": False\n}).json()\n\n# Execute transformation on text\nresult = requests.post(f\"{BASE_URL}\u002Ftransformations\u002Fexecute\", json={\n    \"transformation_id\": transform[\"id\"],\n    \"input_text\": \"...\",\n    \"model_id\": \"model_id_here\"\n}).json()\n```\n\n## Supported AI Providers\n\nOpen Notebook supports 16+ AI providers through the Esperanto library:\n\n| Provider | LLM | Embedding | Speech-to-Text | Text-to-Speech |\n|----------|-----|-----------|----------------|----------------|\n| OpenAI | Yes | Yes | Yes | Yes |\n| Anthropic | Yes | No | No | No |\n| Google GenAI | Yes | Yes | No | Yes |\n| Vertex AI | Yes | Yes | No | Yes |\n| Ollama | Yes | Yes | No | No |\n| Groq | Yes | No | Yes | No |\n| Mistral | Yes | Yes | No | No |\n| Azure OpenAI | Yes | Yes | No | No |\n| DeepSeek | Yes | No | No | No |\n| xAI | Yes | No | No | No |\n| OpenRouter | Yes | No | No | No |\n| ElevenLabs | No | No | Yes | Yes |\n| Perplexity | Yes | No | No | No |\n| Voyage | No | Yes | No | No |\n\n## Environment Variables\n\nKey configuration variables for Docker deployment:\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `OPEN_NOTEBOOK_ENCRYPTION_KEY` | **Required.** Secret key for encrypting stored credentials | None |\n| `SURREAL_URL` | SurrealDB connection URL | `ws:\u002F\u002Fsurrealdb:8000\u002Frpc` |\n| `SURREAL_NAMESPACE` | Database namespace | `open_notebook` |\n| `SURREAL_DATABASE` | Database name | `open_notebook` |\n| `OPEN_NOTEBOOK_PASSWORD` | Optional password protection for the UI | None |\n\n## API Reference\n\nThe REST API is available at `http:\u002F\u002Flocalhost:5055\u002Fapi` with interactive documentation at `\u002Fdocs`.\n\nCore endpoint groups:\n- `\u002Fapi\u002Fnotebooks` - Notebook CRUD and source association\n- `\u002Fapi\u002Fsources` - Source ingestion, processing, and retrieval\n- `\u002Fapi\u002Fnotes` - Note management\n- `\u002Fapi\u002Fchat\u002Fsessions` - Chat session management\n- `\u002Fapi\u002Fchat\u002Fexecute` - Chat message execution\n- `\u002Fapi\u002Fsearch` - Full-text and vector search\n- `\u002Fapi\u002Fpodcasts` - Podcast generation and management\n- `\u002Fapi\u002Ftransformations` - Content transformation pipelines\n- `\u002Fapi\u002Fmodels` - AI model configuration and discovery\n- `\u002Fapi\u002Fcredentials` - Provider credential management\n\nFor complete API reference with all endpoints and request\u002Fresponse formats, see `references\u002Fapi_reference.md`.\n\n## Architecture\n\nOpen Notebook uses a modern stack:\n- **Backend:** Python with FastAPI\n- **Database:** SurrealDB (document + relational)\n- **AI Integration:** LangChain with the Esperanto multi-provider library\n- **Frontend:** Next.js with React\n- **Deployment:** Docker Compose with persistent volumes\n\n## Important Notes\n\n- Open Notebook requires Docker for deployment\n- At least one AI provider must be configured for AI features to work\n- For free local inference without API costs, use Ollama\n- The `OPEN_NOTEBOOK_ENCRYPTION_KEY` must be set before first launch and kept consistent across restarts\n- All data is stored locally in Docker volumes for complete data sovereignty\n","# Open Notebook\n\n## Overview\n\nOpen Notebook is an open-source, self-hosted alternative to Google's NotebookLM that enables researchers to organize materials, generate AI-powered insights, create podcasts, and have context-aware conversations with their documents — all while maintaining complete data privacy.\n\nUnlike Google's Notebook LM, which has no publicly available API outside of the Enterprise version, Open Notebook provides a comprehensive REST API, supports 16+ AI providers, and runs entirely on your own infrastructure.\n\n**Key advantages over NotebookLM:**\n- Full REST API for programmatic access and automation\n- Choice of 16+ AI providers (not locked to Google models)\n- Multi-speaker podcast generation with 1-4 customizable speakers (vs. 2-speaker limit)\n- Complete data sovereignty through self-hosting\n- Open source and fully extensible (MIT license)\n\n**Repository:** https:\u002F\u002Fgithub.com\u002Flfnovo\u002Fopen-notebook\n\n## Quick Start\n\n### Prerequisites\n\n- Docker Desktop installed\n- API key for at least one AI provider (or local Ollama for free local inference)\n\n### Installation\n\nDeploy Open Notebook using Docker Compose:\n\n```bash\n# Download the docker-compose file\ncurl -o docker-compose.yml https:\u002F\u002Fraw.githubusercontent.com\u002Flfnovo\u002Fopen-notebook\u002Fmain\u002Fdocker-compose.yml\n\n# Set the required encryption key\nexport OPEN_NOTEBOOK_ENCRYPTION_KEY=\"your-secret-key-here\"\n\n# Launch the services\ndocker-compose up -d\n```\n\nAccess the application:\n- **Frontend UI:** http:\u002F\u002Flocalhost:8502\n- **REST API:** http:\u002F\u002Flocalhost:5055\n- **API Documentation:** http:\u002F\u002Flocalhost:5055\u002Fdocs\n\n### Configure AI Provider\n\nAfter startup, configure at least one AI provider:\n\n1. Navigate to **Settings > API Keys** in the UI\n2. Add credentials for your preferred provider (OpenAI, Anthropic, etc.)\n3. Test the connection and discover available models\n4. Register models for use across the platform\n\nOr configure via the REST API:\n\n```python\nimport requests\n\nBASE_URL = \"http:\u002F\u002Flocalhost:5055\u002Fapi\"\n\n# Add a credential for an AI provider\nresponse = requests.post(f\"{BASE_URL}\u002Fcredentials\", json={\n    \"provider\": \"openai\",\n    \"name\": \"My OpenAI Key\",\n    \"api_key\": \"\u003CAPI_KEY>\"\n})\ncredential = response.json()\n\n# Discover available models\nresponse = requests.post(\n    f\"{BASE_URL}\u002Fcredentials\u002F{credential['id']}\u002Fdiscover\"\n)\ndiscovered = response.json()\n\n# Register discovered models\nrequests.post(\n    f\"{BASE_URL}\u002Fcredentials\u002F{credential['id']}\u002Fregister-models\",\n    json={\"model_ids\": [m[\"id\"] for m in discovered[\"models\"]]}\n)\n```\n\n## Core Features\n\n### Notebooks\nOrganize research into separate notebooks, each containing sources, notes, and chat sessions.\n\n```python\nimport requests\n\nBASE_URL = \"http:\u002F\u002Flocalhost:5055\u002Fapi\"\n\n# Create a notebook\nresponse = requests.post(f\"{BASE_URL}\u002Fnotebooks\", json={\n    \"name\": \"Cancer Genomics Research\",\n    \"description\": \"Literature review on tumor mutational burden\"\n})\nnotebook = response.json()\nnotebook_id = notebook[\"id\"]\n```\n\n### Sources\nIngest diverse content types including PDFs, videos, audio files, web pages, and Office documents. Sources are processed for full-text and vector search.\n\n```python\n# Add a web URL source\nresponse = requests.post(f\"{BASE_URL}\u002Fsources\", data={\n    \"url\": \"https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.00001\",\n    \"notebook_id\": notebook_id,\n    \"process_async\": \"true\"\n})\nsource = response.json()\n\n# Upload a PDF file\nwith open(\"paper.pdf\", \"rb\") as f:\n    response = requests.post(\n        f\"{BASE_URL}\u002Fsources\",\n        data={\"notebook_id\": notebook_id},\n        files={\"file\": (\"paper.pdf\", f, \"application\u002Fpdf\")}\n    )\n```\n\n### Notes\nCreate and manage notes (human or AI-generated) associated with notebooks.\n\n```python\n# Create a human note\nresponse = requests.post(f\"{BASE_URL}\u002Fnotes\", json={\n    \"title\": \"Key Findings\",\n    \"content\": \"TMB correlates with immunotherapy response in NSCLC...\",\n    \"note_type\": \"human\",\n    \"notebook_id\": notebook_id\n})\n```\n\n### Context-Aware Chat\nChat with your research materials using AI that cites sources.\n\n```python\n# Create a chat session\nsession = requests.post(f\"{BASE_URL}\u002Fchat\u002Fsessions\", json={\n    \"notebook_id\": notebook_id,\n    \"title\": \"TMB Discussion\"\n}).json()\n\n# Send a message with context from sources\nresponse = requests.post(f\"{BASE_URL}\u002Fchat\u002Fexecute\", json={\n    \"session_id\": session[\"id\"],\n    \"message\": \"What are the key biomarkers for immunotherapy response?\",\n    \"context\": {\"include_sources\": True, \"include_notes\": True}\n})\n```\n\n### Search\nSearch across all materials using full-text or vector (semantic) search.\n\n```python\n# Vector search across the knowledge base\nresults = requests.post(f\"{BASE_URL}\u002Fsearch\", json={\n    \"query\": \"tumor mutational burden immunotherapy\",\n    \"search_type\": \"vector\",\n    \"limit\": 10\n}).json()\n\n# Ask a question with AI-powered answer\nanswer = requests.post(f\"{BASE_URL}\u002Fsearch\u002Fask\u002Fsimple\", json={\n    \"query\": \"How does TMB predict checkpoint inhibitor response?\"\n}).json()\n```\n\n### Podcast Generation\nGenerate professional multi-speaker podcasts from research materials with 1-4 customizable speakers.\n\n```python\n# Generate a podcast episode\njob = requests.post(f\"{BASE_URL}\u002Fpodcasts\u002Fgenerate\", json={\n    \"notebook_id\": notebook_id,\n    \"episode_profile_id\": episode_profile_id,\n    \"speaker_profile_ids\": [speaker1_id, speaker2_id]\n}).json()\n\n# Check generation status\nstatus = requests.get(f\"{BASE_URL}\u002Fpodcasts\u002Fjobs\u002F{job['job_id']}\").json()\n\n# Download audio when ready\naudio = requests.get(\n    f\"{BASE_URL}\u002Fpodcasts\u002Fepisodes\u002F{status['episode_id']}\u002Faudio\"\n)\n```\n\n### Content Transformations\nApply custom AI-powered transformations to content for summarization, extraction, and analysis.\n\n```python\n# Create a custom transformation\ntransform = requests.post(f\"{BASE_URL}\u002Ftransformations\", json={\n    \"name\": \"extract_methods\",\n    \"title\": \"Extract Methods\",\n    \"description\": \"Extract methodology details from papers\",\n    \"prompt\": \"Extract and summarize the methodology section...\",\n    \"apply_default\": False\n}).json()\n\n# Execute transformation on text\nresult = requests.post(f\"{BASE_URL}\u002Ftransformations\u002Fexecute\", json={\n    \"transformation_id\": transform[\"id\"],\n    \"input_text\": \"...\",\n    \"model_id\": \"model_id_here\"\n}).json()\n```\n\n## Supported AI Providers\n\nOpen Notebook supports 16+ AI providers through the Esperanto library:\n\n| Provider | LLM | Embedding | Speech-to-Text | Text-to-Speech |\n|----------|-----|-----------|----------------|----------------|\n| OpenAI | Yes | Yes | Yes | Yes |\n| Anthropic | Yes | No | No | No |\n| Google GenAI | Yes | Yes | No | Yes |\n| Vertex AI | Yes | Yes | No | Yes |\n| Ollama | Yes | Yes | No | No |\n| Groq | Yes | No | Yes | No |\n| Mistral | Yes | Yes | No | No |\n| Azure OpenAI | Yes | Yes | No | No |\n| DeepSeek | Yes | No | No | No |\n| xAI | Yes | No | No | No |\n| OpenRouter | Yes | No | No | No |\n| ElevenLabs | No | No | Yes | Yes |\n| Perplexity | Yes | No | No | No |\n| Voyage | No | Yes | No | No |\n\n## Environment Variables\n\nKey configuration variables for Docker deployment:\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `OPEN_NOTEBOOK_ENCRYPTION_KEY` | **Required.** Secret key for encrypting stored credentials | None |\n| `SURREAL_URL` | SurrealDB connection URL | `ws:\u002F\u002Fsurrealdb:8000\u002Frpc` |\n| `SURREAL_NAMESPACE` | Database namespace | `open_notebook` |\n| `SURREAL_DATABASE` | Database name | `open_notebook` |\n| `OPEN_NOTEBOOK_PASSWORD` | Optional password protection for the UI | None |\n\n## API Reference\n\nThe REST API is available at `http:\u002F\u002Flocalhost:5055\u002Fapi` with interactive documentation at `\u002Fdocs`.\n\nCore endpoint groups:\n- `\u002Fapi\u002Fnotebooks` - Notebook CRUD and source association\n- `\u002Fapi\u002Fsources` - Source ingestion, processing, and retrieval\n- `\u002Fapi\u002Fnotes` - Note management\n- `\u002Fapi\u002Fchat\u002Fsessions` - Chat session management\n- `\u002Fapi\u002Fchat\u002Fexecute` - Chat message execution\n- `\u002Fapi\u002Fsearch` - Full-text and vector search\n- `\u002Fapi\u002Fpodcasts` - Podcast generation and management\n- `\u002Fapi\u002Ftransformations` - Content transformation pipelines\n- `\u002Fapi\u002Fmodels` - AI model configuration and discovery\n- `\u002Fapi\u002Fcredentials` - Provider credential management\n\nFor complete API reference with all endpoints and request\u002Fresponse formats, see `references\u002Fapi_reference.md`.\n\n## Architecture\n\nOpen Notebook uses a modern stack:\n- **Backend:** Python with FastAPI\n- **Database:** SurrealDB (document + relational)\n- **AI Integration:** LangChain with the Esperanto multi-provider library\n- **Frontend:** Next.js with React\n- **Deployment:** Docker Compose with persistent volumes\n\n## Important Notes\n\n- Open Notebook requires Docker for deployment\n- At least one AI provider must be configured for AI features to work\n- For free local inference without API costs, use Ollama\n- The `OPEN_NOTEBOOK_ENCRYPTION_KEY` must be set before first launch and kept consistent across restarts\n- All data is stored locally in Docker volumes for complete data sovereignty\n",{"name":5,"license":15,"metadata":44,"description":7},{"skill-author":45},"K-Dense Inc.","main","5c95bcac4646c5aed06bd9aed5235cfc7985aafc","included\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook",0,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked","https:\u002F\u002Fgithub.com\u002Fstrmt7","2026-11-11 04:18:12",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add strmt7\u002Fai_skills_collection_benchmarked --skill open-notebook",{"tool":59,"command":60},"bunx","bunx skills add strmt7\u002Fai_skills_collection_benchmarked --skill open-notebook",{"tool":62,"command":63},"pnpm","pnpm dlx skills add strmt7\u002Fai_skills_collection_benchmarked --skill open-notebook","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002FSKILL.md",true,[67,73,77,81,85,91,95,99],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Fapi_reference.md","REFERENCE","参考文档",10328,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002Freferences\u002Fapi_reference.md",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Farchitecture.md",7441,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002Freferences\u002Farchitecture.md",{"path":78,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fconfiguration.md",5312,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002Freferences\u002Fconfiguration.md",{"path":82,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fexamples.md",8417,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002Freferences\u002Fexamples.md",{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Fchat_interaction.py","SCRIPT","脚本",6227,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002Fscripts\u002Fchat_interaction.py",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fnotebook_management.py",4170,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002Fscripts\u002Fnotebook_management.py",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fsource_ingestion.py",4901,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002Fscripts\u002Fsource_ingestion.py",{"path":100,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":101,"sourceHtmlUrl":102},"scripts\u002Ftest_open_notebook_skill.py",15600,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fopen-notebook\u002Fscripts\u002Ftest_open_notebook_skill.py",[104,138,166,191,217,245],{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":109,"sourceHtmlUrl":110,"categories":111,"keywords":120,"publishedAt":39},"01M71D4H3T6M57DFKN8HENAWRV","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fwebapp-testing\u002FSKILL.md",[112,117],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":118,"categoryName":119,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000009","前端开发",[121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137],"webapp","testing","webapp testing","for","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":142,"sourceHtmlUrl":143,"categories":144,"keywords":148,"publishedAt":39},"01M71D4CQR2A2TB7GASCR5ZBG3","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fskill-creator-anthropics\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fskill-creator-anthropics\u002FSKILL.md",[145],{"categoryNo":146,"categoryName":147,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000023","Skill与智能体开发",[149,150,151,152,153,154,23,32,155,156,157,158,159,160,161,162,163,164,124,165],"skill creator","creator","performance","improve","run evals","new","create","optimize","variance analysis","run","edit","benchmark","a skill","existing skill","evals","modify","accuracy",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":174,"publishedAt":39},"01M71D488XHEZVXXSXFYP8ENMH","playwright-skill","Complete browser automation with Playwright. Auto-detects dev servers, writes reusable test scripts, and supports screenshots, responsive checks, UX validation, login flows, link checks, and arbitrary browser automation. Use when the user wants to test a website, automate browser interactions, validate web functionality, or perform browser-based testing.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Flatest-release-browser-automation\u002Fplaywright-skill\u002FSKILL.md",[172,173],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},{"categoryNo":146,"categoryName":147,"taxonomyType":115,"taxonomyTypeDesc":116},[133,175,176,177,122,178,179,23,180,131,181,182,183,184,185,186,187,188,189,190],"playwright skill","browser automation","flows","auto","access","Bash","website","ux","login","scripts","read","write","node","install","network","responsive",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":195,"sourceHtmlUrl":196,"categories":197,"keywords":199,"publishedAt":39},"01M71CY25GM939M6RES91QSG3T","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Fweb-artifacts-builder\u002FSKILL.md",[198],{"categoryNo":118,"categoryName":119,"taxonomyType":115,"taxonomyTypeDesc":116},[200,201,202,134,203,204,205,124,206,207,127,208,209,210,211,212,213,214,215,216],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","use","file","components","react","multi","state","routing","state management",{"skillNo":218,"name":219,"nameZh":6,"description":220,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":221,"sourceHtmlUrl":222,"categories":223,"keywords":233,"publishedAt":39},"01M71CXZB60QJJ1H4S3NN94WMZ","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Ffrontend-design\u002FSKILL.md",[224,225,228],{"categoryNo":118,"categoryName":119,"taxonomyType":115,"taxonomyTypeDesc":116},{"categoryNo":226,"categoryName":227,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":229,"categoryName":230,"taxonomyType":231,"taxonomyTypeDesc":232},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[127,234,235,205,236,237,238,125,239,240,209,23,202,241,211,242,212,243,244,132],"design","frontend design","ui design","generic","aesthetics","landing","pages","code","web ui","react components","examples",{"skillNo":246,"name":247,"nameZh":6,"description":248,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":249,"categories":250,"keywords":251,"publishedAt":39},"01M71CVZ54WFBTVA7R16PFY1ZE","zarr-python","Chunked N-D arrays for cloud storage. Compressed arrays, parallel I\u002FO, S3\u002FGCS integration, NumPy\u002FDask\u002FXarray compatible, for large-scale scientific computing pipelines.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fzarr-python\u002FSKILL.md",[],[252,253,254,255,256,257,258,259,260,124,261,262,263,264,265,266,267,268],"zarr python","python","zarr","arrays","Cloud Storage","scientific","storage","parallel","dask","numpy","gcs","s3","integration","scientific computing","cloud","scale","pipelines"]