diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 29ff69d6a767a77d5068e7e5fff62f6fa1f25d90..6ff61549746a7125a9e2b070156b7a9f4ef758f2 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -393,6 +393,9 @@ jobs:
         run: |
           echo "Failed to restore Python virtual environment from cache"
           exit 1
+      - name: Register check-json problem matcher
+        run: |
+          echo "::add-matcher::.github/workflows/matchers/check-json.json"
       - name: Run check-json
         run: |
           . venv/bin/activate
diff --git a/.github/workflows/matchers/check-json.json b/.github/workflows/matchers/check-json.json
new file mode 100644
index 0000000000000000000000000000000000000000..390d63d02aec2a5be55d06ef3db63f04ac7003b1
--- /dev/null
+++ b/.github/workflows/matchers/check-json.json
@@ -0,0 +1,16 @@
+{
+  "problemMatcher": [
+    {
+      "owner": "check-json",
+      "pattern": [
+        {
+          "regexp": "^(.+):\\s(.+\\sline\\s(\\d+)\\scolumn\\s(\\d+).+)$",
+          "file": 1,
+          "message": 2,
+          "line": 3,
+          "column": 4
+        }
+      ]
+    }
+  ]
+}