diff --git a/.github/workflows/update-s3-html.yml b/.github/workflows/update-s3-html.yml
new file mode 100644
index 000000000..7c285418e
--- /dev/null
+++ b/.github/workflows/update-s3-html.yml
@@ -0,0 +1,35 @@
+name: Update S3 HTML indices for download.pytorch.org
+
+on:
+ schedule:
+ # Update the indices every 30 minutes
+ - cron: "*/30 * * * *"
+ workflow_dispatch:
+
+jobs:
+ update:
+ strategy:
+ matrix:
+ prefix: ["whl", "whl/test", "whl/nightly", "whl/lts/1.8"]
+ fail-fast: False
+ uses: pytorch/test-infra/.github/workflows/linux_job.yml@main
+ secrets: inherit
+ with:
+ repository: pytorch/builder
+ timeout: 60
+ secrets-env: AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
+ script: |
+ set -ex
+
+ # Create Conda Environment
+ git config --global --add safe.directory /__w/builder/builder
+ conda create --quiet -y --prefix run_env python="3.8"
+ conda activate ./run_env
+
+ # Set Envs
+ export AWS_ACCESS_KEY_ID="${SECRET_AWS_ACCESS_KEY_ID}"
+ export AWS_SECRET_ACCESS_KEY="${SECRET_AWS_SECRET_ACCESS_KEY}"
+
+ # Install requirements
+ pip install -r s3_management/requirements.txt
+ python s3_management/manage.py --generate-pep503 ${{ matrix.prefix }}