PicGo/PicGo-Core
:zap:The ultimate image uploading engine. Both CLI & API supports.
项目介绍Project Overview
PicGo-Core 是 PicGo 的命令行与 API 内核,用于图片上传。它同时提供 CLI 与 Node.js 编程接口,支持插件系统、上传器配置管理与本地服务器模式。适用于需要脚本化上传、CI/CD 集成或自定义工具链中嵌入图床功能的场景。注意:需要 Node.js >= 20.19.0 或 >= 22.12.0,低版本不支持 ES Module 稳定特性。
PicGo-Core is the command-line and API core of PicGo for image uploading. It provides both a CLI and a Node.js programmatic interface, supporting a plugin system, uploader configuration management, and a standalone server mode. It suits scripted uploads, CI/CD integration, or embedding image-hosting into custom tooling. Note: it requires Node.js >= 20.19.0 or >= 22.12.0, as older versions lack stable ES Module support.
请帮我了解并安装插件:【PicGo-Core】【https://github.com/PicGo/PicGo-Core】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:PicGo/PicGo-Core
把 PicGo/PicGo-Core 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
PicGo-Core

A tool for image uploading. Both CLI & api supports. It also supports plugin system, please check Awesome-PicGo to find powerful plugins.
More details please see the Homepage of PicGo.
Typora supports PicGo-Core natively.
Installation
PicGo requires Node.js >= 20.19.0 or >= 22.12.0. For older PicGo versions (<= v1.5.x), Node.js >= 16 is sufficient. Cause we need the stability of ES Module support.
Global install
npm install picgo -g
# or
yarn global add picgo
Local install
npm install picgo -D
# or
yarn add picgo -D
Usage
Use in CLI
PicGo uses
SM.MS(S.EE)as the default upload image host.
Show help:
$ picgo -h
Usage: picgo [options] [command]
Options:
-v, --version output the version number
-d, --debug debug mode
-s, --silent silent mode
-c, --config <path> set config path
-p, --proxy <url> set proxy for uploading
-h, --help display help for command
Commands:
install|add [options] <plugins...> install picgo plugin
uninstall|rm <plugins...> uninstall picgo plugin
update [options] <plugins...> update picgo plugin
set <module> [name] [configName] configure config of picgo modules (uploader/transformer/plugin)
upload|u [input...] upload, go go go
use [module] [name] [configName] use module (uploader/transformer/plugin) of picgo
get get current picgo module config (uploader/transformer/plugins)
i18n [lang] change picgo language
uploader manage uploader configurations
server [options] run PicGo as a standalone server
login [token] login to cloud.picgo.app
logout logout from cloud.picgo.app
cloud manage PicGo Cloud
help [command] display help for command
Upload a picture from path
picgo upload /xxx/xx/xx.jpg
Upload a picture from clipboard
picture from clipboard will be converted to
png
picgo upload
Thanks to vs-picgo && Spades-S for providing the method to upload picture from clipboard.
Run as a server
picgo server -p 36677 -h 127.0.0.1
Login to PicGo Cloud
picgo login
# or
picgo login <token>
Logout from PicGo Cloud
picgo logout
Check PicGo Cloud login status
Use picgo cloud auth status to inspect the current PicGo Cloud login state without triggering an interactive login. The check is non-blocking: when there is no local token it returns immediately without any network request.
picgo cloud auth status
# machine-readable output
picgo cloud auth status --format json
The command sets a process exit code so it can be used in scripts:
| Status | Meaning | Exit code |
|---|---|---|
logged_in |
Token is valid | 0 |
logged_out |
No local token | 1 |
invalid |
Token exists but is rejected by the server (401) | 2 |
error |
Probe failed (network / server error) | 3 |
The --format json output is a single line, e.g.:
{"status":"logged_in","loggedIn":true,"user":"someone","plan":1}
Inspect current module config
Use picgo get to read the currently selected picgo modules. Each subcommand supports --format pretty|json (defaults to pretty).
# current uploader type (resolved as picBed.uploader -> picBed.current -> picgo-cloud)
picgo get uploader
# current transformer (defaults to path)
picgo get transformer
# installed plugins with enabled/disabled state
picgo get plugins
# machine-readable output
picgo get uploader --format json
picgo get plugins --format json
In json mode each command prints a single parseable line, e.g.:
{"uploader":"github"}
{"transformer":"path"}
{"plugins":[{"name":"picgo-plugin-xxx","enabled":true}]}
Manage uploader configs
Since v1.8.0, PicGo-Core supports multiple configurations per uploader. Just like the configuration of the Electron version of PicGo.
You can use picgo set uploader <type> [configName] to configure different uploader configurations.
And you can use picgo use uploader <type> [configName] to switch between different uploader configurations.
For example:
picgo set uploader github Test
picgo use uploader github Test
For more details, you can use picgo uploader -h to check the help of uploader management:
Usage: picgo uploader [options] [command]
Options:
-h, --help display help for command
Commands:
list [type] list uploader configurations
rename <type> <oldName> <newName> rename a config
copy <type> <configName> <newConfigName> copy a config (does not switch current uploader)
rm <type> <configName> remove a config
Init a picgo plugin template
Note: the plugin's template initializer has moved to the standalone picgo-init package.
You can use the following command to init a picgo plugin template:
npx picgo-init plugin <your-plugin-folder>
Use in node project
Common JS
const { PicGo } = require('picgo')
ES Module
import { PicGo } from 'picgo'
API usage example
const picgo = new PicGo()
// upload a picture from path
picgo.upload(['/xxx/xxx.jpg'])
// upload a picture from clipboard
picgo.upload()
Documentation
For more details, you can checkout documentation.
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill