diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index d3143173..e1c6db68 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -28,6 +28,12 @@ jobs:
         run: |
           go get -u -v -insecure github.com/v2ray/domain-list-community
 
+      - name: Automatically generate ookla-speedtest sub-list from source
+        run: |
+          curl -L -o servers-source.xml "https://c.speedtest.net/speedtest-servers-static.php"
+          cat servers-source.xml | sed -nEe 's/.+host="(.+):[0-9]+".+/\L\1/p' | sort -u > hosts-with-ip.txt
+          sed -E '/^([0-9]{1,3}\.){3}[0-9]{1,3}$/d' hosts-with-ip.txt > $GOPATH/src/github.com/v2ray/domain-list-community/data/ookla-speedtest
+
       - name: Build geosite.dat file
         run: |
           domain-list-community