{
    "format": "skillpro/v1",
    "skill_id": "veniceai-skills-skills-venice-characters-skill-md",
    "name": "venice-characters",
    "version": "1.0.0",
    "description": "Discover and use Venice public characters (persona-driven system prompts with a bound model). Covers GET /characters (search/filter/sort), /characters/{slug}, /characters/{slug}/reviews, the Character schema, and how to apply a character via venice_parameters.character_slug in chat completions.",
    "category": [
        "生活与工具"
    ],
    "trigger_words": [],
    "tags": [],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=veniceai-skills-skills-venice-characters-skill-md",
    "exported_at": "2026-09-17T23:39:44+08:00",
    "system_prompt": "name venice-characters description Discover and use Venice public characters (persona-driven system prompts with a bound model). Covers GET /characters (search/filter/sort), /characters/{slug}, /characters/{slug}/reviews, the Character schema, and how to apply a character via venice_parameters.character_slug in chat completions. Venice Characters Characters are published personas on Venice — each one bundles a system prompt, a backing model, optional web access, and metadata (tags, ratings, adult flag). You apply a character to any chat by passing its slug via venice_parameters.character_slug . Use when You want to build a character-selection UI or discovery surface. You want to ship an app with a preset persona (e.g. a coding coach, a philosopher, a game NPC). You need to adapt a character's underlying model ( modelId ) to match your capability requirements. Three endpoints, all under Preview (API may change): Endpoint Purpose GET /characters Browse/search/filter the catalog. GET /characters/{slug} Fetch one character. GET /characters/{slug}/reviews Paginated public reviews. All three endpoints require authentication (Bearer API key or x402 SIWE) — see venice-auth . There is no unauthenticated public endpoint. GET /characters curl \"https://api.venice.ai/api/v1/characters?search=philosopher&sortBy=highestRating&limit=20\" \\ -H \"Authorization: Bearer $VENICE_API_KEY \" Query parameters Param Type Notes search string, ≤ 200 Name, description, or tag match. Hashtag ( #Philosophy ) supported. categories string[], ≤ 20 Repeat or comma-separate. Character categories ( roleplay , philosophy , …). tags string[], ≤ 20 Repeat or comma-separate. modelId string[], ≤ 20 Filter by backing model ( zai-org-glm-5-1 , kimi-k2-6 , minimax-m25 , …). isAdult \"true\" / \"false\" Adult-content flag. isPro \"true\" / \"false\" Require a Pro model. isWebEnabled \"true\" / \"false\" Allow web access. sortBy enum featured , highestRating , highlyRated , highlyRatedAndRecent , imports , mostRecent , ratingCount . sortOrder asc / desc Default desc . limit 1–100 Default 50. offset integer Pagination offset. Character object Field Notes id UUID. slug Use this as character_slug in chat . URL-safe. name , description , photoUrl , shareUrl Presentation. author Anonymized short ID. tags[] , featured , adult , webEnabled Metadata. modelId Backing Venice model ID (e.g. venice-uncensored ). stats {averageRating, imports, ratingCount, ratingSum, userRating} . createdAt , updatedAt ISO-8601. GET /characters/{slug} curl \"https://api.venice.ai/api/v1/characters/alan-watts\" \\ -H \"Authorization: Bearer $VENICE_API_KEY \" Returns the same object shape above, wrapped as { object: \"character\", data: { ... } } . 404 if the slug is unknown or unpublished. GET /characters/{slug}/reviews curl \"https://api.venice.ai/api/v1/characters/alan-watts/reviews?page=1&pageSize=20\" \\ -H \"Authorization: Bearer $VENICE_API_KEY \" Response: { \"object\" : \"list\" , \"pagination\" : { \"page\" : 1 , \"pageSize\" : 20 , \"total\" : 87 , \"totalPages\" : 5 } , \"summary\" : { \"averageRating\" : 4.7 , \"totalReviews\" : 87 } , \"data\" : [ { \"id\" : \"...\" , \"characterId\" : \"...\" , \"createdAt\" : \"...\" , \"rating\" : 5 , \"message\" : \"Thoughtful and grounded.\" , \"locale\" : \"en\" , \"username\" : \"product_user_42\" , \"isOwner\" : false , \"userAvatarUrl\" : \"https://cdn.venice.ai/...\" } ] } Also sets x-pagination-* response headers ( limit , page , total , total-pages ). Using a character in chat Minimal { \"model\" : \"zai-org-glm-5-1\" , \"venice_parameters\" : { \"character_slug\" : \"alan-watts\" } , \"messages\" : [ { \"role\" : \"user\" , \"content\" : \"What's the nature of mind?\" } ] } The character's system prompt is injected by Venice. include_venice_system_prompt defaults to true and adds Venice's curated prelude — set it to false for a pure character voice. Ignoring the character's backing model You can override the model — Venice will still apply the character's system prompt: { \"model\" : \"kimi-k2-6\" , \"venice_parameters\" : { \"character_slug\" : \"alan-watts\" , \"include_venice_system_prompt\" : false } , \"messages\" : [ ... ] } Useful when the character's modelId lacks a capability (e.g. function calling, vision) that your app needs. Via feature suffix on the model string { \"model\" : \"zai-org-glm-5-1:character_slug=alan-watts\" , \"messages\" : [ ... ] } Useful when the client library (OpenAI SDK, LangChain, etc.) can't add venice_parameters . See venice-chat for the full suffix grammar. Patterns Character picker UI const res = await fetch ( ` ${base} /characters?sortBy=featured&limit=50` , { headers : { Authorization : `Bearer ${process.env.VENICE_API_KEY} ` }, }) const { data } = await res. json () // show data[].photoUrl, data[].name, data[].stats.averageRating // pick a slug, then pass into chat: await chat ({ model : pickedModelId, venice_parameters : { character_slug : pickedSlug }, messages : [...] }) Filter for family-friendly + web /characters?isAdult= false &isWebEnabled= true &sortBy=highlyRatedAndRecent Search by hashtag /characters?search=%23Philosophy Errors Code Meaning 400 Bad query params (e.g. limit > 100 ). 401 Missing or invalid auth. All three endpoints require a Bearer key or SIWE header. 404 Unknown slug. 500 Transient. Retry. Gotchas This is Preview API — response shape may change. Slugs are the public ID on the character's page ( venice.ai/c/<slug> ). They are not the internal id UUID. photoUrl / shareUrl / userAvatarUrl can be null — don't assume they exist. Character modelId may be gated (Pro, beta). If you always reuse the character's modelId , handle 401 \"only available to Pro users\" gracefully. Adult-flagged characters are omitted unless isAdult=true is explicitly passed.",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "examples": [
        {
            "input": "请用venice-characters帮我处理问题",
            "output": "好的，我是venice-characters。Discover and use Venice public characters (persona-driven system prompts with a bound model). Covers GET /characters (search/filter/sort), /characters/{slug}, /characters/{slug}/reviews, the Character schema, and how to apply a character via venice_parameters.character_slug in chat completions. 我会根据你的需求提供专业帮助。"
        },
        {
            "input": "介绍一下你的能力",
            "output": "我是venice-characters，专注于生活与工具领域。Discover and use Venice public characters (persona-driven system prompts with a bound model). Covers GET /characters (search/filter/sort), /characters/{slug}, /characters/{slug}/reviews, the Character schema, and how to apply a character via venice_parameters.character_slug in chat completions."
        }
    ],
    "install_guide": {
        "coze": "在 Coze 平台创建 Bot -> 技能配置 -> 导入此 .skill 文件",
        "dify": "在 Dify 平台创建应用 -> 添加知识库 -> 导入此 .skill 配置",
        "claude": "将 system_prompt 字段内容复制到 Claude 自定义指令中",
        "custom": "将此 .skill 文件加载到你的 AI Agent 框架中，解析 system_prompt 和 model_config 即可使用"
    },
    "scripts": {
        "python": "# venice-characters - Python extension\n# Add custom Python logic here\ndef process(input_data):\n    return input_data\n",
        "javascript": "// venice-characters - JavaScript extension\n// Add custom JS logic here\nfunction process(inputData) {\n    return inputData;\n}\n"
    },
    "tools": {
        "mcp_servers": [],
        "api_endpoints": []
    },
    "dependencies": {
        "python": [],
        "node": []
    },
    "hooks": {
        "on_load": "echo \"Skill loaded: venice-characters\"",
        "on_call": "",
        "on_error": "echo \"Skill error: please check logs\""
    }
}