diff --git a/.github/workflows/UpstreamSync.yml b/.github/workflows/UpstreamSync.yml
new file mode 100644
index 000000000..16c427982
--- /dev/null
+++ b/.github/workflows/UpstreamSync.yml
@@ -0,0 +1,39 @@
+name: Upstream Sync
+
+permissions:
+  contents: write
+
+on:
+  schedule:
+    - cron: "0 0 * * *" # every day
+  workflow_dispatch:
+
+jobs:
+  sync_latest_from_upstream:
+    name: Sync latest commits from upstream repo
+    runs-on: ubuntu-latest
+    if: ${{ github.event.repository.fork }}
+
+    steps:
+      # Step 1: run a standard checkout action
+      - name: Checkout target repo
+        uses: actions/checkout@v3
+
+      # Step 2: run the sync action
+      - name: Sync upstream changes
+        id: sync
+        uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
+        with:
+          upstream_sync_repo: apple/swift-cmark
+          upstream_sync_branch: gfm
+          target_sync_branch: gfm
+          target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set
+
+          # Set test_mode true to run tests instead of the true action!!
+          test_mode: false
+
+      - name: Sync check
+        if: failure()
+        run: |
+          echo "::error::Due to insufficient permissions, synchronization failed (as expected). Please go to the repository homepage and manually perform [Sync fork]."
+          exit 1
\ No newline at end of file
diff --git a/extensions/autolink.h b/extensions/include/autolink.h
similarity index 100%
rename from extensions/autolink.h
rename to extensions/include/autolink.h
diff --git a/extensions/ext_scanners.h b/extensions/include/ext_scanners.h
similarity index 100%
rename from extensions/ext_scanners.h
rename to extensions/include/ext_scanners.h
diff --git a/extensions/strikethrough.h b/extensions/include/strikethrough.h
similarity index 100%
rename from extensions/strikethrough.h
rename to extensions/include/strikethrough.h
diff --git a/extensions/table.h b/extensions/include/table.h
similarity index 100%
rename from extensions/table.h
rename to extensions/include/table.h
diff --git a/extensions/tagfilter.h b/extensions/include/tagfilter.h
similarity index 100%
rename from extensions/tagfilter.h
rename to extensions/include/tagfilter.h
diff --git a/extensions/tasklist.h b/extensions/include/tasklist.h
similarity index 100%
rename from extensions/tasklist.h
rename to extensions/include/tasklist.h