# BlogHelper for Publishing Chinese Blog Posts and Uploading Images

> BlogHelper is an Electron tray application for Chinese-language writers who publish to Zhihu, Jianshu, CNBlogs, CSDN, Juejin, SegmentFault, and OSC. It also handles clipboard images, local image uploads, HTML conversion, and article cleanup, but its usefulness depends on third-party platform changes.

**onblog/BlogHelper** — 帮助国内用户写作的托盘助手，一键发布本地文章到主流博客平台（知乎、简书、博客园、CSDN、SegmentFault、掘金、开源中国），剪贴板图片一键上传至图床（新浪、Github、图壳、腾讯云、阿里云、又拍云、七牛云）

- Repository: https://github.com/onblog/BlogHelper
- Stars: 1,966 · Forks: 282
- Language: JavaScript
- License: AGPL-3.0
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/onblog-bloghelper

## BlogHelper's Publishing and Media Workflow

BlogHelper is a JavaScript Electron application that keeps its main interface in the operating system tray. Its central use case is reducing the number of separate browser and file operations involved in preparing a local article for publication. The README specifically lists one-click publishing to Zhihu, Jianshu, CNBlogs, CSDN, Juejin, SegmentFault, and OSC.

The media workflow has two distinct entry points. A writer can upload the first image currently held in the clipboard, then replace the clipboard contents with the resulting image URL. The project also supports finding local images referenced by an article, uploading them to an image host, and replacing the local references with hosted links. The documented image services include Sina, SM.MS, GitHub, Imgur, Qiniu, Tencent Cloud, Alibaba Cloud, and Upyun.

This design is aimed at an individual author rather than a server-side publishing service. The README describes it as a tray assistant for domestic Chinese users and presents it as a collection of writing shortcuts. The repository does not document a public BlogHelper API, a scheduled publishing system, or a multi-user workflow.

## Electron Architecture and Package Configuration

The package metadata identifies `blog-helper` as the package, with `src/main.js` as the main entry point. The start script runs `electron .`, while the distribution script removes the `dist` directory and invokes `electron-builder`. The build configuration names the application `写作助手`, uses the application ID `com.github.onblog.bloghelper`, and defines targets for macOS, Windows, and Linux.

The dependency list shows that BlogHelper is not limited to a single upload implementation. It includes `axios`, `node-fetch`, `request`, `form-data`, `mime-types`, and `picgo`. It also includes `html-to-md`, `jsdom`, `marked`, `jquery`, `lodash`, `querystring`, `urlencode`, and `electron-store`. Those packages indicate a desktop application that handles HTTP requests, local configuration, HTML parsing, Markdown conversion, and file or image operations. The README confirms that HTML-to-Markdown conversion and local article organization are supported features.

The package version is `1.0.30`. The dependency versions are fixed or ranged in `package.json`, including Electron `11.5.0` and `electron-builder` `^22.1.0`. Because the README lists Node `17.7.1` and npm `8.5.4` for local development, an adopter should check whether those versions still match the host operating system and required package downloads.

## Local Installation and First Launch

The README provides one local development command after cloning the repository. The `mirror` script changes npm and Electron-related registry settings before installation. The reader should expect the command to clone the repository, enter its directory, configure those mirrors, install dependencies, and start Electron.

```bash
git clone https://github.com/onblog/BlogHelper.git && cd BlogHelper && npm run mirror && npm install && npm run start
```

The first launch should open the desktop application rather than a browser page, according to the package script and the tray-oriented description. The README does not document the exact tray menu sequence for creating a blog-platform account connection or configuring an image host. It also does not provide example credentials, required permission names, or a documented test article. Those details therefore cannot be inferred from the README or `package.json`.

For packaged use, the README directs users to the GitHub releases page. The repository has no GitHub releases listed, so that download path may not currently provide a packaged binary. The source-based command remains the only installation procedure documented in the README.

## Image Hosting and Clipboard Automation Boundaries

The clipboard workflow is narrower than a general image management system. According to the README, BlogHelper uploads the first image in the clipboard and updates the clipboard with the image link. That behavior is useful for quickly inserting a hosted asset while writing, but it does not describe support for multiple clipboard images, clipboard history, or automatic selection based on file type.

The local-image workflow is broader. BlogHelper can upload images referenced in a local article and replace those references with hosted URLs. It also lists one-click network-image download and local article organization. The README does not state whether replacement is reversible, whether original files are moved, how duplicate images are handled, or whether failed uploads are retried. Those are meaningful boundaries for a writer who wants predictable file management.

The supported image-host list is a feature list, not evidence that every provider is currently operational. The README also warns that blog-site APIs change and require ongoing adaptation. A writer should therefore test the exact image host and publishing destination before moving a complete article workflow onto BlogHelper.

## Markdown Conversion and Tray-Based Utilities

BlogHelper includes document conversion and editing utilities beyond publishing. The README says it can convert HTML files to Markdown text files, including batch conversion. The package dependency `html-to-md` supports that stated feature, while `jsdom` is present for working with HTML in a JavaScript environment. The repository does not specify conversion options, handling for embedded images, or whether tables, code blocks, and custom HTML are preserved.

The application also formats copied code by aligning the left side of pasted code. That feature targets a specific annoyance described by the README: copied code can acquire unwanted indentation when pasted. It is a formatting shortcut, not a documented formatter with selectable languages or configuration files.

Other documented utilities include opening a WeChat article formatting page and opening image-material websites. These are launcher functions rather than built-in publishing integrations. The tray design is useful when the user wants quick access without a main window, but it also means that adoption depends on the quality of the tray menu and the external sites or services it opens. The README does not document a command-line interface, so the documented interaction model is graphical.

## Limitations of Multi-Platform Publishing

The largest technical limitation is the dependency on external blog-platform interfaces. The README directly states that each blog website's API interfaces continually change and require ongoing code maintenance. That makes BlogHelper different from a publishing system built around documented, versioned platform APIs. A site can change its authentication flow, editor behavior, image handling, or submission rules without a corresponding BlogHelper release.

The repository has no GitHub releases, and the last push was on 2026-10-03. The push date indicates recent repository activity, but it does not by itself confirm that every supported platform is currently working. The documentation also gives no compatibility matrix for individual platforms, no status page, and no migration notes for breaking changes.

BlogHelper is therefore the wrong tool when publishing must run unattended, when a team needs repeatable server-side automation, or when failures require an auditable delivery process. It is also a weak choice for a writer who wants a documented, stable SDK rather than a desktop adapter for changing websites.

## GPL-3.0-only and Extension Work

The project is distributed under `GPL-3.0-only`, both in `package.json` and in the README. The README states that projects using this project's code must also be released under the GPL. That is a license implication for anyone planning to reuse or modify the code, not a statement that every deployment arrangement has the same practical result. Review the license text and the intended distribution model before incorporating BlogHelper code into another application.

The repository includes `src/plugins/README.md` as a plugin development guide. This indicates an extension path for people who want to add tray-based shortcuts, although the README does not describe the plugin API, lifecycle, permissions, or packaging process. A plugin-based workflow may reduce the need to modify the main application, but it does not remove the need to check the guide and the repository's current source.

The README asks for JavaScript and Node.js contributors because platform changes require continued adaptation. That request indicates a maintenance burden centered on external integrations, rather than a simple local file utility. Adoption decisions should account for that recurring work.

## BlogHelper Compared With a Local Markdown Editor

A local Markdown editor and BlogHelper solve different parts of the writing process. An editor is primarily concerned with composing, reviewing, and saving a document locally. BlogHelper adds distribution and asset operations: it can publish an article to supported Chinese platforms, upload clipboard or referenced images, replace local image references, convert HTML files, and open formatting resources.

The trade-off is that BlogHelper reaches more external systems and therefore carries more integration risk. A local editor has fewer platform-specific dependencies, while BlogHelper's value comes from reducing repetitive publishing and image-upload steps across several destinations. BlogHelper does not document team permissions, editorial workflows, versioned content pipelines, or an automation interface, so it should not be treated as a full publishing operations platform.

## Conclusion

BlogHelper fits individual Chinese writers who regularly publish across several supported platforms and want tray-based image and formatting utilities. It is a poor fit for teams requiring documented APIs, automated publishing, or dependable long-term integrations. Verify the current platform adapters, image-host credentials, Electron compatibility, and GPL-3.0-only obligations before adopting it.

## FAQ

### How do I install and run BlogHelper locally?

The README documents cloning the repository, running `npm run mirror`, installing dependencies, and starting the app. The start script in `package.json` is `electron .`, so the repository is launched as an Electron application.

### Which blog platforms does BlogHelper support?

The README lists Zhihu, Jianshu, CNBlogs, CSDN, Juejin, SegmentFault, and OSC. The project warns that platform APIs change and require continued adaptation.

### What can BlogHelper do with clipboard and local images?

It can upload the first clipboard image and replace the clipboard contents with its link. It can also upload local images referenced by an article and replace those references with hosted URLs, using the image services listed in the README.

## Sources

- [Issues](https://github.com/onblog/BlogHelper/issues)
- [License: GPL-3.0](https://github.com/onblog/BlogHelper/blob/master/LICENSE)
- [onblog/BlogHelper on GitHub](https://github.com/onblog/BlogHelper)
- [README](https://github.com/onblog/BlogHelper/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/onblog-bloghelper
