From d429ea31f279fe9d02d5feb416eba859d1d1c76e Mon Sep 17 00:00:00 2001 From: Jochen Schalanda Date: Wed, 20 Dec 2023 18:45:22 +0100 Subject: [PATCH] Add script to generate JSONFeed --- .github/workflows/generate-jsonfeed.yml | 35 +++++++++++++++++++++++++ feed.bash | 6 +++++ filter.jq | 22 ++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 .github/workflows/generate-jsonfeed.yml create mode 100755 feed.bash create mode 100644 filter.jq diff --git a/.github/workflows/generate-jsonfeed.yml b/.github/workflows/generate-jsonfeed.yml new file mode 100644 index 0000000..9ca781a --- /dev/null +++ b/.github/workflows/generate-jsonfeed.yml @@ -0,0 +1,35 @@ +--- +name: Generate BellSoft Blog Feed +on: + push: + branches: + - main + workflow_dispatch: + schedule: + - cron: "1 0 * * *" +permissions: + contents: read + pages: write + id-token: write +concurrency: + group: "pages" + cancel-in-progress: false +jobs: + generate-feed: + name: Generate JSON Feed + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Generate RSS + run: ./feed.bash + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v3 diff --git a/feed.bash b/feed.bash new file mode 100755 index 0000000..1269c4e --- /dev/null +++ b/feed.bash @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -e -u -o pipefail + +curl -fsSO 'https://bell-sw.com/page-data/blog/page-data.json' +mkdir _site +jq -f filter.jq page-data.json > _site/feed.json diff --git a/filter.jq b/filter.jq new file mode 100644 index 0000000..c603a44 --- /dev/null +++ b/filter.jq @@ -0,0 +1,22 @@ +.result.pageContext | { + "version": "https://jsonfeed.org/version/1.1", + "title": .title, + "home_page_url": "https://bell-sw.com/", + "feed_url": "https://example.org/feed.json", + "favicon": "https://bell-sw.com/assets/images/favicon.png", + items: [ + .nodes[] | { + "id": .postData.jsonId, + "title": .postData.data.title.iv, + "summary": .postData.data.seo.iv.description, + "image": ("https://bell-sw.com" + .postCover.images.fallback.src), + "date_published": .postData.data.publishedAt.iv, + "date_modified": .postData.data.updatedAt.iv, + "authors": [{ + "name": .postAuthorsData[].authorData.name.iv, + "avatar": ("https://bell-sw.com" + .postAuthorsData[].authorGatsbyImageData.images.fallback.src) + }], + "tags": .postData.data.category.iv, + "url": ("https://bell-sw.com" + .postData.data.relativeUrl.iv) + }] +}