ThumbCompare is a macOS app that compares your thumbnail/title against recent uploads from competitor YouTube channels in a feed-style grid, then exports a PNG snapshot for quick side-by-side review.
- Loads your thumbnail (A/B supported), title, and channel info.
- Fetches recent videos from competitor handles.
- Filters for feed-friendly videos (non-Shorts with usable thumbnails).
- Displays a mixed comparison feed and lets you export it as PNG.
Main compare view:
Export example:
You must use your own YouTube Data API v3 key.
- Go to Google Cloud Console.
- Create/select a project.
- Enable YouTube Data API v3 for that project.
- Create an API key in APIs & Services -> Credentials.
- In ThumbCompare, open Settings and paste the key.
- Click Save.
The key is stored locally in macOS Keychain via KeychainStore.
- Do not commit or share real API keys.
- This repository includes local secret scanning hooks to reduce accidental leaks.
- Optional search fallback uses more YouTube API quota.
- Resolve each handle using
channels.list?forHandle=.... - Optional fallback: if enabled, use
search.listto find channel ID, then callchannels.list?id=.... - Read
contentDetails.relatedPlaylists.uploads. - Fetch latest N uploads from
playlistItems.list. - Render competitor thumbnails, caching images in memory + disk at Application Support/ThumbCompare/Cache.
ThumbCompare/Views/ThumbCompare/Models/ThumbCompare/Services/YouTubeAPIService.swiftThumbCompare/Services/ImageCache.swiftThumbCompare/Utils/KeychainStore.swiftdocs/images/
- This repo includes a pre-commit secret scanner in
scripts/check-secrets.sh. - Enable the versioned hooks path once per clone:
git config core.hooksPath .githooks
- The hook blocks commits if staged content looks like API keys/tokens/private keys.
- A matching
pre-pushhook also runs the same scan before push. - If a match is intentional (for test data), append
secret-scan: allowon that line.