$npx -y skills add berabuddies/Semia --skill ryotComplete Ryot media tracker with progress tracking, reviews, collections, analytics, calendar, and automated daily/weekly reports. Track TV shows, movies, books, anime, games with full GraphQL API integration.
| 1 | # Ryot Media Tracker - Complete Suite |
| 2 | |
| 3 | Full-featured Ryot integration with progress tracking, reviews, collections, analytics, calendar, and automated reports. |
| 4 | |
| 5 | ## Setup (Required) |
| 6 | |
| 7 | Before using this skill, you must configure your Ryot instance: |
| 8 | |
| 9 | 1. **Create config file** at `/home/node/clawd/config/ryot.json`: |
| 10 | |
| 11 | ```json |
| 12 | { |
| 13 | "url": "https://your-ryot-instance.com", |
| 14 | "api_token": "your_api_token_here" |
| 15 | } |
| 16 | ``` |
| 17 | |
| 18 | 2. **Set your Ryot instance URL** - Replace `https://your-ryot-instance.com` with your actual Ryot server address |
| 19 | 3. **Get your API token** from your Ryot instance settings |
| 20 | 4. **Save the config** - The skill will read this file automatically |
| 21 | |
| 22 | ## Usage |
| 23 | |
| 24 | Use `scripts/ryot_api.py` for all Ryot operations. |
| 25 | |
| 26 | ## 🚀 Quick Start - Automated Setup |
| 27 | |
| 28 | ```bash |
| 29 | cd /home/node/clawd/skills/ryot/scripts |
| 30 | ./setup-automation.sh |
| 31 | ``` |
| 32 | |
| 33 | This will: |
| 34 | - ✅ Set up daily upcoming episodes notification (07:30) |
| 35 | - ✅ Set up weekly stats report (Monday 08:00) |
| 36 | - ✅ Set up daily recent activity (20:00) |
| 37 | - ✅ Configure WhatsApp delivery |
| 38 | |
| 39 | ## Common Tasks |
| 40 | |
| 41 | ### 1. Progress Tracking 📊 |
| 42 | |
| 43 | ```bash |
| 44 | # Check your progress on a TV show |
| 45 | python3 scripts/ryot_api.py progress met_XXXXX |
| 46 | |
| 47 | # Example output: |
| 48 | # Galaxy Express 999 |
| 49 | # Season 1, Episode 35/113 (30%) |
| 50 | ``` |
| 51 | |
| 52 | ### 2. Reviews & Ratings ⭐ |
| 53 | |
| 54 | ```bash |
| 55 | # Add review with rating (0-100) |
| 56 | python3 scripts/ryot_reviews.py add met_XXXXX 85 "Amazing show!" |
| 57 | |
| 58 | # Rating only |
| 59 | python3 scripts/ryot_reviews.py add met_XXXXX 90 |
| 60 | ``` |
| 61 | |
| 62 | ### 3. Collections 📚 |
| 63 | |
| 64 | ```bash |
| 65 | # List your collections |
| 66 | python3 scripts/ryot_collections.py list |
| 67 | |
| 68 | # Create new collection |
| 69 | python3 scripts/ryot_collections.py create "Top Anime 2026" "My favorite anime of the year" |
| 70 | |
| 71 | # Add media to collection |
| 72 | python3 scripts/ryot_collections.py add <collection_id> met_XXXXX |
| 73 | ``` |
| 74 | |
| 75 | ### 4. Analytics & Stats 📈 |
| 76 | |
| 77 | ```bash |
| 78 | # View your statistics |
| 79 | python3 scripts/ryot_stats.py analytics |
| 80 | # Output: Total media, shows, movies, watch time |
| 81 | |
| 82 | # Recently consumed |
| 83 | python3 scripts/ryot_stats.py recent |
| 84 | # Output: Last 10 media you watched/read |
| 85 | ``` |
| 86 | |
| 87 | ### 5. Calendar & Upcoming 📅 |
| 88 | |
| 89 | ```bash |
| 90 | # Upcoming episodes this week |
| 91 | python3 scripts/ryot_calendar.py upcoming |
| 92 | |
| 93 | # Calendar for next 30 days |
| 94 | python3 scripts/ryot_calendar.py calendar 30 |
| 95 | ``` |
| 96 | |
| 97 | ### 6. Search & Details 🔍 |
| 98 | |
| 99 | ```bash |
| 100 | # Search for TV shows |
| 101 | python3 scripts/ryot_api.py search "The Wire" --type SHOW |
| 102 | |
| 103 | # Search for movies |
| 104 | python3 scripts/ryot_api.py search "Inception" --type MOVIE |
| 105 | |
| 106 | # Get details |
| 107 | python3 scripts/ryot_api.py details met_XXXXX |
| 108 | ``` |
| 109 | |
| 110 | ### 7. Mark as Completed ✅ |
| 111 | |
| 112 | ```bash |
| 113 | # Mark media as completed |
| 114 | python3 scripts/ryot_api.py complete met_XXXXX |
| 115 | ``` |
| 116 | |
| 117 | ### 8. Bulk Episode Marking 🎬 |
| 118 | |
| 119 | ```bash |
| 120 | # Search for a show to get metadata_id |
| 121 | python3 scripts/ryot-mark-episodes.py search "Galaxy Express 999" |
| 122 | # Output: Found: met_huCCEo1Pu0xM (source: TMDB, type: SHOW) |
| 123 | |
| 124 | # Mark range of episodes as watched (e.g., episodes 1-46 of season 1) |
| 125 | python3 scripts/ryot-mark-episodes.py met_huCCEo1Pu0xM 1 1 46 |
| 126 | # Marks all episodes from 1 to 46 in season 1 |
| 127 | |
| 128 | # Mark single season episodes |
| 129 | python3 scripts/ryot-mark-episodes.py met_XXXXX 2 1 24 |
| 130 | # Marks season 2, episodes 1-24 |
| 131 | ``` |
| 132 | |
| 133 | **Use cases:** |
| 134 | - Catching up on a series you've already watched elsewhere |
| 135 | - Bulk importing viewing history |
| 136 | - Marking entire seasons at once |
| 137 | |
| 138 | **Note:** Each episode is marked individually with `createNewInProgress` + `showSeasonNumber`/`showEpisodeNumber`. |
| 139 | |
| 140 | ## Workflow |
| 141 | |
| 142 | 1. **User request** → "How many episodes of Galaxy Express 999 have I watched?" |
| 143 | 2. **Search** → Find the correct metadata ID |
| 144 | 3. **Check progress** → `python3 scripts/ryot_api.py progress met_XXX` |
| 145 | 4. **Mark complete** → When finished, deploy bulk progress update |
| 146 | |
| 147 | ## Media Types |
| 148 | |
| 149 | Supported `lot` values: |
| 150 | - `SHOW` - TV series |
| 151 | - `MOVIE` - Films |
| 152 | - `BOOK` - Books |
| 153 | - `ANIME` - Anime series |
| 154 | - `GAME` - Video games |
| 155 | |
| 156 | ## Important Notes |
| 157 | |
| 158 | - **Before first use:** Check if `/home/node/clawd/config/ryot.json` exists. If not, ask the user for their Ryot instance URL and API token, then create the config file. |
| 159 | - Always search first to get the correct metadata ID |
| 160 | - Verify the year if multiple results match the title |
| 161 | - The API uses GraphQL at `/backend/graphql` |
| 162 | - Metadata IDs start with `met_` |
| 163 | |
| 164 | ## Resources |
| 165 | |
| 166 | ### scripts/ryot_api.py |
| 167 | |
| 168 | Python script for Ryot GraphQL operations. Supports: |
| 169 | - `search` - Find media by title |
| 170 | - `details` - Get metadata details |
| 171 | - `complete` - Mark as completed |