Skip to content

IndexNow Rotating Push #1390

IndexNow Rotating Push

IndexNow Rotating Push #1390

name: IndexNow Rotating Push
on:
# Daily at 9 AM UTC — rotates through 10 URLs at a time (full cycle every ~9 days)
schedule:
- cron: '0 9 * * *'
# On deploy — sends ALL URLs (content actually changed)
push:
branches: [ main ]
workflow_dispatch:
jobs:
indexnow-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Submit URLs to IndexNow
run: |
KEY="3a879a2ef23c46a39d3b0926392655e1"
# === MASTER URL LIST — ALL 88 PUBLIC PAGES ===
# Ordered by priority. 10 per group, 9 groups total.
# Every page gets pushed every ~54 hours on the 6-hour schedule.
ALL_URLS=(
# --- Group 0: Money pages (highest priority) ---
"https://justlegalsolutions.org/"
"https://justlegalsolutions.org/tulsa-process-server"
"https://justlegalsolutions.org/services"
"https://justlegalsolutions.org/pricing"
"https://justlegalsolutions.org/contact"
"https://justlegalsolutions.org/law-firm-services"
"https://justlegalsolutions.org/weekend-emergency"
"https://justlegalsolutions.org/urgent-process-server"
"https://justlegalsolutions.org/notary"
"https://justlegalsolutions.org/mobile-notary"
"https://justlegalsolutions.org/remote-online-notary"
"https://justlegalsolutions.org/apostille"
"https://justlegalsolutions.org/hospital-notary"
"https://justlegalsolutions.org/real-estate-notary"
"https://justlegalsolutions.org/wedding-officiant"
"https://justlegalsolutions.org/mobile-notary-vs-bank"
"https://justlegalsolutions.org/what-to-bring"
"https://justlegalsolutions.org/notary/joseph"
"https://justlegalsolutions.org/notary/tulsa-county"
"https://justlegalsolutions.org/notary/creek-county"
"https://justlegalsolutions.org/notary-faqs"
"https://justlegalsolutions.org/notary-laws"
"https://justlegalsolutions.org/about"
"https://justlegalsolutions.org/ultimate-guide-process-serving-oklahoma"
# --- Group 1: Core pages + review funnels ---
"https://justlegalsolutions.org/why-choose-us"
"https://justlegalsolutions.org/affidavit-of-service"
"https://justlegalsolutions.org/field-sheet"
"https://justlegalsolutions.org/courier-services-tulsa"
"https://justlegalsolutions.org/virtual-assistant-services"
"https://justlegalsolutions.org/payments"
"https://justlegalsolutions.org/leave-review"
"https://justlegalsolutions.org/reviews/phone"
"https://justlegalsolutions.org/reviews/survey"
"https://justlegalsolutions.org/reviews/text"
"https://justlegalsolutions.org/resources"
# --- Group 2: Utility + top service areas ---
"https://justlegalsolutions.org/security-policy"
"https://justlegalsolutions.org/sitemap"
"https://justlegalsolutions.org/service-areas"
"https://justlegalsolutions.org/service-areas/broken-arrow"
"https://justlegalsolutions.org/service-areas/owasso"
"https://justlegalsolutions.org/service-areas/jenks"
"https://justlegalsolutions.org/service-areas/bixby"
"https://justlegalsolutions.org/service-areas/sand-springs"
"https://justlegalsolutions.org/service-areas/sapulpa"
"https://justlegalsolutions.org/service-areas/claremore"
# --- Group 3: More service area cities ---
"https://justlegalsolutions.org/service-areas/bartlesville"
"https://justlegalsolutions.org/service-areas/catoosa"
"https://justlegalsolutions.org/service-areas/collinsville"
"https://justlegalsolutions.org/service-areas/coweta"
"https://justlegalsolutions.org/service-areas/glenpool"
"https://justlegalsolutions.org/service-areas/skiatook"
"https://justlegalsolutions.org/service-areas/wagoner"
"https://justlegalsolutions.org/service-areas/bristow"
"https://justlegalsolutions.org/service-areas/kellyville"
"https://justlegalsolutions.org/service-areas/pawhuska"
# --- Group 4: Last city + all counties ---
"https://justlegalsolutions.org/service-areas/pryor"
"https://justlegalsolutions.org/counties"
"https://justlegalsolutions.org/counties/tulsa-county"
"https://justlegalsolutions.org/counties/rogers-county"
"https://justlegalsolutions.org/counties/wagoner-county"
"https://justlegalsolutions.org/counties/washington-county"
"https://justlegalsolutions.org/counties/creek-county"
"https://justlegalsolutions.org/counties/osage-county"
"https://justlegalsolutions.org/counties/okmulgee-county"
"https://justlegalsolutions.org/counties/mayes-county"
# --- Group 5: Last county + authority guides ---
"https://justlegalsolutions.org/counties/nowata-county"
"https://justlegalsolutions.org/ultimate-guide-process-serving-oklahoma"
"https://justlegalsolutions.org/process-server-tulsa-guide"
"https://justlegalsolutions.org/oklahoma-process-server-laws"
"https://justlegalsolutions.org/oklahoma-process-server-pricing"
"https://justlegalsolutions.org/oklahoma-process-server-authority"
"https://justlegalsolutions.org/oklahoma-process-server-laws"
"https://justlegalsolutions.org/oklahoma-process-server-technology"
"https://justlegalsolutions.org/oklahoma-case-law-service-process"
"https://justlegalsolutions.org/oklahoma-electronic-service-guide"
# --- Group 6: More guides + 2026 editions ---
"https://justlegalsolutions.org/oklahoma-legal-service-areas"
"https://justlegalsolutions.org/oklahoma-process-serving-costs-comparison"
"https://justlegalsolutions.org/family-law-service-guide-tulsa"
"https://justlegalsolutions.org/high-profile-service-protocols-tulsa"
"https://justlegalsolutions.org/ai-skip-tracing-guide-oklahoma"
"https://justlegalsolutions.org/process-serving-mistakes-guide"
"https://justlegalsolutions.org/serving-legal-papers-on-tribal-land"
"https://justlegalsolutions.org/oklahoma-process-server-faq-2026"
"https://justlegalsolutions.org/oklahoma-process-server-best-practices-checklist-2026"
"https://justlegalsolutions.org/oklahoma-process-server-pricing-2026"
# --- Group 7: SEO content + 2025 guides (part 1) ---
"https://justlegalsolutions.org/seo/eviction-notice-process-server"
"https://justlegalsolutions.org/seo/legal-posting-process-server"
"https://justlegalsolutions.org/seo/process-server-nowata"
"https://justlegalsolutions.org/service-areas/vinita"
"https://justlegalsolutions.org/seo/what-is-a-process-server"
"https://justlegalsolutions.org/ai-skip-tracing-guide-oklahoma-2025"
"https://justlegalsolutions.org/family-law-service-guide-tulsa"
"https://justlegalsolutions.org/high-profile-service-protocols-tulsa-2025"
"https://justlegalsolutions.org/oklahoma-case-law-service-process-2025"
"https://justlegalsolutions.org/oklahoma-electronic-service-guide"
# --- Group 8: 2025 guides (part 2) ---
"https://justlegalsolutions.org/oklahoma-legal-service-areas-2025"
"https://justlegalsolutions.org/oklahoma-process-server-best-practices-checklist-2026"
"https://justlegalsolutions.org/oklahoma-process-server-faq-2025"
"https://justlegalsolutions.org/oklahoma-process-server-pricing-2025"
"https://justlegalsolutions.org/oklahoma-process-server-technology-2025"
"https://justlegalsolutions.org/oklahoma-process-serving-costs-comparison-2025"
"https://justlegalsolutions.org/process-serving-mistakes-guide-2025"
)
TOTAL=${#ALL_URLS[@]}
BATCH_SIZE=10
NUM_GROUPS=$(( (TOTAL + BATCH_SIZE - 1) / BATCH_SIZE ))
# On deploy: send ALL URLs (content actually changed)
# On schedule: rotate through groups of 10
EVENT="${{ github.event_name }}"
if [ "$EVENT" = "push" ]; then
echo "=== DEPLOY: Submitting all $TOTAL URLs ==="
BATCH=("${ALL_URLS[@]}")
else
# Rotation: use day-of-year to cycle through groups of 10
DAY=$(date -u +%j)
GROUP=$(( DAY % NUM_GROUPS ))
START=$(( GROUP * BATCH_SIZE ))
BATCH=("${ALL_URLS[@]:$START:$BATCH_SIZE}")
echo "=== SCHEDULED: Group $GROUP of $((NUM_GROUPS - 1)) — ${#BATCH[@]} URLs (starting at index $START) ==="
echo "URLs in this batch:"
for u in "${BATCH[@]}"; do echo " $u"; done
fi
# Build JSON array
URL_JSON=""
for url in "${BATCH[@]}"; do
[ -n "$URL_JSON" ] && URL_JSON="$URL_JSON,"
URL_JSON="$URL_JSON\"$url\""
done
# Submit to IndexNow
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST "https://api.indexnow.org/indexnow" \
-H "Content-Type: application/json" \
-d "{\"host\":\"justlegalsolutions.org\",\"key\":\"$KEY\",\"keyLocation\":\"https://justlegalsolutions.org/$KEY.txt\",\"urlList\":[$URL_JSON]}")
echo "IndexNow response: HTTP $HTTP_CODE (${#BATCH[@]} URLs submitted)"
if [ "$HTTP_CODE" -ge 400 ]; then
echo "WARNING: IndexNow returned error $HTTP_CODE"
fi
# Sitemap pings (lightweight, always do these)
curl -s "https://www.google.com/ping?sitemap=https://justlegalsolutions.org/sitemap-index.xml" > /dev/null || true
curl -s "https://www.bing.com/ping?sitemap=https://justlegalsolutions.org/sitemap-index.xml" > /dev/null || true
echo "Done — sitemap pings sent to Google and Bing (via sitemap-index.xml)"