You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Astro中使用Wikitext?迁移Fandom Wiki页面遇转换难题

解决Fandom Wikitext迁移到Astro的方案

方案1:脚本批量转换(降低手动成本)

用Python的mwparserfromhell库解析Wikitext,自定义规则转Markdown,自动处理基础格式,复杂模板单独清理。示例代码:

import mwparserfromhell
from markdownify import markdownify

def wikitext_to_markdown(wikitext):
    # 解析Wikitext内容
    parsed = mwparserfromhell.parse(wikitext)
    # 移除Fandom专属模板(可根据需求调整规则)
    for template in parsed.filter_templates():
        if template.name.lower().startswith("fandom"):
            parsed.remove(template)
    # 先转HTML再转Markdown,适配更多格式
    html_content = parsed.strip_code()
    return markdownify(html_content)

# 批量处理示例
with open("fandom_page.wiki", "r", encoding="utf-8") as f:
    wiki_raw = f.read()
md_result = wikitext_to_markdown(wiki_raw)
with open("astro_page.md", "w", encoding="utf-8") as f:
    f.write(md_result)

这种方式能自动处理标题、列表、粗斜体、普通链接,剩下的特殊布局或模板可以手动调整,比纯手动高效很多。

方案2:Astro中直接渲染Wikitext(跳过转换)

不用转Markdown,直接在Astro里集成Wikitext渲染逻辑:

  1. 安装依赖:npm install mwparserfromhell-wasm
  2. 编写渲染组件WikitextRenderer.astro:
---
import { parse } from 'mwparserfromhell-wasm';

export interface Props {
  content: string;
}

const { content } = Astro.props;
const parsed = parse(content);
const renderHtml = parsed.strip_code();
---

<div set:html={renderHtml} class="wiki-content">
  <!-- 可添加自定义CSS适配Astro主题 -->
</div>
  1. 在页面中直接引入使用:
---
import WikitextRenderer from '../components/WikitextRenderer.astro';
import wikiContent from '../content/fandom_page.wiki?raw';
---

<WikitextRenderer content={wikiContent} />

这种方式完全跳过转换步骤,原生渲染Wikitext,适合格式复杂、转换易出错的页面。

方案3:半自动转换(平衡效率与准确性)

先批量转基础内容,再手动修正特殊格式:

  • 导出所有Fandom页面为Wikitext文件
  • 用批量转换工具处理标题、列表、普通文本等基础格式
  • 逐个检查生成的Markdown文件,修复转换失败的表格、调整内部链接为Astro路由格式、清理残留模板代码

适合页面数量不多,且部分内容存在特殊布局的场景,比纯手动节省大量时间。

内容的提问来源于stack exchange,提问作者0mgRod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:49:54