Content Separation Overview
About 1047 wordsAbout 3 min
2026-09-01
Shirone provides native support for decoupled content separation, allowing you to isolate the theme frontend engine and your personal content repository into two independent Git repositories.
Core Concepts
Think of a personal blog as a residence:
- Theme Code Repository: The architectural framework, plumbing, electrical grid, and rendering pipeline: responsible for UI animations, dark mode, responsive layout, image optimization, and static building—maintained and continuously upgraded upstream;
- Personal Content Repository: The furniture, family photo albums, books, and diary entries: contains all your posts, moments, album photos, data entities, and configuration overlays—under your complete ownership and kept private.
In traditional monolithic repositories, posts, media assets, and theme source code are tightly coupled. Upstream updates frequently trigger painful Git merge conflicts, or inadvertently publish private drafts to public repositories.
Shirone's content separation architecture eliminates these pain points: your content is securely housed in a private content repository, while the theme code repository simply pulls content during builds.
Core Value of Dual-Repo Setup
By decoupling content from theme mechanics, you can author posts and configure your site like using a lightweight headless CMS while seamlessly syncing upstream theme enhancements.
Content Repository Structure (Shirone-Content)
Under the content separation architecture, all personal articles, media assets, structured data, and configuration overlays are organized in an independent repository based on the official template repository LyraVoid/Shirone-Content:
LyraVoid/Shirone-Content Standard Structure
.github
workflows
trigger-build.yml.example# Cross-repo GitHub Actions workflow template
config# Declarative configuration overlay YAML files
site.yaml# Site identity, timezone, colors, and banner wallpaper
profile.yaml# Author avatar, bio, and social links
nav-bar.yaml# Top navigation items and dropdown menus
sidebar.yaml# Sidebar layout and widget configuration
font.yaml# Typography and font subsetting rules
anime.yaml# Anime tracker and sync provider settings
music.yaml# Music player modes and playlist settings
comment.yaml# Twikoo comment system settings
article.yaml# Reading time, typography, and outdated alerts
post-list.yaml# Post list layout and pagination settings
devices.yaml# Hardware devices category rules
projects.yaml# Open source project category rules
skills.yaml# Technical skill graph category rules
timeline.yaml# Career timeline milestones rules
friends.yaml# Friends and blogroll group rules
announcement.yaml# Global floating announcement banner
expressive-code.yaml# Syntax highlighting and code block numbers
fab.yaml# Floating action button (FAB)
image-bloom.yaml# Image bloom visual filter
license.yaml# Creative Commons license settings
llms.yaml# LLM AI search enhancement
umami.yaml# Umami analytics tracking
footer.yaml# Footer copyright and ICP registration
footer.html# Custom injected footer HTML snippet
content# Blog articles, moments, and spec pages
posts# Markdown and MDX posts (e.g., guide.md)
…
moments# Microblog moments (e.g., first-moment.md)
…
spec# Spec pages (about.md, friends.md)
…
data# Structured data entities (TypeScript modules)
anime.ts# Local anime snapshot data
compass.ts# Navigation bookmarks and links
devices.ts# Hardware devices showcase data
friends.ts# Friends and blogroll entities
music.ts# Local music tracks metadata
projects.ts# Open source project portfolio
skills.ts# Skills proficiency ratings
timeline.ts# Major life and career milestones
public# Static assets (Published as-is without re-encoding)
assets# Anime covers and media caches
…
images# Blog images and photo albums
albums# Gallery albums (e.g., SampleAlbum/01.webp + info.json)
…
.gitignore
README.md
shirone.content.json# Content repo metadata identifier & mount manifest
Functional Area Breakdown
config/(Declarative Config Overlays): Lightweight YAML files partitioned by domain, strictly adhering to the minimal overlay principle;content/(Core Authoring Workspace): Houses all Markdown/MDX posts, microblog moments, and spec pages;data/(Structured Data Entities): TypeScript data files managing projects, hardware, skills, timeline events, and friend links;public/(Static Media & Galleries): Stores raw photos, anime cover caches, and gallery albums published directly to the static root;shirone.content.json(Mount Manifest): Declares repository metadata, mount points, and protected file rules.
Dual-Repo Architecture & Automation Pipeline
The synchronization, config merge, and release workflow is fully automated:
Authoring in Content Repo
Draft posts or update YAML configs in your favorite Markdown editor, then push to your private repository.
Automated Pipeline Trigger
A lightweight GitHub Actions workflow sends a dispatch event to the theme repository, or a cloud deploy hook captures the push.
Content Materialization & Config Overlay
The theme repository pulls the content payload and executes recursive deep merge between YAML overlays and theme defaults.
Build & Global Deployment
The theme repository performs Chinese font subsetting, static page generation, asset compression, and deploys to global CDNs.
Key Advantages
1. Conflict-Free Theme Upgrades
Open-source themes evolve rapidly with new features and bug fixes. Under content separation, your posts, albums, and custom configs reside outside the theme repository. Syncing upstream releases yields zero Git merge conflicts.
2. Safeguard Private Content & Drafts
Many authors wish to keep their theme repository open-source while keeping:
- Unfinished drafts and private journals;
- Family albums and high-res photography;
- Private analytics tokens or unpublished metadata.
With dual repos, you can set your content repository to Private and your theme repository to Public, enjoying the open-source ecosystem without exposing sensitive data.
Privacy Isolation
Storing posts in a private repository ensures that even if your theme repository is completely open-source, your drafts and media assets remain strictly confidential.
3. Lightweight Authoring Experience
Authors do not need to install complex Node.js dependencies, build tooling, or bundlers on their writing devices. Simply focus on:
- Authoring Markdown posts and microblogs inside
content/; - Tweaking lightweight YAML configs inside
config/.
Monolithic vs Dual-Repo Comparison
| Metric | Monolithic Setup Starter | Content Separation Recommended |
|---|---|---|
| Target Audience | Beginners seeking single-repository simplicity | Long-term bloggers needing private drafts and seamless theme updates |
| Repo Count | 1 (Code and content coupled) | 2 (Public theme repo + Private content repo) |
| Upgrade Friction | Manual upstream merge with potential Git conflicts | Direct upstream pull with zero merge conflicts |
| Privacy | Drafts exposed if repository is open-sourced | Content repo completely private, theme repo safely public |
| Writing Tools | Must run within the theme project | Independent editing with Obsidian, VS Code, Typora |
| Onboarding | Zero setup, clone and run | One-time setup for access token or deploy hook |
Next Steps
- Head to Initializing Private Content Repo: Learn one-click eject and template initialization
Copyright
Copyright Ownership:matsuzaka-yuki
License under:Attribution 4.0 International (CC-BY-4.0)