网页归档自动化:使用GitHub Actions定时运行ArchiveBox

网页归档自动化:使用GitHub Actions定时运行ArchiveBox

【免费下载链接】ArchiveBox 🗃 Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more... 【免费下载链接】ArchiveBox 项目地址: https://gitcode.com/gh_mirrors/ar/ArchiveBox

你是否曾经遇到过收藏的网页突然消失、链接失效的情况?或者需要定期备份重要的在线内容却苦于手动操作繁琐?本文将带你通过GitHub Actions实现ArchiveBox的自动化定时运行,轻松解决网页归档难题。读完本文,你将能够:

  • 理解ArchiveBox的基本工作原理
  • 配置GitHub Actions实现定时归档任务
  • 自定义归档参数满足不同需求
  • 解决常见的自动化归档问题

ArchiveBox简介

ArchiveBox是一个开源的自托管网页归档工具,它可以将URL、浏览器历史记录、书签等内容保存为HTML、JS、PDF、媒体文件等多种格式,确保网页内容的长期可访问性。

ArchiveBox Logo

核心功能模块包括:

准备工作

安装ArchiveBox

在开始自动化之前,需要先在本地环境安装ArchiveBox。可以通过以下命令快速安装:

# 克隆仓库
git clone https://gitcode.com/gh_mirrors/ar/ArchiveBox
cd ArchiveBox

# 初始化ArchiveBox
archivebox init

初始化过程会创建必要的文件夹结构,如归档目录、源文件目录和日志目录,具体实现可查看archivebox/cli/archivebox_init.py中的代码:

print(f'    + ./{CONSTANTS.ARCHIVE_DIR.relative_to(DATA_DIR)}, ./{CONSTANTS.SOURCES_DIR.relative_to(DATA_DIR)}, ./{CONSTANTS.LOGS_DIR.relative_to(DATA_DIR)}...')
Path(CONSTANTS.SOURCES_DIR).mkdir(exist_ok=True)
Path(CONSTANTS.ARCHIVE_DIR).mkdir(exist_ok=True)
Path(CONSTANTS.LOGS_DIR).mkdir(exist_ok=True)

准备链接列表

创建一个文本文件links.txt,每行包含一个需要归档的URL:

https://example.com
https://github.com/ArchiveBox/ArchiveBox
https://docs.archivebox.io/

GitHub Actions配置

创建工作流文件

在项目根目录下创建.github/workflows/archive.yml文件,用于定义GitHub Actions工作流。

工作流配置详解

以下是一个完整的GitHub Actions工作流配置,实现每周日凌晨2点自动运行ArchiveBox归档任务:

name: 自动网页归档

on:
  schedule:
    - cron: '0 2 * * 0'  # 每周日凌晨2点运行
  workflow_dispatch:  # 允许手动触发

jobs:
  archive:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v4
        
      - name: 设置Python环境
        uses: actions/setup-python@v5
        with:
          python-version: '3.10'
          
      - name: 安装ArchiveBox依赖
        run: |
          python -m pip install --upgrade pip
          pip install -e .
          
      - name: 初始化ArchiveBox
        run: archivebox init
        
      - name: 添加链接并归档
        run: archivebox add < links.txt
        
      - name: 提交归档结果
        uses: stefanzweifel/git-auto-commit-action@v5
        with:
          commit_message: '自动归档更新'
          file_pattern: 'archive/* sources/*'

自定义归档参数

ArchiveBox提供了多种参数来自定义归档行为,可以在GitHub Actions工作流中根据需求调整。

归档深度控制

使用--depth参数控制递归归档的深度,目前支持0或1(0表示只归档指定URL,1表示同时归档页面中的链接):

archivebox add --depth=1 < links.txt

相关代码实现见archivebox/cli/archivebox_add.py

assert depth in (0, 1), 'Depth must be 0 or 1 (depth >1 is not supported yet)'

添加标签分类

使用--tag参数为归档内容添加标签,便于后续检索:

archivebox add --tag=tech,news < links.txt

更新已有归档

使用--update参数更新已存在的归档内容:

archivebox add --update < links.txt

相关代码实现见archivebox/cli/archivebox_add.py

update: bool=not ARCHIVING_CONFIG.ONLY_NEW,

查看归档结果

本地查看

归档完成后,可以通过以下命令启动本地服务器查看归档内容:

archivebox server

然后访问http://127.0.0.1:8000即可查看归档结果。

GitHub Pages部署

可以进一步配置GitHub Actions,将归档结果部署到GitHub Pages,实现线上访问。修改工作流文件,添加部署步骤:

- name: 生成静态站点
  run: archivebox list --html > index.html
  
- name: 部署到GitHub Pages
  uses: peaceiris/actions-gh-pages@v4
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    publish_dir: ./

常见问题解决

依赖安装问题

如果遇到依赖安装问题,可以参考官方文档中的安装指南:docs/

归档失败处理

查看日志文件定位问题:archivebox/logs/

存储空间管理

定期清理不需要的归档内容,或配置外部存储:archivebox/filestore/

总结与展望

通过GitHub Actions与ArchiveBox的结合,我们实现了网页内容的自动化定时归档,有效解决了网页易逝性的问题。未来可以进一步扩展:

  • 添加邮件通知功能,在归档完成后发送报告
  • 实现归档内容的全文搜索
  • 集成OCR技术提高归档内容的可检索性

希望本文能帮助你构建自己的自动化网页归档系统,永保重要网络内容的可访问性!

如果有任何问题或建议,欢迎查阅官方文档README.md或提交issue。

本文档遵循ArchiveBox开源项目规范,所有代码示例均来自项目源码,确保可追溯性和可维护性。

【免费下载链接】ArchiveBox 🗃 Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more... 【免费下载链接】ArchiveBox 项目地址: https://gitcode.com/gh_mirrors/ar/ArchiveBox

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值