Ctrl K
ComunidadGuías…

manifest.json

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
{
  "name": "AudioMuse-AI Instant Mix",
  "id": "audiomuseai",
  "author": "AudioMuse",
  "website": "https://github.com/NeptuneHub/AudioMuse-AI-NV-plugin",
  "version": "1.0.0",
  "description": "Replaces the Instant Mix button with AudioMuse-AI recommendations for similar tracks",
  "config": {
    "schema": {
      "type": "object",
      "properties": {
        "apiUrl": {
          "type": "string",
          "title": "AudioMuse-AI API URL",
          "description": "Base URL for the AudioMuse-AI server (e.g., http://192.168.3.203:8000).",
          "default": "http://192.168.3.203:8000"
        },
        "apiToken": {
          "type": "string",
          "title": "API Token",
          "description": "Optional Bearer token for AudioMuse-AI API authentication. Leave blank if not required."
        },
        "server": {
          "type": "string",
          "title": "Server Name",
          "description": "Server name as configured in AudioMuse-AI multi-server setup (e.g. 'Navidrome'). Leave blank if multi-server is not used; the parameter will not be sent."
        },
        "artistSimilarCount": {
          "type": "integer",
          "title": "Number of Similar Artists",
          "description": "Maximum number of similar artists to request from AudioMuse-AI. Default: 10",
          "default": 10,
          "minimum": 1,
          "maximum": 100
        },
        "instantMixSource": {
          "type": "string",
          "title": "Instant Mix Functionality",
          "description": "Which AudioMuse-AI similarity engine powers Instant Mix. 'Lyrics by Song' needs the SemGrove index, 'Hyperbolic Similarity' needs the hyperbolic projection and 'DCLAP' needs the CLAP index built in AudioMuse-AI. Default: Similar Song.",
          "default": "similarSong",
          "oneOf": [
            {
              "const": "similarSong",
              "title": "Similar Song"
            },
            {
              "const": "lyricsBySong",
              "title": "Lyrics by Song"
            },
            {
              "const": "hyperbolic",
              "title": "Hyperbolic Similarity"
            },
            {
              "const": "dclap",
              "title": "DCLAP"
            },
            {
              "const": "songAlchemy",
              "title": "Song Alchemy"
            }
          ]
        },
        "alchemyTemperature": {
          "type": "number",
          "title": "Temperature",
          "description": "Song Alchemy randomness: 0 returns the closest songs, higher values pick more varied songs. Default: 1",
          "default": 1,
          "minimum": 0,
          "maximum": 10
        },
        "eliminateDuplicates": {
          "type": "boolean",
          "title": "Eliminate Duplicates",
          "description": "Remove duplicate tracks from results. Default: true",
          "default": true
        },
        "radiusSimilarity": {
          "type": "boolean",
          "title": "Use Radius Similarity",
          "description": "Use radius-based similarity algorithm. Default: true",
          "default": true
        }
      }
    },
    "uiSchema": {
      "type": "VerticalLayout",
      "elements": [
        {
          "type": "Group",
          "label": "General Configuration",
          "elements": [
            {
              "type": "Control",
              "scope": "#/properties/apiUrl"
            },
            {
              "type": "Control",
              "scope": "#/properties/apiToken",
              "options": {
                "format": "password"
              }
            },
            {
              "type": "Control",
              "scope": "#/properties/server"
            }
          ]
        },
        {
          "type": "Group",
          "label": "Song Instant Mix",
          "elements": [
            {
              "type": "Control",
              "scope": "#/properties/instantMixSource"
            },
            {
              "type": "Control",
              "scope": "#/properties/alchemyTemperature",
              "rule": {
                "effect": "SHOW",
                "condition": {
                  "scope": "#/properties/instantMixSource",
                  "schema": {
                    "const": "songAlchemy"
                  }
                }
              }
            },
            {
              "type": "HorizontalLayout",
              "rule": {
                "effect": "HIDE",
                "condition": {
                  "scope": "#/properties/instantMixSource",
                  "schema": {
                    "enum": [
                      "lyricsBySong",
                      "hyperbolic",
                      "songAlchemy"
                    ]
                  }
                }
              },
              "elements": [
                {
                  "type": "Control",
                  "scope": "#/properties/eliminateDuplicates"
                },
                {
                  "type": "Control",
                  "scope": "#/properties/radiusSimilarity",
                  "rule": {
                    "effect": "HIDE",
                    "condition": {
                      "scope": "#/properties/instantMixSource",
                      "schema": {
                        "const": "dclap"
                      }
                    }
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "Group",
          "label": "Artist Radio",
          "elements": [
            {
              "type": "Control",
              "scope": "#/properties/artistSimilarCount"
            }
          ]
        }
      ]
    }
  },
  "permissions": {
    "config": {
      "reason": "To read plugin configuration in Navidrome UI"
    },
    "http": {
      "reason": "To call AudioMuse-AI API for similar tracks",
      "requiredHosts": [
        "*"
      ]
    }
  }
}