[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AFGJT2QCC4RW259AA9Y1Q":3,"skill-same:01M71AFGJT2QCC4RW259AA9Y1Q":94},{"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":28,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":68,"commitSha":69,"skillDirectory":70,"forksCount":14,"repositoryHtmlUrl":71,"repositoryHomepageUrl":6,"ownerHtmlUrl":72,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":73,"install":74,"resources":87},"01M71AFGJT2QCC4RW259AA9Y1Q","clip",null,"OpenAI's model connecting vision and language. Enables zero-shot image classification, image-text matching, and cross-modal retrieval. Trained on 400M image-text pairs. Use for image search, content moderation, or vision-language tasks without fine-tuning. Best for general-purpose image understanding.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fclip\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[5,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"text","for","orchestra","pillow","image understanding","Vision-Language","general","vision","model","image","classification","tuning","Content Moderation","Transformers","ZeRO","multimodal","search","openai","tasks","2026-11-10 10:12:30",false,"---\nname: clip\ndescription: OpenAI's model connecting vision and language. Enables zero-shot image classification, image-text matching, and cross-modal retrieval. Trained on 400M image-text pairs. Use for image search, content moderation, or vision-language tasks without fine-tuning. Best for general-purpose image understanding.\nversion: 1.0.0\nauthor: Orchestra Research\nlicense: MIT\ndependencies: [transformers, torch, pillow]\nmetadata:\n  hermes:\n    tags: [Multimodal, CLIP, Vision-Language, Zero-Shot, Image Classification, OpenAI, Image Search, Cross-Modal Retrieval, Content Moderation]\n\n---\n\n# CLIP - Contrastive Language-Image Pre-Training\n\nOpenAI's model that understands images from natural language.\n\n## When to use CLIP\n\n**Use when:**\n- Zero-shot image classification (no training data needed)\n- Image-text similarity\u002Fmatching\n- Semantic image search\n- Content moderation (detect NSFW, violence)\n- Visual question answering\n- Cross-modal retrieval (image→text, text→image)\n\n**Metrics**:\n- **25,300+ GitHub stars**\n- Trained on 400M image-text pairs\n- Matches ResNet-50 on ImageNet (zero-shot)\n- MIT License\n\n**Use alternatives instead**:\n- **BLIP-2**: Better captioning\n- **LLaVA**: Vision-language chat\n- **Segment Anything**: Image segmentation\n\n## Quick start\n\n### Installation\n\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP.git\npip install torch torchvision ftfy regex tqdm\n```\n\n### Zero-shot classification\n\n```python\nimport torch\nimport clip\nfrom PIL import Image\n\n# Load model\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nmodel, preprocess = clip.load(\"ViT-B\u002F32\", device=device)\n\n# Load image\nimage = preprocess(Image.open(\"photo.jpg\")).unsqueeze(0).to(device)\n\n# Define possible labels\ntext = clip.tokenize([\"a dog\", \"a cat\", \"a bird\", \"a car\"]).to(device)\n\n# Compute similarity\nwith torch.no_grad():\n    image_features = model.encode_image(image)\n    text_features = model.encode_text(text)\n\n    # Cosine similarity\n    logits_per_image, logits_per_text = model(image, text)\n    probs = logits_per_image.softmax(dim=-1).cpu().numpy()\n\n# Print results\nlabels = [\"a dog\", \"a cat\", \"a bird\", \"a car\"]\nfor label, prob in zip(labels, probs[0]):\n    print(f\"{label}: {prob:.2%}\")\n```\n\n## Available models\n\n```python\n# Models (sorted by size)\nmodels = [\n    \"RN50\",           # ResNet-50\n    \"RN101\",          # ResNet-101\n    \"ViT-B\u002F32\",       # Vision Transformer (recommended)\n    \"ViT-B\u002F16\",       # Better quality, slower\n    \"ViT-L\u002F14\",       # Best quality, slowest\n]\n\nmodel, preprocess = clip.load(\"ViT-B\u002F32\")\n```\n\n| Model | Parameters | Speed | Quality |\n|-------|------------|-------|---------|\n| RN50 | 102M | Fast | Good |\n| ViT-B\u002F32 | 151M | Medium | Better |\n| ViT-L\u002F14 | 428M | Slow | Best |\n\n## Image-text similarity\n\n```python\n# Compute embeddings\nimage_features = model.encode_image(image)\ntext_features = model.encode_text(text)\n\n# Normalize\nimage_features \u002F= image_features.norm(dim=-1, keepdim=True)\ntext_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Cosine similarity\nsimilarity = (image_features @ text_features.T).item()\nprint(f\"Similarity: {similarity:.4f}\")\n```\n\n## Semantic image search\n\n```python\n# Index images\nimage_paths = [\"img1.jpg\", \"img2.jpg\", \"img3.jpg\"]\nimage_embeddings = []\n\nfor img_path in image_paths:\n    image = preprocess(Image.open(img_path)).unsqueeze(0).to(device)\n    with torch.no_grad():\n        embedding = model.encode_image(image)\n        embedding \u002F= embedding.norm(dim=-1, keepdim=True)\n    image_embeddings.append(embedding)\n\nimage_embeddings = torch.cat(image_embeddings)\n\n# Search with text query\nquery = \"a sunset over the ocean\"\ntext_input = clip.tokenize([query]).to(device)\nwith torch.no_grad():\n    text_embedding = model.encode_text(text_input)\n    text_embedding \u002F= text_embedding.norm(dim=-1, keepdim=True)\n\n# Find most similar images\nsimilarities = (text_embedding @ image_embeddings.T).squeeze(0)\ntop_k = similarities.topk(3)\n\nfor idx, score in zip(top_k.indices, top_k.values):\n    print(f\"{image_paths[idx]}: {score:.3f}\")\n```\n\n## Content moderation\n\n```python\n# Define categories\ncategories = [\n    \"safe for work\",\n    \"not safe for work\",\n    \"violent content\",\n    \"graphic content\"\n]\n\ntext = clip.tokenize(categories).to(device)\n\n# Check image\nwith torch.no_grad():\n    logits_per_image, _ = model(image, text)\n    probs = logits_per_image.softmax(dim=-1)\n\n# Get classification\nmax_idx = probs.argmax().item()\nmax_prob = probs[0, max_idx].item()\n\nprint(f\"Category: {categories[max_idx]} ({max_prob:.2%})\")\n```\n\n## Batch processing\n\n```python\n# Process multiple images\nimages = [preprocess(Image.open(f\"img{i}.jpg\")) for i in range(10)]\nimages = torch.stack(images).to(device)\n\nwith torch.no_grad():\n    image_features = model.encode_image(images)\n    image_features \u002F= image_features.norm(dim=-1, keepdim=True)\n\n# Batch text\ntexts = [\"a dog\", \"a cat\", \"a bird\"]\ntext_tokens = clip.tokenize(texts).to(device)\n\nwith torch.no_grad():\n    text_features = model.encode_text(text_tokens)\n    text_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Similarity matrix (10 images × 3 texts)\nsimilarities = image_features @ text_features.T\nprint(similarities.shape)  # (10, 3)\n```\n\n## Integration with vector databases\n\n```python\n# Store CLIP embeddings in Chroma\u002FFAISS\nimport chromadb\n\nclient = chromadb.Client()\ncollection = client.create_collection(\"image_embeddings\")\n\n# Add image embeddings\nfor img_path, embedding in zip(image_paths, image_embeddings):\n    collection.add(\n        embeddings=[embedding.cpu().numpy().tolist()],\n        metadatas=[{\"path\": img_path}],\n        ids=[img_path]\n    )\n\n# Query with text\nquery = \"a sunset\"\ntext_embedding = model.encode_text(clip.tokenize([query]))\nresults = collection.query(\n    query_embeddings=[text_embedding.cpu().numpy().tolist()],\n    n_results=5\n)\n```\n\n## Best practices\n\n1. **Use ViT-B\u002F32 for most cases** - Good balance\n2. **Normalize embeddings** - Required for cosine similarity\n3. **Batch processing** - More efficient\n4. **Cache embeddings** - Expensive to recompute\n5. **Use descriptive labels** - Better zero-shot performance\n6. **GPU recommended** - 10-50× faster\n7. **Preprocess images** - Use provided preprocess function\n\n## Performance\n\n| Operation | CPU | GPU (V100) |\n|-----------|-----|------------|\n| Image encoding | ~200ms | ~20ms |\n| Text encoding | ~50ms | ~5ms |\n| Similarity compute | \u003C1ms | \u003C1ms |\n\n## Limitations\n\n1. **Not for fine-grained tasks** - Best for broad categories\n2. **Requires descriptive text** - Vague labels perform poorly\n3. **Biased on web data** - May have dataset biases\n4. **No bounding boxes** - Whole image only\n5. **Limited spatial understanding** - Position\u002Fcounting weak\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP ⭐ 25,300+\n- **Paper**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.00020\n- **Colab**: https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fopenai\u002Fclip\u002F\n- **License**: MIT\n\n\n","# CLIP - Contrastive Language-Image Pre-Training\n\nOpenAI's model that understands images from natural language.\n\n## When to use CLIP\n\n**Use when:**\n- Zero-shot image classification (no training data needed)\n- Image-text similarity\u002Fmatching\n- Semantic image search\n- Content moderation (detect NSFW, violence)\n- Visual question answering\n- Cross-modal retrieval (image→text, text→image)\n\n**Metrics**:\n- **25,300+ GitHub stars**\n- Trained on 400M image-text pairs\n- Matches ResNet-50 on ImageNet (zero-shot)\n- MIT License\n\n**Use alternatives instead**:\n- **BLIP-2**: Better captioning\n- **LLaVA**: Vision-language chat\n- **Segment Anything**: Image segmentation\n\n## Quick start\n\n### Installation\n\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP.git\npip install torch torchvision ftfy regex tqdm\n```\n\n### Zero-shot classification\n\n```python\nimport torch\nimport clip\nfrom PIL import Image\n\n# Load model\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nmodel, preprocess = clip.load(\"ViT-B\u002F32\", device=device)\n\n# Load image\nimage = preprocess(Image.open(\"photo.jpg\")).unsqueeze(0).to(device)\n\n# Define possible labels\ntext = clip.tokenize([\"a dog\", \"a cat\", \"a bird\", \"a car\"]).to(device)\n\n# Compute similarity\nwith torch.no_grad():\n    image_features = model.encode_image(image)\n    text_features = model.encode_text(text)\n\n    # Cosine similarity\n    logits_per_image, logits_per_text = model(image, text)\n    probs = logits_per_image.softmax(dim=-1).cpu().numpy()\n\n# Print results\nlabels = [\"a dog\", \"a cat\", \"a bird\", \"a car\"]\nfor label, prob in zip(labels, probs[0]):\n    print(f\"{label}: {prob:.2%}\")\n```\n\n## Available models\n\n```python\n# Models (sorted by size)\nmodels = [\n    \"RN50\",           # ResNet-50\n    \"RN101\",          # ResNet-101\n    \"ViT-B\u002F32\",       # Vision Transformer (recommended)\n    \"ViT-B\u002F16\",       # Better quality, slower\n    \"ViT-L\u002F14\",       # Best quality, slowest\n]\n\nmodel, preprocess = clip.load(\"ViT-B\u002F32\")\n```\n\n| Model | Parameters | Speed | Quality |\n|-------|------------|-------|---------|\n| RN50 | 102M | Fast | Good |\n| ViT-B\u002F32 | 151M | Medium | Better |\n| ViT-L\u002F14 | 428M | Slow | Best |\n\n## Image-text similarity\n\n```python\n# Compute embeddings\nimage_features = model.encode_image(image)\ntext_features = model.encode_text(text)\n\n# Normalize\nimage_features \u002F= image_features.norm(dim=-1, keepdim=True)\ntext_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Cosine similarity\nsimilarity = (image_features @ text_features.T).item()\nprint(f\"Similarity: {similarity:.4f}\")\n```\n\n## Semantic image search\n\n```python\n# Index images\nimage_paths = [\"img1.jpg\", \"img2.jpg\", \"img3.jpg\"]\nimage_embeddings = []\n\nfor img_path in image_paths:\n    image = preprocess(Image.open(img_path)).unsqueeze(0).to(device)\n    with torch.no_grad():\n        embedding = model.encode_image(image)\n        embedding \u002F= embedding.norm(dim=-1, keepdim=True)\n    image_embeddings.append(embedding)\n\nimage_embeddings = torch.cat(image_embeddings)\n\n# Search with text query\nquery = \"a sunset over the ocean\"\ntext_input = clip.tokenize([query]).to(device)\nwith torch.no_grad():\n    text_embedding = model.encode_text(text_input)\n    text_embedding \u002F= text_embedding.norm(dim=-1, keepdim=True)\n\n# Find most similar images\nsimilarities = (text_embedding @ image_embeddings.T).squeeze(0)\ntop_k = similarities.topk(3)\n\nfor idx, score in zip(top_k.indices, top_k.values):\n    print(f\"{image_paths[idx]}: {score:.3f}\")\n```\n\n## Content moderation\n\n```python\n# Define categories\ncategories = [\n    \"safe for work\",\n    \"not safe for work\",\n    \"violent content\",\n    \"graphic content\"\n]\n\ntext = clip.tokenize(categories).to(device)\n\n# Check image\nwith torch.no_grad():\n    logits_per_image, _ = model(image, text)\n    probs = logits_per_image.softmax(dim=-1)\n\n# Get classification\nmax_idx = probs.argmax().item()\nmax_prob = probs[0, max_idx].item()\n\nprint(f\"Category: {categories[max_idx]} ({max_prob:.2%})\")\n```\n\n## Batch processing\n\n```python\n# Process multiple images\nimages = [preprocess(Image.open(f\"img{i}.jpg\")) for i in range(10)]\nimages = torch.stack(images).to(device)\n\nwith torch.no_grad():\n    image_features = model.encode_image(images)\n    image_features \u002F= image_features.norm(dim=-1, keepdim=True)\n\n# Batch text\ntexts = [\"a dog\", \"a cat\", \"a bird\"]\ntext_tokens = clip.tokenize(texts).to(device)\n\nwith torch.no_grad():\n    text_features = model.encode_text(text_tokens)\n    text_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Similarity matrix (10 images × 3 texts)\nsimilarities = image_features @ text_features.T\nprint(similarities.shape)  # (10, 3)\n```\n\n## Integration with vector databases\n\n```python\n# Store CLIP embeddings in Chroma\u002FFAISS\nimport chromadb\n\nclient = chromadb.Client()\ncollection = client.create_collection(\"image_embeddings\")\n\n# Add image embeddings\nfor img_path, embedding in zip(image_paths, image_embeddings):\n    collection.add(\n        embeddings=[embedding.cpu().numpy().tolist()],\n        metadatas=[{\"path\": img_path}],\n        ids=[img_path]\n    )\n\n# Query with text\nquery = \"a sunset\"\ntext_embedding = model.encode_text(clip.tokenize([query]))\nresults = collection.query(\n    query_embeddings=[text_embedding.cpu().numpy().tolist()],\n    n_results=5\n)\n```\n\n## Best practices\n\n1. **Use ViT-B\u002F32 for most cases** - Good balance\n2. **Normalize embeddings** - Required for cosine similarity\n3. **Batch processing** - More efficient\n4. **Cache embeddings** - Expensive to recompute\n5. **Use descriptive labels** - Better zero-shot performance\n6. **GPU recommended** - 10-50× faster\n7. **Preprocess images** - Use provided preprocess function\n\n## Performance\n\n| Operation | CPU | GPU (V100) |\n|-----------|-----|------------|\n| Image encoding | ~200ms | ~20ms |\n| Text encoding | ~50ms | ~5ms |\n| Similarity compute | \u003C1ms | \u003C1ms |\n\n## Limitations\n\n1. **Not for fine-grained tasks** - Best for broad categories\n2. **Requires descriptive text** - Vague labels perform poorly\n3. **Biased on web data** - May have dataset biases\n4. **No bounding boxes** - Whole image only\n5. **Limited spatial understanding** - Position\u002Fcounting weak\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP ⭐ 25,300+\n- **Paper**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.00020\n- **Colab**: https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fopenai\u002Fclip\u002F\n- **License**: MIT\n\n\n",{"name":5,"author":53,"license":15,"version":54,"metadata":55,"description":7,"dependencies":65},"Orchestra Research","1.0.0",{"hermes":56},{"tags":57},[58,59,34,60,61,62,63,64,41],"Multimodal","CLIP","Zero-Shot","Image Classification","OpenAI","Image Search","Cross-Modal Retrieval",[66,67,32],"transformers","torch","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fhermes\u002Fclip","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":75,"prompt":85,"zipAvailable":86},[76,79,82],{"tool":77,"command":78},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill clip",{"tool":80,"command":81},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill clip",{"tool":83,"command":84},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill clip","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fclip\u002FSKILL.md",true,[88],{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fapplications.md","REFERENCE","参考文档",5360,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fclip\u002Freferences\u002Fapplications.md",[95,116,142,152,165,182],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":104,"publishedAt":48},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[101],{"categoryNo":102,"categoryName":103,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务",[105,106,45,107,108,109,110,111,112,113,114,115],"wechat search","wechat","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":48},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[123,124,125,126,127,128,45,129,130,131,132,133,134,135,136,137,138,139,140,141],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":48},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[149,150,123,134,135,136,137,127,45,139,151,140,141,133,131,130,129,138,128,126],"trend radar","radar","pulse",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":48},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[159,160,161,162,163,164],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":48},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[167,112,175,176,177,115,134,178,179,180,125,181,138],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":48},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[184,189,190,191,138,192,179,193,194,195,196,197],"status","play","go","latest","github","discover","control","cmd","volume"]