#!/usr/bin/env bash # Usage: warm-urls.sh <sitemap-url> # Example: warm-urls.sh https://www.example.com/sitemap.xml # Check if sitemap url is provided if [ -z "$1" ]; then echo "Please provide sitemap URL" >&2 exit 1 fi # Get all URLs from sitemap urls=$(curl -s "$1" | grep -o "<loc>[^<]*</loc>" | sed 's#<loc>\(.*\)</loc>#\1#') failed_urls=() # Warm up URLs for url in $urls; do # Fetch the og:image URL from the meta tags og_image_url=$(curl -s "$url" | grep -o "<meta property=\"og:image\" content=\"[^\"]*\"" | sed 's#<meta property="og:image" content="\([^"]*\)"#\1#') # warm the URL echo "Warming up URL: $url" if ! curl -s -I "$url" > /dev/null; then failed_urls+=("$url") fi # Warm up the og:image URL if [ -n "$og_image_url" ]; then echo "Warming up OG: $og_image_url" if ! curl -s -I "$og_image_url" > /dev/null; then failed_urls+=("$og_image_url") fi else echo "No og:image found for $url" fi done # Print failed URLs if [ ${#failed_urls[@]} -gt 0 ]; then echo "Failed to warm up the following URLs:" >&2 for failed_url in "${failed_urls[@]}"; do echo "$failed_url" >&2 done fi