{"id":9110,"date":"2026-08-25T01:58:43","date_gmt":"2026-08-25T01:58:43","guid":{"rendered":"https:\/\/metaphaze.com\/gazettebuilder\/?page_id=9110"},"modified":"2026-08-25T01:58:43","modified_gmt":"2026-08-25T01:58:43","slug":"documentation-zip-import","status":"publish","type":"page","link":"https:\/\/metaphaze.com\/gazettebuilder\/documentation-zip-import\/","title":{"rendered":"Documentation: ZIP Import"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Gazette Builder can import batches of Entries from a ZIP package containing Markdown files and optional media.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GazetteBuilder \u2192 Import<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"633\" height=\"599\" src=\"https:\/\/metaphaze.com\/gazettebuilder\/wp-content\/uploads\/2026\/08\/GazetteBuilderImport.png\" alt=\"\" class=\"wp-image-9111\" srcset=\"https:\/\/metaphaze.com\/gazettebuilder\/wp-content\/uploads\/2026\/08\/GazetteBuilderImport.png 633w, https:\/\/metaphaze.com\/gazettebuilder\/wp-content\/uploads\/2026\/08\/GazetteBuilderImport-300x284.png 300w\" sizes=\"auto, (max-width: 633px) 100vw, 633px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A package can carry the Entry article itself together with its GazetteBuilder metadata, semantic references, relationships, Story information, dates, and images.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is useful when worldbuilding material is prepared outside WordPress or when a large number of related Entries need to be added together.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Before Building an Import Package<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before importing, configure the Gazette to recognize the classifications and relationships used by the package.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In particular:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create any required <strong>Entry Types<\/strong> under <strong>GazetteBuilder \u2192 Entry Types<\/strong>.<\/li>\n\n\n\n<li>Create any required <strong>Relationship Definitions<\/strong> under <strong>GazetteBuilder \u2192 Relationship Definitions<\/strong>.<\/li>\n\n\n\n<li>Make sure Relationship Names in the package use the same canonical names defined in GazetteBuilder.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">For example, if an imported Entry contains:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">Located in: Syrtis Major<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">then <code>Located in<\/code> should already be defined as a Relationship Definition with appropriate Source and Target Entry Types.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The import package should describe the Entries. It should not be relied upon to create the Gazette&#8217;s relationship vocabulary.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Package Structure<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A Gazette Builder ZIP package uses an <code>entries<\/code> directory for Markdown Entry files and may include a <code>media<\/code> directory for images.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A typical package looks like:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">gazette-package\/<br>    manifest.yml<br>    entries\/<br>        LOC-SYRTIS-MAJOR.md<br>        LOC-DORCHESTER-HOTEL.md<br>        CHAR-MAJOR-HARCOURT.md<br>    media\/<br>        syrtis-major-map.jpg<br>        dorchester-hotel.jpg<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The importer looks for Markdown files under:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">entries\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">and media files under:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">media\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Subdirectories within <code>media<\/code> may also be used.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The current importer does not require the <code>manifest.yml<\/code> to create the Entries; the Entry Markdown files contain the information used for the actual import. A manifest may still be included to identify or describe the package.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">One Markdown File Per Entry<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each Entry is stored as a <code>.md<\/code> file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The file has two parts:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>YAML-style <strong>front matter<\/strong> containing Gazette Builder metadata.<\/li>\n\n\n\n<li>The <strong>Entry article<\/strong> written below it.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">---<br>id: LOC-DORCHESTER-HOTEL<br>title: Dorchester Hotel<br>entry_kind: location<br>summary: A respectable hotel used by visitors and expedition parties in Syrtis Major.<br>featured_media: media\/dorchester-hotel.jpg<br>relationships:  <br>- \"Located in: Syrtis Major\"  <br>- \"In District: Hotel District\"<br>---<br>The [[Dorchester Hotel]] is one of the principal colonial hotelsin [[Syrtis Major]].<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The opening and closing lines containing three hyphens separate the metadata from the Entry article:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">---<br>metadata here<br>---<br>article begins here<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Required Front Matter<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each imported Entry requires:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">id:<br>title:<br>entry_kind:<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The Entry must also contain article content.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A minimal Entry therefore looks like:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">---<br>id: LOC-SYRTIS-MAJOR<br>title: Syrtis Major<br>entry_kind: location<br>---<br>Syrtis Major is a major Martian canal city.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><code>id<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The stable GazetteBuilder Entry ID.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">id: LOC-SYRTIS-MAJOR<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">IDs must be unique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the ZIP contains the same Entry ID more than once, validation stops the import.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An Entry ID that already exists in GazetteBuilder also prevents the package from being imported as a new Entry.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>title<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The reader-facing Entry title.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">title: Syrtis Major<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Titles containing punctuation can be quoted:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">title: \"EXP-01: Syrtis Major\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><code>entry_kind<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Entry Type slug.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">entry_kind: location<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use the Entry Type already configured in Gazette Builder.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typical values might include:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">location<br>character<br>organization<br>document<br>event<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">but the actual valid types are determined by the Entry Types configured on the site.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Optional Entry Metadata<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The importer can also accept Gazette Builder metadata used by the Entry editor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>summary<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A short Entry summary.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">summary: A major Martian canal city and the principal urban center of the British colony.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><code>campaign_date<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The reader-facing date or date description.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">campaign_date: \"10 January 1889\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Campaign Date is descriptive and is separate from the machine-sortable Timeline Sort value.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>timeline_sort<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A sortable date\/time used for chronological placement.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">timeline_sort: \"1889-01-10T09:00:00\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The value must be recognizable as a valid date\/time value.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>derived_from<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Identifies another Entry from which this Entry is derived.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">derived_from: LOC-SYRTIS-MAJOR<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><code>release_date<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sets GazetteBuilder&#8217;s Release Date.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">release_date: \"2026-09-01T08:00:00-04:00\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A future Release Date keeps an otherwise published Entry unavailable until that date is reached.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Leaving the field out or empty creates the normal undated-release behavior described in the <strong>Publication &amp; Release<\/strong> documentation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>status<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Controls the WordPress publication state of the imported Entry.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">status: publish<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If no status is supplied, the current importer defaults imported Entries to:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">publish<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Supported WordPress statuses in the current importer are:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">publish<br>draft<br>pending<br>private<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Story Metadata<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Entries can be imported directly into a Story sequence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">story_id: EXP-01<br>sequence_position: 3<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">All Entries belonging to the same Story use the same <code>story_id<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each must have its own sequence position.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Story landing Entry uses:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">sequence_position: 0<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If an imported Story has no position <code>0<\/code>, validation reports a blocking error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Duplicate positions within the same Story are also blocking errors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Story landing Entries may also carry the Story display fields supported by Gazette Builder, including:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">unit_label:<br>completion_mode:<br>continuing_text:<br>ending_text:<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Story configuration is covered separately under <strong>Stories<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Semantic References in the Article<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Semantic references use exactly the same syntax in imported Markdown as they do in the WordPress Entry editor:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">[[Target Entry]]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">The expedition established itself in [[Syrtis Major]]and took rooms at the [[Dorchester Hotel]].<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Do not convert these into Markdown hyperlinks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gazette Builder needs the semantic markup itself:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">[[Syrtis Major]]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">rather than:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">[Syrtis Major](some-wordpress-url)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">During Preview \/ Validate, Gazette Builder examines semantic references and reports whether they currently resolve.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An unresolved semantic reference is not necessarily an error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">[[Hobo Club]]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">may deliberately refer to an Entry that will be created later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The preview reports such references as warnings rather than blocking the entire package.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Relationships<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Relationships are declared in front matter as a list:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">relationships:<br>  - \"Located in: Syrtis Major\"<br>  - \"In District: Residency\"<br>  - \"On Street: Bedford Road\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use one relationship per list item.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each item follows the same format used in the Entry editor:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">Relationship Name: Target Entry<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The text before the colon must use the canonical <strong>Name<\/strong> configured in Gazette Builder&#8217;s Relationship Definitions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The text after the colon is the target Entry.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Define Relationships Before Importing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Relationship Definitions should already exist before importing Entries that use them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, before importing:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">relationships:<br>  - \"In District: Residency\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GazetteBuilder should already contain a Relationship Definition whose Name is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">In District<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">with suitable Source and Target Entry Types.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This keeps the import package and the Gazette&#8217;s controlled relationship vocabulary synchronized.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Import Preview reports the relationship declarations it discovers so they can be inspected before the package is committed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Featured Media<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A Featured Image can be supplied through the <code>featured_media<\/code> field.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">featured_media: media\/dorchester-hotel.jpg<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The referenced file must exist inside the ZIP&#8217;s <code>media<\/code> directory:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">media\/<br>    dorchester-hotel.jpg<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">During import, Gazette Builder transfers the file into the normal WordPress Media Library and assigns the resulting WordPress attachment as the Entry&#8217;s Featured Image.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The package path is therefore only an import-time reference.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Entry does not continue depending on:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">media\/dorchester-hotel.jpg<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">after import. WordPress takes ownership of the imported media file.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Inline Images<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Images can also appear inside the Entry article using normal Markdown image syntax:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">![Description](media\/syrtis-major-map.jpg)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">The city's principal canal intersections are shown below.![Map of Syrtis Major](media\/syrtis-major-map.jpg)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The corresponding package structure is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">media\/<br>    syrtis-major-map.jpg<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Gazette Builder locates that image in the package, imports it into the WordPress Media Library, and replaces the package reference with the imported WordPress media URL in the Entry.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Image Text<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The text inside the square brackets is used by the importer for the image&#8217;s descriptive text.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">![Test map of Syrtis Major](media\/syrtis-major-map.jpg)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">produces an imported image using:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">Test map of Syrtis Major<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">as the image text and also presents that text as the figure caption.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the square brackets are empty:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">![](media\/syrtis-major-map.jpg)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">no caption is generated.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Media Paths<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The clearest form is to use the full package-relative path:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">media\/syrtis-major-map.jpg<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Gazette Builder normalizes media references and can also match an unambiguous file by filename, but using the complete <code>media\/...<\/code> path is preferable because it makes the package explicit and avoids ambiguity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do not use external URLs as package media references.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do not use paths that attempt to move outside the package, such as:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-pale-cyan-blue-background-color has-background\">..\/images\/map.jpg<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Using the Same Image More Than Once<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The same packaged media file can be referenced by more than one Entry or used as both Featured Media and inline content.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gazette Builder maintains an import-time media cache so the same package asset can be reused rather than imported as a separate WordPress attachment every time it is encountered.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Missing Images Are Blocking Errors<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every referenced package image must actually be present.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If an Entry contains:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">featured_media:<br> media\/missing-map.jpg<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">![Map](media\/missing-map.jpg)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">and that file is not found in the ZIP, Preview \/ Validate reports the missing media as a blocking error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The package must be corrected before import.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Complete Example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A Location Entry using most of the common import features might look like:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">---<br>id: LOC-DORCHESTER-HOTEL<br>title: Dorchester Hotel<br>entry_kind: location<br>summary: A respectable colonial hotel used by visitors and expedition parties in Syrtis Major.<br>campaign_date: \"January 1889\"<br>timeline_sort: \"1889-01-01T00:00:00\"<br>release_date: \"2026-08-24T20:00:00-04:00\"<br>status: publish<br>featured_media: media\/dorchester-hotel.jpg<br>relationships:<br>  - \"Located in: Syrtis Major\"<br>  - \"In District: Hotel District\"<br>---<br>The [[Dorchester Hotel]] serves travelers arriving in[[Syrtis Major]].![Dorchester Hotel](media\/dorchester-hotel.jpg)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Its ZIP contains:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">entries\/<br>    LOC-DORCHESTER-HOTEL.md<br>media\/<br>    dorchester-hotel.jpg<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Before importing it, GazetteBuilder should already have:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-light-green-cyan-background-color has-background\">Entry Type:Location<br>Relationship Definitions:<br>Located in<br>In District<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Preview \/ Validate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To inspect a package:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open <strong>GazetteBuilder \u2192 Import<\/strong>.<\/li>\n\n\n\n<li>Select the ZIP file.<\/li>\n\n\n\n<li>Select <strong>Preview \/ Validate<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Gazette Builder examines the package without creating the Entries.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The current preview reports information including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>number of Entries discovered;<\/li>\n\n\n\n<li>new Entries;<\/li>\n\n\n\n<li>duplicate Entry IDs;<\/li>\n\n\n\n<li>Entry IDs that already exist;<\/li>\n\n\n\n<li>missing required metadata;<\/li>\n\n\n\n<li>Entry validation errors;<\/li>\n\n\n\n<li>Story membership;<\/li>\n\n\n\n<li>missing Story position <code>0<\/code>;<\/li>\n\n\n\n<li>duplicate Story positions;<\/li>\n\n\n\n<li>missing media;<\/li>\n\n\n\n<li>semantic references that resolve;<\/li>\n\n\n\n<li>unresolved semantic references;<\/li>\n\n\n\n<li>ambiguous semantic references;<\/li>\n\n\n\n<li>relationship declarations discovered;<\/li>\n\n\n\n<li>blocking errors;<\/li>\n\n\n\n<li>warnings.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Blocking Errors and Warnings<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>blocking error<\/strong> prevents the package from being imported.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Examples include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>missing <code>id<\/code>, <code>title<\/code>, or <code>entry_kind<\/code>;<\/li>\n\n\n\n<li>duplicate Entry IDs;<\/li>\n\n\n\n<li>an Entry ID that already exists;<\/li>\n\n\n\n<li>invalid required Story structure;<\/li>\n\n\n\n<li>duplicate Story sequence positions;<\/li>\n\n\n\n<li>invalid Release Date or Timeline Sort values;<\/li>\n\n\n\n<li>missing referenced media.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>warning<\/strong> does not necessarily make the package invalid.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The most common example is an unresolved semantic reference to an Entry that has not yet been created.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Commit the Import<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If Preview \/ Validate finds no blocking errors, GazetteBuilder displays the <strong>Import Entries<\/strong> step.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The current interface requires the validated ZIP file to be selected again before committing the import.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After re-selecting the package:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Select <strong>Import Entries<\/strong>.<\/li>\n\n\n\n<li>Gazette Builder creates the Entries.<\/li>\n\n\n\n<li>Referenced media is imported into the WordPress Media Library.<\/li>\n\n\n\n<li>Inline image references are rewritten to the imported WordPress media.<\/li>\n\n\n\n<li>Featured Media is assigned.<\/li>\n\n\n\n<li>Entry metadata, Story data, semantic markup, and relationships are retained.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">If an error occurs while creating the package, GazetteBuilder attempts to roll back Entries and media already created by that import rather than intentionally leaving a partial package behind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Good Import Workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For a larger import, the safest order is:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create the required Entry Types.<\/li>\n\n\n\n<li>Create the required Relationship Definitions.<\/li>\n\n\n\n<li>Build the Markdown Entry files.<\/li>\n\n\n\n<li>Add semantic references to the article text.<\/li>\n\n\n\n<li>Add relationship declarations to front matter.<\/li>\n\n\n\n<li>Add Story and chronology metadata where needed.<\/li>\n\n\n\n<li>Place all referenced images in <code>media\/<\/code>.<\/li>\n\n\n\n<li>ZIP the package.<\/li>\n\n\n\n<li>Run <strong>Preview \/ Validate<\/strong>.<\/li>\n\n\n\n<li>Correct all blocking errors and review warnings.<\/li>\n\n\n\n<li>Re-run Preview \/ Validate until the package is clean.<\/li>\n\n\n\n<li>Commit the import.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Gazette Builder can import batches of Entries from a ZIP package containing Markdown files and optional media. Open: GazetteBuilder \u2192 Import A package can carry the Entry article itself together with its GazetteBuilder metadata, semantic references, relationships, Story information, dates, and images. This is useful when worldbuilding material is prepared outside WordPress or when a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9110","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/metaphaze.com\/gazettebuilder\/wp-json\/wp\/v2\/pages\/9110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/metaphaze.com\/gazettebuilder\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/metaphaze.com\/gazettebuilder\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/metaphaze.com\/gazettebuilder\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/metaphaze.com\/gazettebuilder\/wp-json\/wp\/v2\/comments?post=9110"}],"version-history":[{"count":1,"href":"https:\/\/metaphaze.com\/gazettebuilder\/wp-json\/wp\/v2\/pages\/9110\/revisions"}],"predecessor-version":[{"id":9112,"href":"https:\/\/metaphaze.com\/gazettebuilder\/wp-json\/wp\/v2\/pages\/9110\/revisions\/9112"}],"wp:attachment":[{"href":"https:\/\/metaphaze.com\/gazettebuilder\/wp-json\/wp\/v2\/media?parent=9110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}