ShunCai/QZoneExport for Offline QQ Zone Backups
QQ空间导出助手,用于备份QQ空间的说说、日志、私密日记、相册、视频、留言板、QQ好友、收藏夹、分享、最近访客为文件,便于迁移与保存
At a glance
- What is it?
- QZoneExport is a TypeScript browser extension for exporting QQ Zone content into local files. It includes an offline viewer, resumable backups, and multiple media download methods, with browser-specific storage behavior.
- Who is it for?
- Adopt QZoneExport when you need a local archive of QQ Zone content and can manage browser storage and export directories. Do not choose it as a general-purpose QQ client replacement or assume every media path is automatic.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What QZoneExport Archives
QZoneExport addresses a specific preservation problem: QQ Zone content is distributed across posts, logs, diaries, albums, videos, messages, contacts, favorites, shares, and visitor records. The project presents these as exportable modules rather than as a general QQ management client. It is aimed at people who want a local copy for migration, archiving, or later viewing, including users who want to retain content that is otherwise tied to QQ Space and its web interface.
The scope is broader than a screenshot archive. According to the README, related comments, likes, recent visits, QQ expression images, and avatars can also be downloaded. A backup that preserves only the main text could leave out the surrounding interaction record or the media that gives the archive its meaning. The README also describes an offline viewer with a data dashboard, interaction analysis, a visitor map, and image and video galleries. Those features are part of the exported local experience, not a separate hosted service described by the repository.
The project is intended for personal learning, research, and data backup. The README places responsibility for exported content on the user, including the requirement to export only data that the user is authorized to access. It does not describe server-side synchronization, a replacement QQ API, or a guarantee that every QQ Zone page can be captured in every account configuration.
Extension Architecture and Backup Flow
The repository layout shows a browser extension built around separate entrypoints, core TypeScript logic, and a Vue-based viewer. The extension runs in Chromium-based browsers and Firefox using Manifest V3. Core logic handles collection, downloading, exporting, and storage, while `entrypoints/` contains background code, content scripts, the backup panel, popup, options, and welcome interfaces. The viewer is built separately through Vite and placed into the extension output.
The documented user flow begins with opening QQ Space in a supported browser and logging in. A backup window then presents modules to select. The extension writes text content locally, and media can be handled through one of several methods. Progress is presented in a dedicated backup panel. The README states that the backup can continue in the background without the user remaining on the QQ Space page.
Persistence is described as incremental. The extension skips data that has already been backed up and supports resuming after interruption, which is aimed at large spaces. The documented viewer is opened from an exported `index.html`, so the output is intended to remain usable without the original QQ Space page. The repository also includes `tests/`, Vitest configuration, and TypeScript compilation scripts, indicating that the collection, download, storage, and viewer code are separated into testable or type-checked modules.
Chromium and Firefox Storage Differences
Browser support does not mean identical storage behavior. On Chrome and Edge, the README describes File System Access writing text directly to a directory selected by the user. Firefox uses `downloads.download` and writes to the browser download directory under `QQ空间备份_<uin>/`. The account identifier appears in that Firefox path, which can be useful when maintaining more than one archive.
Media selection is independent from text placement. Chromium users can choose assistant direct writing, the browser downloader, or Aria2. Firefox offers the browser downloader or Aria2, but does not offer assistant direct writing. Direct writing on Chromium places text and media in the selected directory. Browser downloads place media in the browser download directory. Aria2 places media in the Aria2 configuration directory, so the user must merge those files into the backup directory when the viewer expects them there.
Firefox has a similar distinction. With the browser downloader, media and text share the same root under the documented backup directory. With Aria2, media is written elsewhere and must still be merged. The README says ZIP packaging has been removed because text and the viewer are written directly to disk. This is a practical constraint: a completed text export is not necessarily a complete archive until external media has been placed in the expected location.
Installation and First Backup
The README provides official installation channels for Chrome, Edge, 360 Application Market, and Firefox. It also points to GitHub Releases for offline packages. Firefox support is documented as Manifest V3. For development, the repository specifies Node.js 22 or later and npm, with `package-lock.json` present in the repository.
Install the development dependencies with npm. The `postinstall` script runs `wxt prepare` automatically. This prepares the WXT development environment before the extension is built.
npm installFor a local Chromium build, the documented command builds the viewer first and then creates the Chrome production package. The output directory is `.output/QZoneExport-chrome-mv3`.
npm run buildFor Firefox, use the separate build command documented in the README. It also builds the viewer first and produces `.output/QZoneExport-firefox-mv3`.
npm run build:firefoxIn the browser UI, open QQ Space, log in, select the modules in the backup window, and choose a save directory when prompted. After the progress panel finishes, open the saved directory and load `index.html`. On Firefox, the text backup is placed under the browser download directory in `QQ空间备份_<uin>/`. If Aria2 is selected, the README requires the user to merge its media files into that backup directory before expecting the complete local viewer to find them.
Development Checks and Maintenance Cost
The project provides separate commands for TypeScript checks, viewer type checks, unit tests, linting, formatting, development, packaging, and Firefox signing. The documented checks include `npm run compile`, `npm run compile:viewer`, `npm run test`, `npm run lint`, and `npm run format`. These commands provide concrete maintenance paths for contributors working on the extension or viewer.
The package uses WXT, TypeScript, Vue 3, Naive UI, Pinia, ECharts, PhotoSwipe, IndexedDB through `idb`, `chrome.storage`, and `chrome.cookies`. The `package.json` marks the package as private and identifies the license as Apache-2.0. The repository is not archived. Its last push was on 2026-10-01, and the recent release list includes V3.0 dated 2026-08-23. That indicates recent project activity, but it does not remove the ordinary maintenance burden of browser compatibility changes, QQ Space interface changes, dependency updates, and separate Firefox packaging.
The README describes `npm run sign:firefox` as a signing command for a Firefox build. It uses `web-ext sign` with local AMO credentials and is intended for self-distribution. Store publication does not require that step according to the README. Contributors should also account for the fact that Firefox and Chromium builds have different output behavior and that viewer changes require rebuilding the viewer before packaging.
Limitations and Appropriate Alternatives
The clearest limitation is that the export workflow depends on a logged-in QQ Space session and a supported browser. The README does not document a server-side export API, cross-device synchronization, or a guarantee of uninterrupted collection if the browser session expires. It also does not say that Aria2 is bundled or configured automatically. Users selecting Aria2 must already have a working setup and must manage the separate media directory.
Aria2-based workflows can be a better fit for users who already want external download management, retry queues, or control over a download client. QZoneExport itself supports Aria2 as one media path, so the real alternative is not another product named in the repository. It is a separate approach: use the browser downloader for a self-contained local backup, or use Aria2 and accept an additional file-management step. A manual export method could also be appropriate for a small amount of content, but the repository does not document a separate manual exporter, and the viewer depends on the extension's generated structure.
The offline viewer is a feature only if the exported files remain together in the expected layout. Selecting the wrong media path can leave the text archive readable while images or videos remain elsewhere. Before adopting the extension for a large archive, verify the browser, download method, destination directory, and viewer path together rather than checking only whether text was exported.
Editorial conclusion
Adopt QZoneExport when you need a local archive of QQ Zone content and can manage browser storage and export directories. Do not choose it as a general-purpose QQ client replacement or assume every media path is automatic. Verify first that the extension can access the account, that the selected media method matches your browser, and that the resulting `index.html` opens locally with the expected files.
Frequently asked questions
Which browsers support QZoneExport?
The README documents support for Chrome, Edge, other Chromium-based browsers, and Firefox. Firefox support uses Manifest V3, while storage and media options differ between Firefox and Chromium-based browsers.
How do I start the first QZoneExport backup?
Open QQ Space in a supported browser, log in, select modules in the backup window, and click the backup start control. Choose a save directory when prompted, then open `index.html` from the completed backup directory.
Does QZoneExport resume interrupted backups?
The README states that backups support incremental operation and breakpoint continuation. It says already backed up data is skipped and an interrupted backup can continue.
Why are my Aria2 media files not in the QZoneExport viewer directory?
Aria2 writes media to its configured directory, while the text backup is written according to the browser-specific backup location. The README says to merge the external media files into the backup directory yourself.
How do I build the Firefox version?
The documented command is `npm run build:firefox`. It builds the viewer first and outputs the Firefox production package to `.output/QZoneExport-firefox-mv3`.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/shuncai-qzoneexport)Was this useful?