games:check-delisted
Check visible games for delisted status by detecting robots noindex meta tag.
Synopsis
Description
This command checks all visible games in the database to verify if they have been delisted on itch.io. It fetches each game's project page and checks for the presence of a <meta name="robots" content="noindex"> tag, updating the is_delisted flag accordingly.
Delisted games are:
Hidden from public listings
Excluded from search results
Skipped during data refresh operations
Marked with
is_delisted = truein the database
This command helps maintain data integrity by identifying games that have been removed from search engines by itch.io.
Usage Examples
Basic Usage
Check all visible games for delisted status:
Output:
Check Specific Game
Check Games by Name
Check All Games
DDEV Environment
Run in DDEV:
Options
Option | Description |
|---|---|
| ID of the specific game to check |
| Name (or part of name) of the game(s) to check |
| Check all visible games |
| Sort games by field (id, name, created_at, updated_at) |
| Maximum number of retries for rate-limited requests |
| Base cooldown time in seconds between retries |
What It Does
1. Fetch Visible Games
Retrieves games based on selection criteria (specific game, name pattern, or all visible games).
2. Check Each Game
For each game:
Fetches the game's itch.io project page
Parses HTML to check for
<meta name="robots" content="noindex">tagUpdates
is_delistedflag based on presence of noindex tag
3. Report Results
Displays:
Total games checked
Number of newly delisted games
Any errors encountered
Delisted Detection
The command detects delisting through the presence of a robots noindex meta tag:
or
This tag is added by itch.io when a game is delisted from search engines but still accessible via direct link.
Impact on System
Database Updates
When a game is marked as delisted:
Automatic Exclusions
Delisted games are automatically excluded from:
Search Results: Not returned in Meilisearch queries
Game Listings: Hidden from public game lists
Feed Processing: Skipped during
feed:processRefresh Operations: Excluded from
games:refreshStats Import: Not processed by
games:import-stats
User Impact
Games in user lists remain but show as delisted
Ratings and reviews are preserved
Historical data is maintained
Game can be unlisted if noindex tag is removed
Performance
Execution Time
Small dataset (< 100 games): 5-10 minutes
Medium dataset (100-1,000 games): 30-60 minutes
Large dataset (> 1,000 games): 1-2 hours
Time varies based on:
Number of games to check
Network latency to itch.io
Rate limiting delays (5 seconds between requests)
Resource Usage
Network: High (fetches each game page)
CPU: Low (mostly I/O bound)
Memory: Low (processes one game at a time)
Database: Minimal writes
Rate Limiting
The command includes rate limiting to avoid overwhelming itch.io:
5-second delay between requests
Configurable retry behavior
Handles throttling gracefully
Troubleshooting
Network Errors
Problem: Connection timeouts or network errors
Solutions:
Check internet connectivity
Verify itch.io is accessible
Increase max-retries option
Run during off-peak hours
Rate Limiting Issues
Problem: Getting rate limited by itch.io
Solutions:
Increase retry-cooldown option
Run during off-peak hours
Process smaller batches using --game-name filter
False Positives
Problem: Games incorrectly marked as delisted
Solutions:
Verify game page in browser and check for noindex tag
Check for temporary itch.io issues
Re-run command to confirm
Manually update if needed
Relisting Games
If a game's noindex tag is removed on itch.io:
Manual Relisting
Automatic Detection
Running the command again will detect if a previously delisted game no longer has the noindex tag and update accordingly.
Best Practices
Regular Schedule: Run on a regular schedule (daily or weekly)
Monitor Output: Review newly delisted games
Investigate Patterns: Look for mass delistings (may indicate issues)
Preserve Data: Don't delete delisted games, just mark them
User Communication: Notify users if their followed games are delisted
Related Commands
games:refresh - Refresh game information (skips delisted games)
feed:process - Process feed (skips delisted games)
See Also
Game model delisted logic
Search exclusion filters