#!/bin/bash # Multi-Language Sitemap Generator for Odoo Expertos # Generates sitemaps with hreflang annotations for ES (default), EN, DE, FR DOMAIN="https://www.odoo-expertos.com" TODAY=$(date +%Y-%m-%d) LANGUAGES=("" "en" "de" "fr" "pt" "ar") HREFLANGS=("es" "en" "de" "fr" "pt" "ar") # Generate main sitemap index cat << 'SITEMAP_INDEX_START' > sitemap.xml https://www.odoo-expertos.com/sitemap-es.xml https://www.odoo-expertos.com/sitemap-en.xml https://www.odoo-expertos.com/sitemap-de.xml https://www.odoo-expertos.com/sitemap-fr.xml https://www.odoo-expertos.com/sitemap-pt.xml https://www.odoo-expertos.com/sitemap-ar.xml SITEMAP_INDEX_START # Function to generate hreflang entries for a given path generate_hreflang() { local base_path="$1" echo " " echo " " echo " " echo " " echo " " echo " " echo " " } # Function to generate sitemap for a specific language generate_lang_sitemap() { local lang="$1" local lang_prefix="$2" local sitemap_file="sitemap-${lang}.xml" cat << SITEMAP_HEADER > "$sitemap_file" SITEMAP_HEADER # Homepage cat << HOMEPAGE >> "$sitemap_file" ${DOMAIN}${lang_prefix}/ ${TODAY} daily 1.0 $(generate_hreflang "/") HOMEPAGE # Main category pages for category in "odoo" "odoo-hosting" "odoo-ia"; do cat << CATEGORY >> "$sitemap_file" ${DOMAIN}${lang_prefix}/${category}/ ${TODAY} weekly 0.9 $(generate_hreflang "/${category}/") CATEGORY done # Content pages for this language if [ -z "$lang_prefix" ]; then # Spanish (root) - scan existing content find . -name "*.html" -type f | grep -E "^./odoo|^./odoo-hosting|^./odoo-ia" | grep -v test-files | grep -v "^./en" | grep -v "^./de" | grep -v "^./fr" | while read file; do path=$(echo "$file" | sed 's|^\./||' | sed 's|/index\.html$|/|' | sed 's|\.html$|.html|') # Skip category index pages (already added above) if [[ "$path" == "odoo/" || "$path" == "odoo-hosting/" || "$path" == "odoo-ia/" ]]; then continue fi depth=$(echo "$path" | tr -cd '/' | wc -c) if [ $depth -le 2 ]; then priority="0.8" else priority="0.7" fi cat << URL >> "$sitemap_file" ${DOMAIN}/${path} ${TODAY} monthly ${priority} $(generate_hreflang "/${path}") URL done else # Other languages - scan their directories if [ -d ".${lang_prefix}" ]; then find ".${lang_prefix}" -name "*.html" -type f | while read file; do # Get path relative to language directory rel_path=$(echo "$file" | sed "s|^\.${lang_prefix}/||" | sed 's|/index\.html$|/|' | sed 's|\.html$|.html|') base_path="/${rel_path}" depth=$(echo "$rel_path" | tr -cd '/' | wc -c) if [ $depth -le 2 ]; then priority="0.8" else priority="0.7" fi cat << URL >> "$sitemap_file" ${DOMAIN}${lang_prefix}/${rel_path} ${TODAY} monthly ${priority} $(generate_hreflang "${base_path}") URL done fi fi # Legal pages (only for main Spanish sitemap) if [ -z "$lang_prefix" ]; then for page in "cookie-policy" "legal-notice" "privacy-policy" "terms-of-use"; do cat << LEGAL >> "$sitemap_file" ${DOMAIN}/${page}.html ${TODAY} yearly 0.3 LEGAL done fi # Close sitemap echo "" >> "$sitemap_file" url_count=$(grep -c '' "$sitemap_file") echo "Generated $sitemap_file with $url_count URLs" } # Generate sitemaps for each language generate_lang_sitemap "es" "" generate_lang_sitemap "en" "/en" generate_lang_sitemap "de" "/de" generate_lang_sitemap "fr" "/fr" generate_lang_sitemap "pt" "/pt" generate_lang_sitemap "ar" "/ar" # Summary echo "" echo "=== Sitemap Generation Complete ===" echo "Main sitemap index: sitemap.xml" for lang in "es" "en" "de" "fr" "pt" "ar"; do echo " - sitemap-${lang}.xml: $(grep -c '' sitemap-${lang}.xml) URLs" done