Markdown फ्रंटमैटर
फ्रंटमैटर Markdown फाइलों के शीर्ष पर YAML, JSON या TOML फॉर्मेट में मेटा डेटा जोड़ने की सुविधा है। यह दस्तावेज़ मेटाडेटा, कॉन्फ़िगरेशन और टैक्सोनॉमी को संग्रहीत करने के लिए उपयोग किया जाता है।
फ्रंटमैटर क्या है?
मूल अवधारणा
फ्रंटमैटर Markdown दस्तावेज़ सामग्री से पहले मेटा डेटा ब्लॉक है, आमतौर पर YAML फॉर्मेट में:
---
title: "मेरा दस्तावेज़"
author: "लेखक नाम"
date: 2023-11-20
tags: [markdown, frontmatter, yaml]
description: "यह एक फ्रंटमैटर उदाहरण है।"
---
# दस्तावेज़ सामग्री यहाँ शुरू होती हैफ्रंटमैटर का उद्देश्य
- मेटा डेटा: शीर्षक, लेखक, तिथि, विवरण
- कॉन्फ़िगरेशन: पेज-विशिष्ट सेटिंग्स और लेआउट
- टैक्सोनॉमी: टैग, श्रेणियाँ, कीवर्ड
- SEO: मेटा टैग और खोज अनुकूलन डेटा
- प्रकाशन: स्थिति, दृश्यता, अनुमतियाँ
YAML फ्रंटमैटर सिंटैक्स
मूल संरचना
---
# स्ट्रिंग मान
title: "दस्तावेज़ शीर्षक"
author: लेखक नाम
# बूलियन मान
published: true
draft: false
# संख्यात्मक मान
version: 1.0
priority: 10
# तिथि
date: 2023-11-20T10:30:00Z
updated: 2023-11-25
# सूचियाँ
tags: [markdown, frontmatter, yaml]
categories: [दस्तावेज़ीकरण, तकनीकी लेखन]
# नेस्टेड ऑब्जेक्ट
seo:
description: "SEO विवरण यहाँ"
keywords: [कीवर्ड1, कीवर्ड2]
# मल्टीलाइन स्ट्रिंग
description: |
यह एक मल्टीलाइन विवरण है।
कई पंक्तियाँ शामिल हो सकती हैं।
इंडेंटेशन संरक्षित रहता है।
---
दस्तावेज़ सामग्री यहाँ।मान प्रकार
1. स्ट्रिंग्स
# एकल उद्धरण
title: 'एकल उद्धरण शीर्षक'
# डबल उद्धरण
subtitle: "डबल उद्धरण उपशीर्षक"
# बिना उद्धरण (यदि कोई विशेष वर्ण नहीं)
author: लेखक नाम
# मल्टीलाइन
long_description: |
यह मल्टीलाइन विवरण है।
प्रत्येक पंक्ति अलग पैराग्राफ नहीं है।
यह नया पैराग्राफ है।2. बूलियन और नल
published: true
draft: false
featured: yes
hidden: no
# नल मान
thumbnail: null
excerpt: ~3. संख्याएँ
version: 1.2
priority: 5
weight: 10.5
year: 20234. सूचियाँ
# इनलाइन सूची
tags: [markdown, yaml, frontmatter]
# ब्लॉक सूची
categories:
- दस्तावेज़ीकरण
- तकनीकी लेखन
- वेब विकास
# नेस्टेड सूचियाँ
authors:
- name: मुख्य लेखक
email: main@example.com
- name: योगदानकर्ता
email: contrib@example.com5. ऑब्जेक्ट्स
seo:
title: "SEO-अनुकूलित शीर्षक"
description: "मेटा विवरण"
image: "/images/og-image.jpg"
keywords: [कीवर्ड1, कीवर्ड2]
social:
twitter: "@उपयोगकर्ता"
github: "username/repo"
linkedin: "प्रोफ़ाइल URL"फ्रंटमैटर प्रोसेसिंग
प्रोसेसर समर्थन
विभिन्न Markdown प्रोसेसर फ्रंटमैटर को अलग-अलग तरीके से संभालते हैं:
| प्रोसेसर | फ्रंटमैटर समर्थन | आउटपुट फॉर्मेट |
|---|---|---|
| Marked.js | सीमित | मेटा ऑब्जेक्ट |
| Markdown-it | प्लगइन के माध्यम से | JSON ऑब्जेक्ट |
| Gray-matter | पूर्ण | YAML/JSON/TOML |
| Front-matter | Node.js | मेटा + सामग्री |
| Hugo | अंतर्निहित | टेम्प्लेट वेरिएबल |
| Jekyll | अंतर्निहित | Liquid वेरिएबल |
Gray-matter के साथ प्रोसेसिंग
const matter = require('gray-matter');
const fs = require('fs');
const file = fs.readFileSync('document.md', 'utf8');
const { data, content } = matter(file);
console.log('मेटा डेटा:', data);
console.log('सामग्री:', content);
// नया फाइल बनाएँ
const newFile = matter.stringify(content, data, { delimiter: '---' });
fs.writeFileSync('processed.md', newFile);उदाहरण आउटपुट:
// data (मेटा)
{
title: 'मेरा दस्तावेज़',
author: 'लेखक नाम',
date: '2023-11-20T00:00:00.000Z',
tags: [ 'markdown', 'frontmatter' ],
seo: { description: 'SEO विवरण' }
}
// content (Markdown)
'# दस्तावेज़ सामग्री\n\nयह दस्तावेज़ की मुख्य सामग्री है।'उपयोग के मामले
1. ब्लॉग पोस्ट मेटा
---
title: "Markdown फ्रंटमैटर गाइड"
author: "तकनीकी लेखक"
date: 2023-11-20
updated: 2023-11-25
excerpt: "फ्रंटमैटर के उपयोग और लाभों का अवलोकन।"
tags: [markdown, frontmatter, yaml, blogging]
categories: [दस्तावेज़ीकरण, तकनीकी लेखन]
image: "/images/frontmatter-guide.jpg"
reading_time: 8
---
# परिचय
फ्रंटमैटर ब्लॉगिंग के लिए आवश्यक है...2. API दस्तावेज़ीकरण
---
title: "उपयोगकर्ता API संदर्भ"
version: "2.0"
group: "उपयोगकर्ता प्रबंधन"
description: "उपयोगकर्ता CRUD ऑपरेशन के लिए API एंडपॉइंट्स।"
authentication: "Bearer Token"
rate_limit: 100
endpoints:
- path: "/users"
method: "GET"
summary: "सभी उपयोगकर्ताओं को सूचीबद्ध करें"
- path: "/users/{id}"
method: "GET"
summary: "विशिष्ट उपयोगकर्ता प्राप्त करें"
---
# उपयोगकर्ता API
## सभी उपयोगकर्ताओं को प्राप्त करें
GET /users3. उत्पाद दस्तावेज़ीकरण
---
title: "उत्पाद 2.0 रिलीज़ नोट्स"
product: "वेब अनुप्रयोग"
version: "2.0.0"
release_date: 2023-11-20
previous_version: "1.5.3"
breaking_changes: true
new_features: 15
bug_fixes: 8
authors:
- name: "प्रमुख डेवलपर"
role: "लीड डेवलपर"
- name: "डिज़ाइनर"
role: "UI/UX डिज़ाइनर"
changelog:
- type: "added"
description: "नया डैशबोर्ड इंटरफेस"
- type: "fixed"
description: "लॉगिन बग ठीक किया"
---
# उत्पाद 2.0 रिलीज़ नोट्स
## नए फीचर्स
### उन्नत डैशबोर्ड
- रीयल-टाइम एनालिटिक्स
- कस्टमाइज़ेबल विज़ुअलाइज़ेशन
- ड्रैग-एंड-ड्रॉप लेआउट4. SEO-अनुकूलित पेज
---
title: "Markdown फ्रंटमैटर सर्वोत्तम प्रथाएँ"
description: "2023 में Markdown फ्रंटमैटर का प्रभावी उपयोग कैसे करें।"
keywords: [markdown, frontmatter, yaml, seo, blogging]
image: "/images/seo-frontmatter.jpg"
canonical_url: "https://example.com/frontmatter-best-practices"
robots: "index, follow"
sitemap_priority: 0.8
change_frequency: "monthly"
author:
name: "SEO विशेषज्ञ"
url: "https://example.com/author/seo-expert"
publish_date: 2023-11-20
last_modified: 2023-11-25
og:
title: "Markdown फ्रंटमैटर SEO टिप्स"
description: "SEO के लिए फ्रंटमैटर का उपयोग कैसे करें"
image: "/images/og-frontmatter.jpg"
type: "article"
twitter:
card: "summary_large_image"
creator: "@seoexpert"
---
# Markdown फ्रंटमैटर SEO सर्वोत्तम प्रथाएँ
फ्रंटमैटर SEO को कैसे सुधार सकता है...उन्नत फ्रंटमैटर सुविधाएँ
1. कस्टम फील्ड्स
---
# कस्टम व्यवसाय फील्ड्स
client_id: "CLT-12345"
project_phase: "discovery"
budget_estimate: 50000
team_members:
- role: PM
name: प्रोजेक्ट मैनेजर
- role: Designer
name: UI डिज़ाइनर
- role: Developer
name: फ्रंटएंड डेवलपर
# विश्लेषण मेट्रिक्स
read_time: 12
complexity_level: advanced
technical_tags: [api, database, security]
# A/B टेस्टिंग
variant: "A"
conversion_goal: "sign_up"
tracking_id: "UA-123456-1"
---
# प्रोजेक्ट विश्लेषण रिपोर्ट2. शर्तलॉजिक फ्रंटमैटर
कुछ प्रोसेसर शर्तलॉजिक समर्थन करते हैं:
---
title: "उत्पाद तुलना"
layout: comparison
data:
products:
- name: उत्पाद A
price: 999
features: [फीचर1, फीचर2]
- name: उत्पाद B
price: 1299
features: [फीचर1, फीचर2, फीचर3]
conditions:
show_pricing: true
enable_comparison: true
highlight_best_value: true
---
# उत्पाद तुलना तालिका3. नेस्टेड और जटिल संरचनाएँ
---
project:
name: "वेब अनुप्रयोग रीडिज़ाइन"
timeline:
start: 2023-12-01
end: 2024-03-31
milestones:
- date: 2023-12-15
name: "आवश्यकताएँ संग्रह"
- date: 2024-01-15
name: "डिज़ाइन पूरा"
- date: 2024-02-28
name: "विकास पूरा"
- date: 2024-03-15
name: "टेस्टिंग और QA"
budget:
total: 150000
allocation:
design: 30000
development: 80000
testing: 20000
contingency: 20000
team:
roles:
- title: प्रोजेक्ट मैनेजर
responsibilities: [समयरेखा प्रबंधन, स्टेकहोल्डर संचार]
- title: UI/UX डिज़ाइनर
responsibilities: [वायरफ्रेम, विज़ुअल डिज़ाइन]
- title: फ्रंटएंड डेवलपर
responsibilities: [React विकास, रिस्पॉन्सिव डिज़ाइन]
- title: बैकएंड डेवलपर
responsibilities: [API विकास, डेटाबेस डिज़ाइन]
- title: QA इंजीनियर
responsibilities: [टेस्ट केस, बग ट्रैकिंग]
contact:
project_lead: project@company.com
stakeholders: stakeholders@company.com
risks:
- level: high
description: "तीसरे पक्ष API निर्भरता"
mitigation: "वैकल्पिक प्रदाता मूल्यांकन"
- level: medium
description: "टीम सदस्यता परिवर्तन"
mitigation: "क्रॉस-ट्रेनिंग और दस्तावेज़ीकरण"
---
# प्रोजेक्ट प्रबंधन दस्तावेज़फ्रंटमैटर प्रोसेसिंग टूल
1. Gray-matter (Node.js)
const matter = require('gray-matter');
const yaml = require('js-yaml');
function processFrontmatter(filePath) {
const content = fs.readFileSync(filePath, 'utf8');
const { data, content: body } = matter(content, {
delimiters: ['---', '---'], // फ्रंटमैटर डिलिमिटर
engines: {
yaml: s => yaml.load(s, { schema: yaml.JSON_SCHEMA })
}
});
return {
metadata: data,
body: body.trim(),
excerpt: data.excerpt || body.split('\n')[0],
readingTime: calculateReadingTime(body)
};
}
function calculateReadingTime(text) {
const words = text.split(/\s+/).length;
const minutes = Math.ceil(words / 200); // 200 शब्द प्रति मिनट
return `${minutes} मिनट पढ़ने का समय`;
}2. Front-matter (Python)
import frontmatter
import yaml
def process_markdown_file(filepath):
with open(filepath, 'r', encoding='utf-8') as f:
post = frontmatter.load(f)
metadata = post.metadata
content = post.content
print(f"शीर्षक: {metadata.get('title', 'अज्ञात')}")
print(f"लेखक: {metadata.get('author', 'अज्ञात')}")
print(f"टैग: {metadata.get('tags', [])}")
return {
'metadata': metadata,
'content': content,
'word_count': len(content.split())
}
# उपयोग
result = process_markdown_file('post.md')3. Hugo टेम्प्लेट एकीकरण
Hugo में फ्रंटमैटर डेटा टेम्प्लेट में उपयोग करें:
<!-- layouts/_default/single.html -->
<article class="post">
<header>
<h1>{{ .Title }}</h1>
<div class="meta">
<span class="author">{{ .Params.author | default .Site.Author.name }}</span>
<time>{{ .Date.Format "2006-01-02" }}</time>
{{ if .Params.tags }}
<ul class="tags">
{{ range .Params.tags }}
<li><a href="{{ "/tags/" | relURL }}{{ . | urlize }}">{{ . }}</a></li>
{{ end }}
</ul>
{{ end }}
</div>
</header>
{{ if .Params.image }}
<img src="{{ .Params.image | relURL }}" alt="{{ .Title }}">
{{ end }}
<div class="content">
{{ .Content }}
</div>
{{ if .Params.reading_time }}
<footer>
<p>पढ़ने का समय: {{ .Params.reading_time }}</p>
</footer>
{{ end }}
</article>सामान्य समस्या समाधान
1. YAML सिंटैक्स त्रुटियाँ
❌ गलत:
title: मेरा शीर्षक # उद्धरण गायब
tags: [markdown, yaml # कोमा गायब
✅ सही:
title: "मेरा शीर्षक"
tags: [markdown, yaml]2. फ्रंटमैटर डिलिमिटर मुद्दे
❌ समस्या: गलत डिलिमिटर
====
title: "शीर्षक"
====
✅ समाधान: मानक डिलिमिटर
---
title: "शीर्षक"
---3. नेस्टेड ऑब्जेक्ट त्रुटियाँ
❌ गलत:
seo:
description: विवरण
keywords: [कीवर्ड] # गलत इंडेंटेशन
✅ सही:
seo:
description: विवरण
keywords: [कीवर्ड]4. डेटा प्रकार मिश्रण
❌ गलत:
version: "1.0" # स्ट्रिंग के बजाय नंबर
priority: true # बूलियन के बजाय नंबर
✅ सही:
version: 1.0
priority: 10उन्नत कॉन्फ़िगरेशन
1. वैकल्पिक फॉर्मेट (JSON, TOML)
JSON फ्रंटमैटर
{
"title": "JSON फ्रंटमैटर उदाहरण",
"author": "JSON लेखक",
"date": "2023-11-20",
"tags": ["json", "frontmatter", "alternative"],
"config": {
"layout": "default",
"theme": "light"
}
}TOML फ्रंटमैटर
title = "TOML फ्रंटमैटर उदाहरण"
author = "TOML लेखक"
date = 2023-11-20
[tags]
markdown = true
frontmatter = true
toml = true
[config]
layout = "default"
theme = "dark"2. शर्तलॉजिक और टेम्प्लेटिंग
कुछ प्रोसेसर शर्तलॉजिक समर्थन करते हैं:
---
title: "शर्तलॉजिक फ्रंटमैटर"
draft: false
# शर्तलॉजिक
if: published
layout: "post"
else
layout: "draft"
# टेम्प्लेट वेरिएबल
custom:
header: "कस्टम हेडर"
footer: "कस्टम फूटर"
---
# सामग्री3. मल्टी-फाइल फ्रंटमैटर
कई फाइलों के लिए साझा फ्रंटमैटर:
# _config.yml (साझा कॉन्फ़िग)
site:
title: "मेरा Markdown साइट"
description: "उन्नत Markdown उदाहरण"
theme: "custom"
# individual-post.md
---
title: "व्यक्तिगत पोस्ट"
extends: "_config.yml"
date: 2023-11-20
---
# पोस्ट सामग्रीसंबंधित संसाधन
सारांश
फ्रंटमैटर Markdown दस्तावेज़ों को मेटा डेटा, कॉन्फ़िगरेशन और टैक्सोनॉमी के साथ समृद्ध करने का शक्तिशाली तरीका है। YAML फॉर्मेट की सादगी और लचीलापन इसे ब्लॉगिंग, दस्तावेज़ीकरण और सामग्री प्रबंधन के लिए आदर्श बनाता है।
मुख्य लाभ:
- संगठन: मेटा डेटा को संरचित रूप से संग्रहीत करें
- स्वचालन: प्रोसेसिंग और टेम्प्लेटिंग को सुगम बनाएँ
- SEO: खोज इंजन के लिए महत्वपूर्ण डेटा प्रदान करें
- पुन: उपयोग: साझा कॉन्फ़िगरेशन और टेम्प्लेट्स
सही फ्रंटमैटर उपयोग के साथ, Markdown दस्तावेज़ न केवल सामग्री बल्कि मेटाडेटा प्रबंधन के लिए भी एक पूर्ण समाधान बन जाते हैं।