Skip to content

moewah/Typecho-to-Astro

Repository files navigation

Typecho to Astro

从 Typecho 静态博客平滑迁移到 Astro 的一站式解决方案


📋 项目简介

作为站长,当你的网站拥有较庞大的文章及页面体量时,网站搬家总会遇到各类困惑。我们总希望原站点的数据"应搬尽搬",但事实上很多文章本身可能并没有获得多少阅读与共鸣。

基于流量二八原则,支撑一个网站流量的几乎都来自那 20% 的页面。通过 Google Search Console 等平台拉取近一年的数据,可以佐证这个铁铮铮的事实:

"大部分人写的文章没价值,网站的大多数文章没流量。"

本项目提供了一套完整的 Typecho 到 Astro 的迁移工具链,帮助您:

  • 📊 基于流量数据智能筛选高价值页面
  • 💾 批量导出 Typecho 文章数据(含图片和附件)
  • 🤖 AI 智能生成 SEO 优化的 Frontmatter
  • 🚀 无缝适配 Astro + Firefly 主题

✨ 核心功能

  • 智能页面筛选:基于 Google Search Console 数据筛选 TOP 20% 流量页面
  • 数据批量导出:从 Typecho 导出文章、图片、附件等完整数据
  • 格式自动转换:自动转换为适配 Astro + Firefly 主题的 Markdown 格式
  • AI 智能 SEO:基于本地 AI 服务自动生成优化的 Frontmatter 元数据
  • 分类自动整理:智能识别并整理文章分类目录结构

📖 使用指南

一、Google 网站数据汇总与页面筛选

通过 Google Search Console 拉取近一年的网站数据进行导出,依据点击量大小筛选出占比 80% 的页面 URL,叠加近半年的更新的页面 URL,进行 URL 合并、去重,过滤掉分类页面和标签页,存储为 links.txt 格式为每行一个链接。

links.txt 链接格式如下:

https://blog.moewah.com/posts/typecho-to-astro-markdown-migration-tool/
https://blog.moewah.com/posts/markdown-seo-frontmatter-batch-generator/

二、基于 URLs 列表进行 Typecho 数据导出

想从 Typecho 导出有用的文章(包含站内图片和附件),同时希望导出的 md 文章页面能直接适配 Astro 静态博客框架并兼容 Firefly 主题,该怎么办呢?这个项目正是为了解决这个需求。了解更多请查看文章《Typecho文章批量导出到Astro Markdown工具》

📌 注意事项

  • 运行环境:需要 PHP 7.4+,并启用 MySQL PDO 扩展。建议开启 cURL 扩展以获得更好的下载性能。
  • 网站备份:使用前请务必全量备份 Typecho 数据库和网站文件,防止误操作!!!

🔧 配置数据库

下载 Typecho-Export-to-Astro-Firefly-Enhanced.php 文件,并用文本编辑器进行编辑,找到 $dbConfig 数组,修改以下配置:

$dbConfig = [
    'host' => 'localhost',        // Typecho 数据库主机地址
    'name' => 'your_database',     // Typecho 数据库名
    'user' => 'your_username',    // 数据库用户名
    'pass' => 'your_password',    // 数据库密码
    'siteDomain' => 'https://blog.moewah.com',  // 你的网站域名
];

修改完成后将步骤 1 整理的 links.txt 文件和步骤 2 修改后的 Typecho-Export-to-Astro-Firefly-Enhanced.php 文件,上传到你的网站根目录。

🚀 数据导出

SSH 连接你的网站服务器,并执行下面的命令:

# 进入网站根目录(填写为实际的网站根目录路径)
cd /home/wwwroot/blog

# 执行数据导出
php Typecho-Export-to-Astro-Firefly-Enhanced.php

程序运行后,会在当前目录下创建 astro_posts 文件夹(或你指定的目录),其中按分类存放了所有导出的 Markdown 文件,同时图片和附件会按年份/文章 ID 组织在 images/attachments/ 子目录中。

📦 打包下载数据

# 将导出的网站数据文件夹进行打包
zip -r astro_posts.zip ./astro_posts

下载 astro_posts.zip 文件到本地电脑。此时可以解压缩文件后,可将数据拖到基于 Firefly 主题部署 Astro 的 posts 目录下,需要注意的是如果有 attachments 文件夹的,需要把 attachments 文件夹拖到 Astro 的 public 目录。

如果想要继续在此基础上做文档整理和 FrontMatter 优化,请继续看下一步。

三、本地文档智能整理与 FrontMatter 优化

obsdian-seo-plus-enhanced 脚本是为那些 Obsidian、Typera 及本地 Markdown 文档 用户设计的批量 SEO Frontmatter 生成与文章分类整理工具的增强版本。它能够将本地笔记批量转换为适配 Astro 静态网站 并兼容 Firefly 主题 的标准格式,实现从笔记到博客的无缝迁移。

脚本通过本地 AI 服务(支持 Ollama、LM Studio 等 OpenAI API 兼容服务)实现智能化文章分类和 SEO 属性生成,大幅提升内容整理效率。更多使用方法介绍请参考 《Markdown SEO Frontmatter 批量生成器》

🔨 环境准备

  1. 确保 Python 3.7+ 已安装
  2. 启动本地 AI 服务(如 Ollama/LMStudio 等兼容 OpenAI API 的服务)
  3. 确认 AI 服务地址与脚本配置一致

⚙️ 配置调整

  1. 下载并打开 obsdian-seo-plus-enhanced.py 文件
  2. 根据你的需求参考配置说明修改配置项
  3. 特别关注:
    • SOURCE_DIR:设置正确的笔记目录路径
    • CATEGORIES:调整分类列表匹配你的内容领域
    • ORGANIZE_MODE:选择合适的整理模式
    • UPDATE_MODE:选择适合的更新策略
    • API_URL:正确填写本地 AI 服务地址,支持 Ollama、LM Studio 等兼容 OpenAI API 的服务
    • MODEL_NAME:正确填写模型名称

🏃 脚本运行

# 直接运行
python3 obsdian-seo-plus-enhanced.py

# 或添加执行权限后运行
chmod +x obsdian-seo-plus-enhanced.py
./obsdian-seo-plus-enhanced.py

📊 处理流程

脚本执行后将显示:

============================================================
📝 增强版 Obsidian SEO Frontmatter 生成器 - 配置信息
============================================================
📁 源目录: ./astro_posts
📂 目录整理模式: auto
📊 分类数量: 11
📅 日期模式: current
📅 模式: 当前日期
🔄 更新模式: global
🌡️ 温度配置: 0.3
🤖 模型名称: qwen3-vl-30b-a3b-instruct-mlx
============================================================

📂 开始自动分类整理...
🚀 开始自动分类处理 1 个文件...

✅ 结果验证

以下是导出的 Markdown 文件中的 Frontmatter 示例:

---
title: "Markdown SEO Frontmatter 批量生成器"
description: "如何高效将Obsidian笔记转换为Astro博客?本文提供自动化工具,支持AI智能分类与SEO属性生成,一键批量处理Markdown文件并适配Firefly主题,解决内容迁移痛点。"
category: Astro教程
tags:
  - 自媒体运营
  - 实战复盘
  - SEO优化
slug: "markdown-seo-frontmatter-batch-generator"
image: "api"
published: 2026-01-13
updated: 2026-01-15
---

验证步骤:

  1. 检查文件是否按分类移动到正确目录
  2. 验证 Frontmatter 是否完整生成
  3. 查看生成的 SEO 属性是否符合预期

📥 导入到 Astro

将整理好的文件夹直接拖到基于 Firefly 主题部署 Astro 的 posts 目录下,需要注意的是如果有 attachments 文件夹的,需要把 attachments 文件夹拖到 Astro 的 public 目录。

四、附 Astro + Firefly 静态博客安装方法

# 添加 NodeSource 仓库安装 Node.js(以 Node.js 22 为例)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt-get install -y nodejs

# 安装 pnpm
npm install -g pnpm

# 基于 Firefly 主题部署 Astro
pnpm create astro@latest --template CuteLeaf/Firefly

📂 项目结构

Typecho-to-Astro/
├── Typecho-Export-to-Astro-Firefly-Enhanced.php  # Typecho 数据导出脚本
├── obsdian-seo-plus-enhanced.py                   # AI 智能 SEO Frontmatter 生成脚本
├── links.txt                                       # 高价值页面 URL 列表(需自行准备)
├── astro_posts/                                    # 导出的文章数据目录(生成后)
│   ├── [分类名]/                                   # 按分类组织的文章
│   ├── images/                                     # 图片资源
│   └── attachments/                                # 附件资源
└── README.md                                       # 项目说明文档

🔗 相关链接


⚠️ 注意事项

  1. 数据备份:在进行任何迁移操作前,请务必备份原始数据库和文件
  2. 环境兼容:确保 PHP、Python 版本符合要求
  3. AI 服务:使用 AI 功能前需确保本地 AI 服务正常运行
  4. 测试验证:建议先在测试环境验证迁移流程,确认无误后再应用到生产环境

📄 许可证

本项目采用 MIT 协议开源。详情请参阅 LICENSE 文件。


☕ 赞赏/捐赠

如果这个项目对你有帮助,欢迎请我喝杯咖啡:

微信支付

微信支付


Made with ❤️ by GOWAH

About

从 Typecho 静态博客平滑迁移到 Astro 的一站式解决方案

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors