name: civitai-analyst description: "Generate and execute SQL queries against the civitai_records PostgreSQL database to analyze video performance on Civitai. Use when users ask about: video engagement metrics (likes, hearts, comments), content performance analysis, tag/theme analysis, quality scores, weekly reports, comparing videos, content recommendations, trend analysis, or any Civitai data queries. Triggers: Civitai, video stats, engagement, likes, hearts, comments, weekly report, tag analysis, quality score, content strategy, top performers, SQL query, video comparison, WoW analysis, 数据分析, 视频表现, 周报, 内容分析." metadata: {"openclaw":{"requires":{"bins":["npx"],"env":["CIVITAI_RECORD_MCP_SERVER_TOKEN"]}}}
Civitai Analyst
Analyze video performance data on Civitai through natural language queries. Generate SQL, execute against the database, and provide actionable insights.
Capabilities
- SQL Generation - Convert natural language to optimized PostgreSQL queries
- Query Execution - Run queries via
query_civitai_db - Data Analysis - Interpret engagement metrics and find patterns
- Content Insights - Analyze tags, themes, quality scores from video_analysis
- Recommendations - Suggest content strategies based on performance data
- Weekly Reports - Generate JSON/HTML performance summaries
mcporter Setup
- Export the required token and point mcporter at this skill's config:
export CIVITAI_RECORD_MCP_SERVER_TOKEN="<token>"
export MCPORTER_CONFIG="${SKILL_DIR}/mcporter.json"
- Optional validation commands:
test -f "${MCPORTER_CONFIG}"
npx mcporter list --config "${MCPORTER_CONFIG}"
npx mcporter list civitai_records --config "${MCPORTER_CONFIG}"
Tool Usage
Execute SQL with mcporter so every query is auditable and consistently configured:
npx mcporter call civitai_records.query_civitai_db \
--config "${MCPORTER_CONFIG}" --output json \
sql="SELECT ..."
Rules:
- Always include
--output json - Pass SQL as a single string. For multi-line queries use
sql=$(cat <<'SQL' ... SQL) - Surface mcporter errors directly—most rejections return JSON with details
Error Handling: If query is rejected, response contains:
{
"allowed": false,
"reason": "...",
"violation_type": "...",
"suggestions": "..."
}
Fix the SQL based on the error and retry.
Workflow
- Understand - Parse user's question, identify metrics/filters needed
- Generate SQL - Use schema.md for tables, query-index.md for templates
- Execute - Run
npx mcporter call civitai_records.query_civitai_dbwith validated SQL - Analyze - Interpret results, find patterns, compare data points
- Present - Format with links, provide insights and recommendations
Key Parameters
civitai_account
- User-provided account identifier
- Default fallback:
'c29'if not specified
on_behalf_of
- User's first name, inferred from session context
- Used to filter assets/stats by uploader
Date Ranges
- Use calendar weeks (Monday 00:00 to Sunday 23:59 UTC)
- Format: PostgreSQL timestamptz
'2025-01-06T00:00:00Z'
Date Calculations:
- "This week" = Current Monday to next Monday
- "Last week" = Previous Monday to current Monday
- "Past 2 weeks" = Monday 2 weeks ago to next Monday
Link Formatting
Assets (videos/images):
https://civitai.com/images/{assets.civitai_id}
Posts:
https://civitai.com/posts/{civitai_posts.civitai_id}
Always include clickable links in results for easy navigation.
Analysis Guidelines
Engagement Metrics
- Positive engagement: likes + hearts + laughs
- Total engagement: all reactions + comments
- Engagement rate: total_engagement / asset_count
Pattern Recognition
- Compare top performers vs average
- Identify common tags in high-engagement videos
- Correlate quality_score with engagement
- Analyze motion_intensity impact
Comparative Analysis
When comparing videos (e.g., "rank 2 vs rank 9"):
- Extract shared tags
- Compare quality scores
- Analyze description/prompt similarities
- Identify differentiating factors
Recommendation Framework
Based on analysis, provide actionable suggestions:
- Content themes - Which topics/tags drive engagement
- Quality factors - Optimal quality_score ranges
- Timing patterns - Best posting times if data shows trends
- Improvement areas - Underperforming high-quality content
Example insights:
- "Anime + high-motion videos get 2x engagement"
- "Videos with quality_score > 0.85 need better tags for visibility"
- "Comments spike on 'cinematic' tagged content"
Report Generation
For weekly reports, use templates from references/report-templates.md:
- JSON format - Structured data for programmatic use
- HTML format - Visual report with Tailwind CSS styling
Generate reports by:
- Run weekly-feedback-stats.sql for summary
- Run top-performing-assets.sql for highlights
- Run tag-performance.sql for content insights
- Combine into report template
Language
Respond in the same language as the user's query.
- English query → English response
- Chinese query → Chinese response (中文提问 → 中文回答)
Reference Files
| File | When to Read |
|---|---|
references/schema.md | Understanding table structures, columns, relationships |
references/query-index.md | Finding the right query template for user's request |
references/queries/*.sql | Loading specific query when needed |
references/report-templates.md | Generating weekly reports |