Skip to main content

godot-asset-library-client

CI Coverage PyPi license: AGPL v3 downloads

Interact with the Godot Asset Library

This script retrieves all the information already available in the project to upload a Godot asset into the Godot asset library.

Features

  • Smart metadata gathering: do not duplicate metadata again
  • Reuses existing pending edits of the same release in the library to enable corrections.
  • Smart behaviour with existing previews
  • Shortcuts for previews hosted youtube or the repository
  • Easy integration in Github actions or any other CI/CD platform.

Install

pip install godot-asset-library-client

Usage

  • Define GODOT_ASSET_LIB_USER and GODOT_ASSET_LIB_PASSWORD environment variables. You may use a .env file with them but consider security concerns.

  • Write a yaml metadata file with content similar to this:

# asset-metadata.yaml

asset_id: '6666666' # You will obtain this id after the first publication by hand
category: "1" # 2D Tools. See available values in https://godotengine.org/asset-library/api/configure
project_license: AGPLv3
previews:

# Shortcut for youtube previews
- youtube: AD8awHLpFxs

# Shortcut for media commited in the repository
- repoimage: /screenshots/screenshot1.png
  repothumb: /screenshots/screenshot1-thumb.jpg

# If not shortcutted the preview entry should look like this
- type: image
  link: https://raw.githubusercontent.com/vokimon/godot-dice-roller/refs/heads/main/screenshots/screenshot2.png
  thumbnail: https://raw.githubusercontent.com/vokimon/godot-dice-roller/refs/heads/main/screenshots/screenshot2-thumb.jpg

# These will be concatenated and processed as description
description_files:
- README.md
- CHANGES.md

Then, from the root of your project (where project.godot resides):

godot-asset-library-client upload asset-metadata.yaml

Check that the metadata is correct, and then add the option --do:

godot-asset-library-client upload asset-metadata.yaml --do

Smart metadata guessing

If not explicitly provided, it takes most metadata from existing files in your repository so you don't have to duplicate that.

From project.godot:

  • Project name
  • Project version
  • Project description
  • Project icon
  • Godot version

From local git:

  • Commit hash
  • Current branch
  • Repository hosting (only for supported hostings)
  • Repository name (only for supported hostings)

Supported git hostings are:

  • Github
  • Bitbucket
  • Gitea

If your hosting is not listed, you always can explicit the inferred parameters. Or, better, send a PR to add your hosting. Hostings are defined in git.py and tested in git_test.py. They are quite easy to add but I do not have repositories in all of them to test, so pull requests are very welcome.

Integration with Github Actions

Provided that you already have a working asset-metadata.yaml in your repository you can add a github action to have the extension updated on each release.

Go to Github Your Project / Settings / Secrets and Variables / Actions / Repository secrets. Once there, add your secrets GODOT_ASSET_LIB_USER and GODOT_ASSET_LIB_PASSWORD.

Add this file to your repo:

# .github/workflows/publish.yml
name: Upload Plugin to Godot Asset Library

on:
  release:
    types: [published]
  workflow_dispatch: # this enables on demand execution, useful when the release fails

jobs:
  publish:
    runs-on: ubuntu-latest
    name: Publish new version to asset lib
    steps:

    - name: Checkout
      uses: actions/checkout@v2

    - name: Godot Asset Lib
      shell: bash
      run: |
        echo "GODOT_ASSET_LIB_USER=${{ secrets.GODOT_ASSET_LIB_USER }}" >> .env
        echo "GODOT_ASSET_LIB_PASSWORD=${{ secrets.GODOT_ASSET_LIB_PASSWORD }}" >> .env
        pip install --user godot-asset-library-client
        godot-asset-library-client upload asset-metadata.yaml --do

You may want to remove the --do option until you are sure you are not uploading garbage to the asset library.

TODO

Sure you can help with those:

  • Solve the emoji problem by not removing them. The blacklist is quite limited and fragile. https://github.com/godotengine/godot-asset-library/issues/345
  • Support first upload of a project
  • Auto-identify license available in repository
  • Auto-identify repo name from git remote for non github hostings
  • Auto-identify repo hosting for non github hostings

Metadata

Release files for godot-asset-library-client 0.5.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for godot-asset-library-client 0.5.5
File Size Uploaded
godot_asset_library_client-0.5.5.tar.gz 49.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for godot-asset-library-client 0.5.5
File Interpreter ABI Platform
godot_asset_library_client-0.5.5-py3-none-any.whl Python 3 none any Details

Total release size: 87.5 kB

Release files / godot_asset_library_client-0.5.5.tar.gz

Download URL godot_asset_library_client-0.5.5.tar.gz
Size 49.1 kB
Tags Source
SHA-256 checksum
How to use checksums
59b31349e9434cca2701ce03a8f50426953c7565cd57450c92fab331852d3aa0
BLAKE2b-256 checksum
How to use checksums
cefaaace2f05ac6334e833151557beb4a01bdd6cfa9d3f149007d1ee7f6679ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2025.

Transparency log

Release files / godot_asset_library_client-0.5.5-py3-none-any.whl

Download URL godot_asset_library_client-0.5.5-py3-none-any.whl
Size 38.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
00cc6e8d19c5c94cf6624cb0c40feb4a605f0a549d579680f7f895177efd68f1
BLAKE2b-256 checksum
How to use checksums
fffd2da9cd9c756ccb2b1a8eedb4b4dd972e3b6d709ef7ed83fb5c21f4fdb75f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.5 This release

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page