Formato de archivo de manifiesto

Cada extensión debe tener un archivo manifest.json en su directorio raíz que enumere 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 extensión y las funciones que pueden incluir.

Ejemplos

En los siguientes ejemplos de manifiestos, se muestran la estructura básica del manifiesto y algunas funciones de uso común 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"
  }
}

Cómo registrar una secuencia de comandos de 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 del manifiesto

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

Claves requeridas por la plataforma de extensiones

"manifest_version"
Es un número entero que especifica la versión del formato de archivo de 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"
Cadena que identifica el número de versión de la extensión. Para obtener información sobre el formato de los números de versión, consulta Versión.

Claves requeridas por Chrome Web Store

"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 la localización de 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 Icons.

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.
"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 Acerca de los trabajadores de servicio de extensiones.
"chrome_settings_overrides"
Define anulaciones para la configuración seleccionada de Chrome. Para obtener más información, consulta Cómo anular la configuración de Chrome.
"chrome_url_overrides"
Define anulaciones para las páginas predeterminadas de Chrome. Para obtener más información, consulta Cómo anular las páginas de Chrome.
"commands"
Define 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 restricciones sobre las secuencias de comandos, los diseños y otros recursos que puede usar una extensión. Para obtener más información, consulta la 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 extensión.
"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 contexto de navegación con documentos de origen cruzado.
"declarative_net_request"
Define reglas estáticas para la API de declarativeNetRequest, que permite bloquear y modificar solicitudes de red.
"default_locale"
Cadena que define el idioma predeterminado de una extensión que admite varios parámetros de configuración regional. Por ejemplo, "en" y "pt_BR". Esta clave es obligatoria en las extensiones localizadas y no se debe usar en las extensiones que no están 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 recursos desde la extensión. Para obtener más información, consulta Exportar.
"externally_connectable"
Especifica a qué otras páginas y extensiones se pueden conectar tus extensiones. Para 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 se define, 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, definidas con patrones de coincidencia de URL. El permiso del usuario para estos sitios se solicita en el momento de la instalación. Para obtener más información, consulta Permisos del host.
"import"
Permite importar recursos a la extensión. Para obtener más información, consulta Importar.
"incognito"
Define cómo se comporta la extensión en 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.
"mime_types_handler"
Registra la extensión como controlador para los tipos de MIME admitidos, como application/pdf. Para obtener más información, consulta la API de mimeHandler.
"minimum_chrome_version"
Define la versión de Chrome más antigua que puede instalar tu extensión. El valor debe ser una subcadena de una cadena de versión del navegador Chrome existente, como "107" o "107.0.5304.87". Los usuarios con versiones de Chrome anteriores a la versión mínima verán una advertencia de "No compatible" en Chrome Web Store y no podrán instalar tu extensión. Si agregas esto a una extensión existente, los usuarios cuya versión de Chrome sea anterior no recibirán actualizaciones automáticas de tu 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 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 Omnibox.
"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 Ofrece opciones a los usuarios.
"options_ui"
Especifica una ruta de acceso a un archivo HTML que permite al usuario cambiar las opciones de la extensión desde la página Extensiones de Chrome. Para obtener más información, consulta Opciones de incorporación.
"permissions"
Permite el uso de APIs de extensiones específicas. Consulta Permisos para obtener una explicación general. En las páginas de referencia de las APIs individuales, se indican los permisos que requieren.
"requirements"
Enumera las tecnologías necesarias para usar la extensión. Para obtener una lista de los 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 zona de pruebas. Para obtener más información, consulta Sandbox.
"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 se define, se muestra 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. Para 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"
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"
Cadena que describe la versión de la extensión. Algunos ejemplos son "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"
Define los archivos dentro de la extensión a los que pueden acceder las páginas web o las otras extensiones. Para obtener más información, consulta Recursos accesibles desde la Web.

Teclas opcionales de ChromeOS

"file_browser_handlers"
Proporciona acceso a la API de fileBrowserHandler, que permite que las extensiones accedan al explorador de archivos de ChromeOS.
"file_handlers"
Especifica los tipos de archivos que pueden 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 que las extensiones creen sistemas de archivos que ChromeOS puede usar.
"input_components"
Permite el uso de la API del Editor del método de entrada. Para obtener más información, consulta input_components.