Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计通过

drupal-recipe-contentdrupal 食谱内容

Agent Skill

用于辅助文档、README、Markdown、说明文和内容稿件的整理与改写。它适合让 Agent 提炼结构、补齐章节、统一术语、检查链接或把零散材料整理成可读文档。使用时应保留项目已有事实、命令和路径,不要把未确认的信息写成确定结论;涉及对外文案时,还需要控制语气,避免过度营销或夸大能力。

总安装

404

周安装

17

GitHub Stars

1

下载量

141
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:drupal-recipe-content(drupal 食谱内容)
来源仓库:https://github.com/factorial-io/skills
仓库路径:skills/drupal-recipe-content
安装命令:
npx skills add https://github.com/factorial-io/skills --skill drupal-recipe-content
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/factorial-io/skills --skill drupal-recipe-content

简介

该技能提供 Drupal 配方内容导入功能,支持多语言翻译的完整内容包管理。

  • 适用于默认内容部署,包括术语、节点和媒体实体的 YAML 格式导出导入。
  • 从 Drupal 11.3 开始支持核心内容 API,无需额外模块即可实现内容分发。
  • 安装需从 GitHub 仓库获取,使用前应确认 recipe 目录结构和实体类型配置。
  • 涉及多语言时,YAML 文件内嵌翻译数据,无需单独语言文件。

SKILL.md

Drupal Recipe Content Import

Create Drupal recipes that ship default content (taxonomy terms, nodes, media, etc.) with full multilingual translation support, using Drupal core's built-in content export/import API.

Key Concepts

  • Drupal recipes are primarily for configuration, but since Drupal 11.3, core includes a content export/import API that allows recipes to ship content entities.
  • Content is stored as YAML files in a content/ directory inside the recipe.
  • Translations are included in the exported YAML — no separate files needed per language.
  • On import, entities get new IDs (not the original ones). UUIDs are used internally for dependency resolution.
  • The default_content contrib module is unmaintained and conflicts with Canvas — do not use it. Use core's built-in API instead.

Recipe Structure

my_recipe/
├── recipe.yml
├── config/
│   └── ... (optional config YAML files)
└── content/
    └── taxonomy_term/
        ├── <uuid-1>.yml
        ├── <uuid-2>.yml
        └── ...

Content files are organized by entity type in subdirectories under content/. Each entity is a separate YAML file named by its UUID.

recipe.yml

The recipe.yml does not need to explicitly reference content files. Drupal automatically imports everything in the content/ directory when the recipe is applied.

name: 'My Taxonomy Terms'
description: 'Provides taxonomy terms with EN/DE translations.'
type: 'Content'

recipes:
  # Ensure the vocabulary and translation config exist first
  - core/recipes/tags_taxonomy

install:
  - language
  - content_translation

Make sure any required vocabulary, content type, or field configuration is applied before the content import — either via dependent recipes or config in the same recipe.

Exporting Content

Drupal 11.3+ (Core CLI)

# Export a single taxonomy term
php core/scripts/drupal content:export taxonomy_term 42

# Export with all dependencies (referenced entities, files, etc.)
php core/scripts/drupal content:export taxonomy_term 42 --with-dependencies --dir=recipes/my_recipe/content

# Export a node with dependencies
php core/scripts/drupal content:export node 3 -W --dir=recipes/my_recipe/content

The -W / --with-dependencies flag is important — it ensures referenced entities (images, terms, users) are exported alongside the main entity.

Drush (with default_content as dev-only dependency)

If using Drush, default_content can be a dev-only dependency (not needed in production):

composer require --dev drupal/default_content
drush en -y default_content

# Export to a recipe's content directory
drush dcer taxonomy_term 42 --folder=recipes/my_recipe/content

# Export all terms of a vocabulary (if supported)
drush dcer taxonomy_term --folder=recipes/my_recipe/content

Multilingual Content

Translations are embedded in the exported YAML automatically. When you export an entity that has translations, the YAML will contain all language versions.

Workflow for multilingual recipes

  1. Create content on a reference site with all translations in place
  2. Export with --with-dependencies — translations are included
  3. Place the YAML files in content/<entity_type>/ inside your recipe
  4. When the recipe is applied, entities are created with all their translations

There is no need for separate export/import steps per language.

Gotchas and Tips

  • IDs change on import: Exported entity IDs (tid, nid) will not match on the target site. Drupal assigns new sequential IDs. References between entities are resolved via UUIDs.
  • Config must exist first: The vocabulary, content type, fields, and language configuration must be in place before content is imported. Use the recipes: and install: sections to ensure this.
  • No default_content at runtime: If you used Drush's dcer command for exporting, you only need default_content as a dev dependency. The core import mechanism handles the rest.
  • File assets: When exporting with --with-dependencies, file entities and their physical files are included in the export. They get placed in a file/ subdirectory under content/.
  • Entity references: Cross-references between content entities (e.g., a node referencing taxonomy terms) are resolved by UUID during import, so export order doesn't matter.

Canvas Module Workaround

Sites using the Canvas page builder module require special handling for recipe content imports. Canvas overrides entity reference field types (EntityReferenceItemOverride) and expects UUID strings, but core's exporter outputs integer values for user references (uid 0 and 1).

The Problem

Core's Exporter uses array_map('intval') for user 0/1 references, producing:

content_translation_uid:
  -
    target_id: 1
    target_uuid: 0

Canvas's EntityReferenceItemOverride::getTargetId() receives the integer 0 for target_uuid but expects a string, causing a TypeError during recipe import.

The Fix

After exporting content with content:export, strip the following non-essential fields from both default and translations sections in every content YAML file:

  • content_translation_uid — causes the Canvas TypeError
  • content_translation_source — not needed for import
  • content_translation_outdated — not needed for import
  • revision_translation_affected — auto-computed on save
  • path — only needed if you want specific aliases

A minimal content YAML for a translatable taxonomy term looks like:

_meta:
  version: '1.0'
  entity_type: taxonomy_term
  uuid: 386059fa-39bb-4fa4-ae79-1b204a6d55c6
  bundle: location
  default_langcode: en
default:
  status:
    -
      value: true
  name:
    -
      value: Ingelheim
  weight:
    -
      value: 0
translations:
  de:
    status:
      -
        value: true
    name:
      -
        value: Ingelheim
    weight:
      -
        value: 0

This also applies to nodes and other content entities — always strip content_translation_uid when Canvas is installed.

Alternative Approaches

If core's content API doesn't fit your needs (e.g., you're on Drupal < 11.3), see references/alternatives.md for fallback strategies using custom install hooks or migrations.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.34%
按下载量换算53

Claude

30.39%
按下载量换算43

Cursor

19.29%
按下载量换算27

Gemini CLI

9.39%
按下载量换算13

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills