-
-
Notifications
You must be signed in to change notification settings - Fork 0
Usage Steam Workshop
Part of the Usage reference. · ← Previous: Steam Cloud · Next: Friends & chat →
Manage Steam Workshop items (published files) for a game. Except for the local
portion of status, these commands require an active session.
An <ID> is a Workshop published-file id, the numeric id in a Workshop page's URL
(…/sharedfiles/filedetails/?id=1234567890). To find ids in the first place, use
workshop browse. Wherever ids are accepted, a collection id may
be given in its place: by default a collection is expanded to its member items
(recursively, with cycles and duplicates removed), and each member is acted on. Pass
--no-recurse to act on the listed id itself without expanding.
What gets stored. Installing downloads an item's content into
<library>/steamapps/workshop/content/<APP_ID>/<ID>/
and records it in <library>/steamapps/workshop/appworkshop_<APP_ID>.acf, so the Steam
client itself recognises the item as installed. The library is Aurelia's configured Steam
library (see config show).
How content is retrieved. A Workshop item carries an hcontent_file manifest id on the
game's workshop depot. Aurelia downloads it through the same content-server → manifest →
CDN-chunk pipeline used by install (decrypting and decompressing each chunk
with the depot key). This v1 supports SteamPipe items (the modern norm). Legacy
file_url UGC is not yet supported and is rejected with a clear error.
Search/browse a game's Workshop to discover items (and their ids) to subscribe to or
install (PublishedFile.QueryFiles under the hood). This is the entry point when you don't
already know an item's id.
aurelia workshop browse <APP_ID> [-s <TEXT>] [--sort <ORDER>] [--count <N>] [--cursor <C>] [--tag <TAG>]... [--json]
| Option | Description |
|---|---|
-s, --search <TEXT> |
Free-text match on title/description. |
-o, --sort <ORDER> |
Result ordering: trend (default), popular, recent, updated, subscriptions, text. Use text with --search for best relevance. |
-n, --count <N> |
Results per page, 1–100 (default 20). |
-c, --cursor <C> |
Pagination cursor. Pass a previous page's next_cursor. * is the first page (default). |
-t, --tag <TAG> |
Restrict to items carrying this tag (repeatable, all must match). |
The text view is an ID / SIZE / TITLE table, followed by the match total and, when more
results remain, the --cursor value to pass for the next page. The --json output is
{ "app_id", "total", "next_cursor", "items": [ <item object>... ] }, where each item has
the same shape as workshop info. Paging is cursor-based: start at
*, then feed each response's next_cursor back via --cursor until it stops advancing.
aurelia workshop browse 1245620 # trending items
aurelia workshop browse 1245620 --search "hd textures" # search
aurelia workshop browse 1245620 --sort subscriptions --count 50
aurelia workshop browse 1245620 --tag Gameplay --tag Mod --json
aurelia workshop browse 1245620 --cursor "AoJw0Yzg..." # next pageShow metadata for one or more items/collections, fetched in a single batched
PublishedFile.GetDetails call.
aurelia workshop info <ID>... [--json]
The text view prints id, title, owning app, type (item/collection), and, for items,
size and content manifest id, and for collections the member count. The --json output is an
array of objects (a single id still yields a one-element array): { "id", "app_id", "title", "hcontent_file", "file_url", "file_size", "time_updated", "kind" ("Item"|"Collection"), "children": [<id>...] } (children is populated for collections,
empty otherwise, and hcontent_file is 0 for legacy/collection entries).
aurelia workshop info 1234567890
aurelia workshop info 1234567890 2345678901 --jsonList the Workshop items you're subscribed to for a game (your subscriptions are enumerated, then resolved to metadata).
aurelia workshop list <APP_ID> [--json]
The text view is an ID / SIZE / TITLE table. --json emits the same array of item objects
as workshop info.
aurelia workshop list 1245620
aurelia workshop list 1245620 --jsonDownload one or more items/collections and register them in the workshop manifest. Progress
is streamed to the terminal, and as NDJSON with --json, the same event stream as
install (queued → progress …), followed by one result line per item.
aurelia workshop install <ID>... [--no-recurse] [--json]
| Option | Description |
|---|---|
-R, --no-recurse |
Install only the given ids. Don't expand a collection to its members. |
The per-item --json result line is
{ "event": "result", "id", "app_id", "status": "installed" }. Installing a collection id
(without --no-recurse) installs every member.
aurelia workshop install 1234567890
aurelia workshop install 5000000000 # a collection — installs all its items
aurelia workshop install 9000000000 --no-recurse # the collection entry only, no membersRemove installed items/collections: deletes each item's content directory and its entry in
appworkshop_<APP_ID>.acf. The owning app of each id is resolved via GetDetails (so this
needs a session).
aurelia workshop uninstall <ID>... [--no-recurse] [--json]
| Option | Description |
|---|---|
-R, --no-recurse |
Uninstall only the given ids. Don't expand a collection to its members. |
The --json output is { "uninstalled": [<id>...] }.
aurelia workshop uninstall 1234567890
aurelia workshop uninstall 5000000000 --jsonSubscribe to or unsubscribe from items/collections. By default subscribe only registers
the subscription. Pass --install to also download the content immediately (streaming
progress, as install does).
aurelia workshop subscribe <ID>... [--install] [--no-recurse] [--json]
aurelia workshop unsubscribe <ID>... [--no-recurse] [--json]
| Option | Description |
|---|---|
-i, --install |
(subscribe only) Download the content after subscribing. |
-R, --no-recurse |
Act on the given ids only. Don't expand a collection to its members. |
subscribe --json: { "subscribed": [<id>...], "installed": <bool> }.
unsubscribe --json: { "unsubscribed": [<id>...] }.
aurelia workshop subscribe 1234567890 --install
aurelia workshop subscribe 5000000000 # subscribe to a collection's items
aurelia workshop unsubscribe 1234567890Report, per item, whether it's installed, subscribed, and whether an update is
available (the installed content manifest differs from the current hcontent_file). The
installed set is read locally from appworkshop_<APP_ID>.acf. Subscription and
update state are best-effort: they need the network, and are omitted/blank when offline.
aurelia workshop status <APP_ID> [--json]
The text view is an ID / INSTALLED / SUBSCRIBED / UPDATE / TITLE table over the union of
installed and subscribed items. The --json output is { "app_id", "items": [{ "id", "title", "installed", "subscribed", "update_available" }] }.
aurelia workshop status 1245620
aurelia workshop status 1245620 --jsonRate a Workshop item thumbs-up or thumbs-down (PublishedFile.Vote).
aurelia workshop rate <ID> <up|down> [--json]
The --json output is { "id", "vote": "up"|"down", "status": "rated" }.
aurelia workshop rate 1234567890 up
aurelia workshop rate 1234567890 down --jsonRead the comments on a Workshop item's public comment thread
(Community.GetCommentThread).
aurelia workshop comments <ID> [--count <N>] [--start <N>] [--json]
| Option | Description |
|---|---|
-n, --count <N> |
How many comments to fetch, 1–100 (default 20). |
-s, --start <N> |
Index of the first comment to fetch, for paging (default 0). |
The text view prints each comment's timestamp, author SteamID, upvote count, and body. The
--json output is { "id", "comments": [{ "id", "author", "timestamp", "text", "upvotes" }] } (author is a SteamID64; id is the comment's gidcomment).
aurelia workshop comments 1234567890
aurelia workshop comments 1234567890 --count 50 --start 50
aurelia workshop comments 1234567890 --jsonPost a comment to a Workshop item's comment thread (Community.PostCommentToThread).
aurelia workshop comment <ID> <TEXT> [--json]
Quote the text if it contains spaces. The --json output is
{ "id", "comment_id", "status": "posted" } (comment_id is the new comment's
gidcomment).
aurelia workshop comment 1234567890 "Great mod, thanks!"
aurelia workshop comment 1234567890 "Works perfectly" --jsonUsers
-
Usage
- Global behavior
- Authentication
- Library
- Store & discovery
- Collections
- Install & maintenance
- Launching
- Depots & branches
- Downgrade & pinning
- Steam Cloud
- Steam Workshop
- Friends & chat
- Inventory & market
- Configuration
- Proton & Wine
- Windows Steam runtime
- Luxtorpeda plugin
- umu-launcher plugin
- Launch scripts
- Session daemon
- Files & locations
- Exit codes & logging
- Windows Steam Runtime
Maintainers
Architecture