godot-asset-library-client
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_USERandGODOT_ASSET_LIB_PASSWORDenvironment 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)
| File | Size | Uploaded | |
|---|---|---|---|
| godot_asset_library_client-0.5.5.tar.gz | 49.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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