Formato de archivo de manifiesto

Cada extensión debe tener un archivo manifest.json en su directorio raíz que enumera información importante sobre la estructura y el comportamiento de esa extensión. En esta página, se explica la estructura de los manifiestos de extensiones y las funciones que pueden incluir.

Ejemplos

En los siguientes manifiestos de ejemplo, se muestra la estructura básica de los manifiestos y algunas funciones de uso general como punto de partida para crear tu propio manifiesto:

Manifiesto mínimo

{
  "manifest_version": 3,
  "name": "Minimal Manifest",
  "version": "1.0.0",
  "description": "A basic example extension with only required keys",
  "icons": {
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
}

Registra una secuencia de comandos del contenido

{
  "manifest_version": 3,
  "name": "Run script automatically",
  "description": "Runs a script on www.example.com automatically when user installs the extension",
  "version": "1.0",
  "icons": {
    "16": "images/icon-16.png",
    "32": "images/icon-32.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "content_scripts": [
    {
      "js": [
        "content-script.js"
      ],
      "matches": [
        "http://*.example.com//"
      ]
    }
  ]
}

Cómo insertar una secuencia de comandos de contenido

{
  "manifest_version": 3,
  "name": "Click to run",
  "description": "Runs a script when the user clicks the action toolbar icon.",
  "version": "1.0",
  "icons": {
    "16": "images/icon-16.png",
    "32": "images/icon-32.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_icon": {
      "16": "images/icon-16.png",
      "32": "images/icon-32.png",
      "48": "images/icon-48.png",
      "128": "images/icon-128.png"
    }
  },
  "permissions": ["scripting", "activeTab"]
}
{
  "manifest_version": 3,
  "name": "Popup extension that requests permissions",
  "description": "Extension that includes a popup and requests host permissions and storage permissions .",
  "version": "1.0",
  "icons": {
    "16": "images/icon-16.png",
    "32": "images/icon-32.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "action": {
    "default_popup": "popup.html"
  },
  "host_permissions": [
    "https://*.example.com/"
  ],
  "permissions": [
    "storage"
  ]
}

Panel lateral

{
  "manifest_version": 3,
  "name": "Side panel extension",
  "version": "1.0",
  "description": "Extension with a default side panel.",
  "icons": {
    "16": "images/icon-16.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "side_panel": {
    "default_path": "sidepanel.html"
  },
  "permissions": ["sidePanel"]
}

Claves de manifiesto

A continuación, se incluye una lista de todas las claves de manifiesto admitidas.

Claves requeridas por la plataforma de extensiones

"manifest_version"
Un número entero que especifica la versión del formato de archivo manifiesto que usa tu extensión. El único valor admitido es 3.
"name"
Es una cadena que identifica la extensión en Chrome Web Store, el diálogo de instalación y la página Extensiones de Chrome del usuario (chrome://extensions). La longitud máxima es de 75 caracteres. Para obtener información sobre el uso de nombres específicos de la configuración regional, consulta Internacionalización.
"version"
Es una cadena que identifica el número de versión de la extensión. Para obtener información sobre el formato del número de versión, consulta Versión.

Chrome Web Store requiere claves

"description"
Es una cadena que describe la extensión tanto en Chrome Web Store como en la página de administración de extensiones del usuario. La longitud máxima es de 132 caracteres. Para obtener información sobre cómo localizar descripciones, consulta Internacionalización.
"icons"
Uno o más íconos que representan tu extensión. Para obtener información sobre las prácticas recomendadas, consulta Íconos.

Claves opcionales

"action"
Define la apariencia y el comportamiento del ícono de la extensión en la Barra de herramientas de Google. Para obtener más información, consulta chrome.action.
"author"
Especifica la dirección de correo electrónico de la cuenta que se usó para crear la extensión.
"background"
Especifica el archivo JavaScript que contiene el service worker de la extensión, que actúa como controlador de eventos. Para obtener más información, consulta Información sobre los service workers de extensión.
"chrome_settings_overrides"
Define anulaciones para la configuración de Chrome seleccionada. Para obtener más información, consulta Cómo anular la configuración de Chrome.
"chrome_url_overrides"
Define anulaciones para páginas predeterminadas de Chrome. Para obtener más información, consulta Cómo anular páginas de Chrome.
"commands"
Define las combinaciones de teclas dentro de la extensión. Para obtener más información, consulta chrome.commands.
"content_scripts"
Especifica los archivos JavaScript o CSS que se usarán cuando el usuario abra ciertas páginas web. Para obtener más información, consulta Secuencias de comandos de contenido.
"content_security_policy"
Define las restricciones de las secuencias de comandos, los estilos y otros recursos que puede usar una extensión. Para obtener más información, consulta Política de seguridad del contenido.
"cross_origin_embedder_policy"
Especifica un valor para el encabezado HTTP Cross-Origin-Embedder-Policy, que configura la incorporación de recursos de origen cruzado en una página de extensiones.
"cross_origin_opener_policy"
Especifica un valor para el encabezado HTTP Cross-Origin-Opener-Policy, que te permite garantizar que una página de extensión de nivel superior no comparta un grupo de contextos de navegación con documentos de origen cruzado.
"declarative_net_request"
Define reglas estáticas para la API de declarativeNetRequest, que permite el bloqueo y la modificación de las solicitudes de red.
"default_locale"
Una cadena que define el idioma predeterminado de una extensión que admite varias configuraciones regionales. Algunos ejemplos son "en" y "pt_BR". Esta clave es obligatoria en las extensiones localizadas y no debe utilizarse en las extensiones no localizadas. Para obtener más información, consulta Internacionalización.
"devtools_page"
Define las páginas que usan las APIs de DevTools.
"export"
Permite que se exporten los recursos desde la extensión. Para obtener más información, consulta Exporta.
"externally_connectable"
Especifica qué otras páginas y extensiones pueden conectar a tus extensiones. Si deseas obtener más información, consulta "externally_connectable".
"homepage_url"
Es una cadena que especifica una URL para la página principal de la extensión. Si no está definido, la página principal se establece de forma predeterminada en la página de Chrome Web Store de la extensión. Este campo es particularmente útil si alojas la extensión en tu propio sitio.
"host_permissions"
Enumera las páginas web con las que tu extensión puede interactuar, y se define con patrones de coincidencia de URL. El permiso del usuario para estos sitios se solicita durante la instalación. Para obtener más información, consulta Permisos de host.
"import"
Permite importar los recursos a la extensión. Para obtener más información, consulta Importa.
"incognito"
Define cómo se comporta la extensión en el modo Incógnito. Los valores admitidos son "spanning", "split" y "not_allowed". Para obtener más información, consulta Incógnito.
"key"
Especifica el ID de tu extensión para varios casos de uso de desarrollo. Para obtener más información, consulta Clave.
"minimum_chrome_version"
Define la versión de Chrome más antigua que puede instalar tu extensión. El valor debe ser una substring de una string de versión existente del navegador Chrome, como "107" o "107.0.5304.87". Los usuarios que tengan versiones de Chrome anteriores a la mínima ven la advertencia "No compatible" en Chrome Web Store y no podrán instalar tu extensión. Si agregas este parámetro a una extensión existente, los usuarios cuya versión de Chrome sea anterior no recibirán actualizaciones automáticas de la extensión. Esto incluye a los usuarios empresariales en modo efímero.
"oauth2"
Permite el uso de un ID de seguridad de OAuth 2.0. El valor de esta clave debe ser un objeto con las propiedades "client_id" y "scopes". Para obtener más información, consulta el instructivo de OAuth 2.0.
"omnibox"
Permite que la extensión registre una palabra clave en la barra de direcciones de Chrome. Para obtener más información, consulta Cuadro multifunción.
"optional_host_permissions"
Declara permisos de host opcionales para tu extensión.
"optional_permissions"
Declara permisos opcionales para tu extensión.
"options_page"
Especifica una ruta de acceso a un archivo options.html para que la extensión lo use como página de opciones. Para obtener más información, consulta Cómo brindar opciones a los usuarios.
"options_ui"
Especifica una ruta de acceso a un archivo HTML que le permite al usuario cambiar las opciones de extensión desde la página Extensiones de Chrome. Para obtener más información, consulta Opciones incorporadas.
"permissions"
Permite el uso de determinadas APIs de extensión. Consulta Permisos para obtener una explicación general. En las páginas de referencia para APIs individuales, se enumeran los permisos que requieren.
"requirements"
Enumera las tecnologías necesarias para usar la extensión. Para obtener una lista de requisitos admitidos, consulta Requisitos.
"sandbox"
Define un conjunto de páginas de extensión que no tienen acceso a las APIs de extensión ni acceso directo a páginas que no están en la zona de pruebas. Para obtener más información, consulta Zona de pruebas.
"short_name"
Es una cadena que contiene una versión abreviada del nombre de la extensión que se usará cuando el espacio de caracteres sea limitado. La longitud máxima es de 12 caracteres. Si no está definido, se mostrará una versión truncada de la clave "name".
"side_panel"
Identifica un archivo HTML para mostrar en un sidePanel.
"storage"
Declara un esquema JSON para el área de almacenamiento administrada. Si deseas obtener más información, consulta Manifiesto para áreas de almacenamiento.
"tts_engine"
Registra la extensión como un motor de texto a voz. Para obtener más información, consulta la API de ttsEngine.
"update_url"
Es una cadena que contiene la URL de la página de actualizaciones de la extensión. Usa esta clave si alojas tu extensión fuera de Chrome Web Store.
"version_name"
Es una cadena que describe la versión de la extensión. Los ejemplos incluyen "1.0 beta" y "build rc2". Si no se especifica, el valor de “versión” se muestra en la página de administración de extensiones.
"web_accessible_resources"
Definen los archivos de la extensión a los que se puede acceder desde páginas web y otras extensiones. Para obtener más información, consulta Recursos accesibles para la Web.

Claves opcionales de ChromeOS

"file_browser_handlers"
Proporciona acceso a la API de fileBrowserHandler, que permite que las extensiones accedan al navegador de archivos de ChromeOS.
"file_handlers"
Especifica los tipos de archivos que deben controlar las extensiones de ChromeOS. Para obtener más información, consulta los siguientes artículos:file_handlers.
"file_system_provider_capabilities"
Permite el acceso a la API de fileSystemProvider, que permite a las extensiones crear sistemas de archivos que ChromeOS puede usar.
"input_components"
Permite el uso de la API de Input Method Editor. Para obtener más información, consulta input_components.