MCPcopy Index your code
hub / github.com/PicGo/PicGo-Core

github.com/PicGo/PicGo-Core @v3.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.0.0 ↗ · + Follow
825 symbols 2,189 edges 120 files 16 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Special thanks to:

Warp sponsorship

Warp, the intelligent terminal for developers

Available for MacOS, Linux, & Windows


PicGo-Core

standard GitHub Build Status npm PicGo Convention node

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.

Extension points exported contracts — how you extend this code

IServerManager (Interface)
(no doc) [2 implementers]
src/types/index.ts
ProcessEnv (Interface)
(no doc)
src/custom-env.d.ts
EvaluatePluginConfigOptions (Interface)
(no doc)
src/utils/pluginConfig.ts
UploadResultItem (Interface)
(no doc)
src/lib/Server/routes.ts
GetOptions (Interface)
(no doc)
src/plugins/commander/get.ts
MockCommand (Interface)
(no doc)
src/__tests__/unit/getCommands.spec.ts
ICloudManager (Interface)
(no doc) [1 implementers]
src/types/index.ts
WrapPluginConfigForCliOptions (Interface)
(no doc)
src/utils/pluginConfig.ts

Core symbols most depended-on inside this repo

translate
called by 243
src/i18n/index.ts
getConfig
called by 85
src/core/PicGo.ts
error
called by 65
src/lib/Logger.ts
warn
called by 57
src/lib/Logger.ts
get
called by 32
src/utils/db.ts
register
called by 29
src/lib/Commander.ts
has
called by 28
src/utils/db.ts
set
called by 25
src/utils/db.ts

Shape

Function 334
Method 264
Interface 138
Class 72
Enum 17

Languages

TypeScript100%

Modules by API surface

src/types/index.ts58 symbols
src/lib/Cloud/services/AlbumService.ts37 symbols
src/lib/Cloud/services/multipart/MultipartUploadService.ts35 symbols
src/lib/Server/index.ts34 symbols
src/lib/ConfigSyncManager/errors.ts27 symbols
src/lib/UploaderConfigManager.ts26 symbols
src/utils/common.ts20 symbols
src/utils/interfaces.ts17 symbols
src/plugins/uploader/picgoCloud.ts17 symbols
src/lib/ConfigSyncManager/index.ts17 symbols
src/core/PicGo.ts17 symbols
src/lib/ConfigSyncManager/types.ts16 symbols

For agents

$ claude mcp add PicGo-Core \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact