Skip to content

CLI Tool for Content Curation and Moderation #5

@zfogg

Description

@zfogg

Overview

Create a command-line tool (CLI) that enables administrators and moderators to efficiently manage, curate, and moderate content on Sidechain. This tool should provide powerful batch operations, content curation features, and moderator management capabilities that aren't easily accessible through the web UI.

Goals

  • Content Curation: Feature/pin posts, manage trending content, spotlight producers
  • Moderation: Review reports, take action on content/users, manage bans
  • Moderator Management: Create/remove moderators, assign permissions, track moderator activity
  • Analytics & Insights: View moderation stats, user activity patterns, content metrics
  • Batch Operations: Process multiple items efficiently via CSV/JSON input
  • Audit Logging: Track all moderation actions for accountability

Core Features

1. Moderation Workflow

# Review pending reports
sidechain-cli moderation reports list --status pending
sidechain-cli moderation reports review <report-id> --action remove --reason "Violates community guidelines"

# Take action on content/users
sidechain-cli moderation takedown --type post --id <post-id> --action remove
sidechain-cli moderation takedown --type user --id <user-id> --action ban --reason "Repeated violations"

# View report details
sidechain-cli moderation reports show <report-id>

# Update report status
sidechain-cli moderation reports update <report-id> --status resolved --action-taken "Content removed"

2. Content Curation

# Feature posts (show in trending/featured)
sidechain-cli curation feature <post-id>
sidechain-cli curation feature --from-file posts.txt --reason "Weekly spotlight"

# Pin posts to top of feed
sidechain-cli curation pin <post-id> --duration 7d

# Spotlight producers
sidechain-cli curation spotlight <user-id> --message "Featured Producer of the Month"

# Remove from featured
sidechain-cli curation unfeature <post-id>

3. Moderator Management

# List all moderators
sidechain-cli moderators list

# Promote user to moderator
sidechain-cli moderators create <user-id> --role moderator --permissions "reports,content,takedown"

# Create admin (full permissions)
sidechain-cli moderators create <user-id> --role admin

# Remove moderator
sidechain-cli moderators remove <user-id>

# View moderator activity
sidechain-cli moderators activity <moderator-id> --since 7d

# Assign moderator to specific category/genre
sidechain-cli moderators assign <moderator-id> --category "Electronic" --category "Hip-Hop"

4. User Management

# View user details
sidechain-cli users show <user-id> --include-reports --include-posts

# Search users
sidechain-cli users search --email "user@example.com"
sidechain-cli users search --username "spammer*"

# Ban/unban users
sidechain-cli users ban <user-id> --reason "Violation of terms" --duration 30d
sidechain-cli users unban <user-id>

# View user's content
sidechain-cli users posts <user-id> --limit 100

# View user's reports (as reporter or reported)
sidechain-cli users reports <user-id> --as-reporter
sidechain-cli users reports <user-id> --as-reported

# Update user metadata
sidechain-cli users update <user-id> --display-name "New Name" --email-verified true

5. Content Management

# View post details
sidechain-cli content post <post-id> --include-comments --include-analytics

# Search posts
sidechain-cli content search --genre "House" --bpm-min 120 --created-since "2024-01-01"

# Delete posts (soft delete)
sidechain-cli content delete <post-id> --reason "Copyright violation"

# Restore deleted posts
sidechain-cli content restore <post-id>

# Bulk operations
sidechain-cli content delete-bulk --from-file post-ids.txt --reason "Spam cleanup"

# View processing status
sidechain-cli content status <post-id>

# Retry failed processing
sidechain-cli content retry-processing <post-id>

6. Analytics & Insights

# Moderation statistics
sidechain-cli analytics moderation --period 7d --group-by reason

# Content metrics
sidechain-cli analytics content --period 30d --metrics "uploads,plays,likes"

# User activity
sidechain-cli analytics users --period 7d --filter "new,active,banned"

# Report trends
sidechain-cli analytics reports --period 30d --chart

# Export data
sidechain-cli analytics export --type reports --format csv --output reports.csv

7. Batch Operations

# Process multiple reports from CSV
sidechain-cli batch process-reports --input reports.csv --action dismiss --reason "False positive"

# Bulk user actions
sidechain-cli batch ban-users --input user-ids.txt --reason "Bot account cleanup"

# Bulk content curation
sidechain-cli batch feature-posts --input posts.json --category "Weekly Top 10"

8. Audit & Logging

# View audit log
sidechain-cli audit list --since 24h --action "takedown,ban"
sidechain-cli audit list --moderator <moderator-id> --since 7d

# Export audit log
sidechain-cli audit export --since 30d --format json --output audit.json

# Search audit log
sidechain-cli audit search --target-user <user-id> --since 90d

Technical Requirements

Implementation Details

  • Language: Go (to match backend codebase)
  • Location: backend/cmd/sidechain-cli/main.go
  • Dependencies: Use existing backend packages (internal/models, internal/database, etc.)
  • Authentication: Support multiple methods:
    • JWT token from backend API
    • API key for service-to-service
    • Interactive login via OAuth flow
  • Configuration:
    • Environment variables (SIDECHAIN_API_URL, SIDECHAIN_API_KEY)
    • Config file (~/.sidechain/config.yaml)
    • CLI flags for all options

Database Schema Changes

Need to add moderator role system:

type UserRole struct {
    ID          string `gorm:"primaryKey"`
    UserID      string `gorm:"not null;index"`
    Role        string `gorm:"not null"` // "admin", "moderator", "curator"
    Permissions StringArray `gorm:"type:text[]"` // ["reports", "content", "takedown", "users"]
    Categories  StringArray `gorm:"type:text[]"` // Optional: genre/category assignments
    CreatedAt   time.Time
    CreatedBy   string // Moderator who granted role
}

type FeaturedContent struct {
    ID          string `gorm:"primaryKey"`
    PostID      string `gorm:"not null;index"`
    UserID      string `gorm:"not null;index"` // For spotlighting users
    Type        string `gorm:"not null"` // "post", "user", "collection"
    Priority    int `gorm:"default:0"` // Higher = more prominent
    Message     string `gorm:"type:text"` // Optional spotlight message
    ExpiresAt   *time.Time
    CreatedBy   string // Moderator who created feature
    CreatedAt   time.Time
}

type AuditLog struct {
    ID          string `gorm:"primaryKey"`
    ModeratorID string `gorm:"not null;index"`
    Action      string `gorm:"not null"` // "takedown", "ban", "feature", etc.
    TargetType  string `gorm:"not null"` // "post", "comment", "user"
    TargetID    string `gorm:"not null;index"`
    Reason      string `gorm:"type:text"`
    Metadata    jsonb // Additional action details
    CreatedAt   time.Time
}

API Endpoints Needed

Extend existing moderation endpoints and add new ones:

# Moderator management
POST   /api/v1/admin/moderators
GET    /api/v1/admin/moderators
DELETE /api/v1/admin/moderators/:id
GET    /api/v1/admin/moderators/:id/activity

# Content curation
POST   /api/v1/admin/curation/feature
POST   /api/v1/admin/curation/spotlight
DELETE /api/v1/admin/curation/feature/:id

# Enhanced user management
GET    /api/v1/admin/users/:id/reports
GET    /api/v1/admin/users/:id/posts
PUT    /api/v1/admin/users/:id

# Analytics
GET    /api/v1/admin/analytics/moderation
GET    /api/v1/admin/analytics/content
GET    /api/v1/admin/analytics/users

# Audit log
GET    /api/v1/admin/audit

CLI Tool Structure

backend/cmd/sidechain-cli/
├── main.go                 # Entry point, CLI setup
├── commands/
│   ├── moderation.go       # Report and takedown commands
│   ├── curation.go         # Feature/pin/spotlight commands
│   ├── moderators.go       # Moderator management
│   ├── users.go            # User management
│   ├── content.go          # Content operations
│   ├── analytics.go        # Statistics and insights
│   ├── batch.go            # Bulk operations
│   └── audit.go            # Audit log viewing
├── client/
│   ├── api_client.go       # HTTP client for API calls
│   └── auth.go             # Authentication handling
└── utils/
    ├── output.go           # Formatted output (table, JSON, CSV)
    ├── filters.go          # Common filtering logic
    └── validators.go       # Input validation

User Experience

  • Interactive Mode: For complex operations, prompt for confirmation
  • JSON/CSV Output: Support machine-readable output formats
  • Color Output: Use colors for status (green=success, red=error, yellow=warning)
  • Progress Bars: For long-running batch operations
  • Help System: Comprehensive --help for all commands
  • Auto-completion: Shell completion scripts (bash, zsh, fish)

Security Considerations

  • All moderator actions must be authenticated and logged
  • Role-based permissions (moderators can't promote to admin)
  • Rate limiting on API endpoints
  • Audit trail for all actions
  • Sensitive operations require confirmation (--force flag)

Future Enhancements

  • Webhook support for automated moderation rules
  • Integration with third-party moderation services
  • ML-based content flagging assistance
  • Scheduled moderation tasks
  • Email notifications for moderators
  • Dashboard/web UI companion to CLI

Priority

High - This tool is essential for:

  • Managing the platform as it scales
  • Responding to reports quickly
  • Maintaining content quality
  • Onboarding and managing moderators
  • Understanding platform health through analytics

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions