返回

自动化 Notion 中的 RSS 订阅与过滤

见解分享

在当今信息爆炸的时代,保持对我们感兴趣的最新信息的关注是至关重要的。RSS 订阅是一种强大的工具,它使我们能够轻松跟踪来自多个来源的最新更新。但是,管理庞大的 RSS 订阅列表可能是一项艰巨的任务。

Notion 是一个强大的协作和组织工具,它提供了一个干净直观的环境来管理我们的任务、笔记和项目。通过利用 Notion 的功能和灵活的 API,我们可以自动化 RSS 订阅的管理和过滤过程,从而使我们能够更有效地关注相关信息。

基于 GitHub Actions 的自动化解决方案

GitHub Actions 是一个强大的自动化平台,它使我们能够创建自定义工作流来响应各种事件。通过结合 GitHub Actions 和 Notion API,我们可以构建一个自动化解决方案来管理我们的 RSS 订阅并过滤更新。

工作流程概览

我们的工作流程将由以下步骤组成:

  1. 定期触发工作流程,例如每天或每周一次。
  2. 使用 Notion API 从 Notion 中获取管理的 RSS 源和关键词列表。
  3. 循环遍历 RSS 源,获取最新的更新条目。
  4. 将每个更新条目与关键词列表进行比较。
  5. 如果更新条目与任何关键词匹配,则将其保存回 Notion 中。

实施

首先,我们需要创建一个 GitHub Actions 工作流程文件。此文件将定义工作流程的步骤和配置。

name: Notion RSS 订阅过滤
on:
  schedule:
    - cron: "0 0 * * *"
jobs:
  filter-rss:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: 获取 Notion 数据
        run: |
          NOTION_API_KEY=${{ secrets.NOTION_API_KEY }}
          NOTION_DATABASE_ID=${{ secrets.NOTION_DATABASE_ID }}
          curl "https://api.notion.com/v1/databases/${NOTION_DATABASE_ID}/query" \
            -H "Authorization: Bearer ${NOTION_API_KEY}" \
            -H "Content-Type: application/json" \
            -d '{"filter":{"property":"Type","value":"RSS"}}' \
            > rss-data.json
      - name: 解析 Notion 数据
        run: |
          cat rss-data.json | jq -r '.results[].properties.Name.title[0].text, .properties.URL.url' | tr '\n' ',' > rss-sources.txt
          cat rss-data.json | jq -r '.results[].properties.Keywords.multi_select[].name' | tr '\n' ',' > keywords.txt
      - name: 获取 RSS 更新
        run: |
          while read source url; do
            curl -s "${url}" | grep 'item' | while read item; do
              title=$(echo "${item}" | xmllint --xpath 'string(//title)' -)
              link=$(echo "${item}" | xmllint --xpath 'string(//link)' -)
              pubDate=$(echo "${item}" | xmllint --xpath 'string(//pubDate)' -)
              echo "${source}|${title}|${link}|${pubDate}"
            done
          done < rss-sources.txt > rss-updates.txt
      - name: 过滤 RSS 更新
        run: |
          while read line; do
            source=$(echo "${line}" | cut -d'|' -f1)
            title=$(echo "${line}" | cut -d'|' -f2)
            link=$(echo "${line}" | cut -d'|' -f3)
            pubDate=$(echo "${line}" | cut -d'|' -f4)
            if grep -q "${source}" keywords.txt; then
              echo "${title}|${link}|${pubDate}"
            fi
          done < rss-updates.txt > filtered-rss-updates.txt
      - name: 保存到 Notion
        run: |
          cat filtered-rss-updates.txt | while read title link pubDate; do
            curl "https://api.notion.com/v1/pages" \
              -H "Authorization: Bearer ${NOTION_API_KEY}" \
              -H "Content-Type: application/json" \
              -d '{"parent":{"database_id":"${NOTION_DATABASE_ID}"},"properties":{"Name":{"title":[{"text":{"content":"'${title}'"}}]},"URL":{"url":"'${link}'"},"Date":{"date":{"start_date":"'${pubDate}'"}}}}'
          done

设置

在 GitHub Actions 中设置此工作流程之前,您需要:

  1. 为 Notion API 创建一个集成并获取一个集成令牌。
  2. 创建一个 Notion 数据库来管理您的 RSS 源和关键词。
  3. 在 GitHub Actions 中创建工作流程秘密,将 Notion API 密钥和数据库 ID 存储在其中。

完成这些步骤后,您就可以触发工作流程并让其自动管理和过滤您的 RSS 订阅。

好处

自动化 Notion 中的 RSS 订阅和过滤提供了以下好处:

  • 节省时间: 通过自动化订阅管理和过滤过程,您可以节省大量时间,让您专注于更重要的任务。
  • 提高效率: 自动化的工作流程将确保您的 RSS 源和关键词列表是最新的,从而使您能够更有效地关注相关信息。
  • 增强组织性: Notion 的组织功能使您可以轻松管理您的 RSS 订阅,保持它们井井有条。
  • 可定制性: 您可以根据自己的需要和偏好自定义工作流程,例如调整触发频率或添加其他过滤条件。

结论

通过利用 Notion 的强大功能和 GitHub Actions 的自动化能力,我们可以创建一个强大的解决方案来管理和过滤我们的 RSS 订阅。这使我们能够更有效地关注相关信息,节省时间并提高我们的效率。随着我们继续探索技术工具的可能性,我们可以不断改善我们管理和处理信息的方式。