如何在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渲染逻辑:
- 安装依赖:
npm install mwparserfromhell-wasm - 编写渲染组件
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>
- 在页面中直接引入使用:
--- 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
相关产品推荐
相关产品推荐

