برای رفع مشکل محتوای کمحجم (Thin Content) و تقویت رتبهبندی صفحات سخنرانان در گوگل، زیرساخت کامل دریافت محتوا، متادیتا و اسکیما آماده شده است. تمام فیلدهای جدید اختیاری هستند و با پر شدن آنها، به صورت خودکار در صفحه سخنران، متاتگها و استراکچردیتای Google JSON-LD منعکس میشوند.
تمام اطلاعات در این فایل نگهداری میشوند:
📁 src/data/speakers.json
| نام فیلد | نوع داده | وضعیت | توضیح و کاربرد در سئو |
|---|---|---|---|
bio |
رشته متنی (string) یا آرایه از پاراگرافها (string[]) |
اختیاری | بیوگرافی و شرح تخصص سخنران (۲ تا ۳ پاراگراف توصیه میشود). در قالب صفحه به عنوان بخش مستقل «درباره سخنران» رندر میشود و خودکار در تگ meta description و اسکیمای Person قرار میگیرد. |
quote |
رشته متنی (string) |
اختیاری | یک نقلقول یا جمله کلیدی از ارائههای سخنران. در قالب صفحه در یک بلوک نقلقول (<blockquote>) نمایش داده میشود. |
links |
آرایهای از اشیاء شامل name و url |
اختیاری | پیوندهای رسمی دیگر (گیتهاب، وبلاگ شخصی، توییتر و...) که در کنار دکمه لینکدین فعلی قرار میگیرند و در sameAs اسکیمای گوگل ثبت میشوند. |
برای هر سخنران در src/data/speakers.json میتوانید فیلدهای bio، quote و links را به شکل زیر اضافه کنید:
"saleh-shojaei": {
"slug": "saleh-shojaei",
"name": "صالح شجاعی",
"avatar": "/images/author/saleh.jpg",
"linkedin": "https://www.linkedin.com/in/salehshojaei/",
"bio": [
"توسعهدهنده ارشد فرانتاند و یکی از بنیانگذاران جامعه تخصصی فرانتچپتر با بیش از ۱۰ سال تجربه در معماری وب و فریمورکهای مدرن جاوااسکریپت.",
"تمرکز اصلی او بر بهبود تجربه کاربری، بهینهسازی عملکرد وب (Web Performance) و ترویج دانش باز در میان برنامهنویسان جامعه فرانتاند ایران است."
],
"quote": "کامیونیتی جایی است که با اشتراکگذاری دانستههایمان، مسیر رشد را برای نسل بعدی توسعهدهندگان هموارتر میکنیم.",
"links": [
{
"name": "گیتهاب",
"url": "https://github.com/salehshojaei"
},
{
"name": "وبلاگ شخصی",
"url": "https://saleh.im"
}
],
"aliases": [
"صالح شجاعی"
],
"sessions": [
1, 2, 3, 5, 8, 9, 11, 14, 16, 21, 22, 26, 31, 50, 60, 68
]
}- پایبندی به واقعیت: هیچ متن ساختگی یا لورم ایپسوم درج نکنید؛ اطلاعات واقعی سخنران را وارد کنید.
- سئو و طول محتوا: داشتن حداقل ۱۵۰ تا ۲۵۰ کلمه متن اختصاصی در فیلد
bioبه گوگل سیگنال میدهد که این صفحه دارای ارزش محتوایی یکتا است و نباید با سایر صفحات یا اسکرپرها ادغام شود. - اعمال خودکار: پس از افزودن محتوا به
src/data/speakers.jsonو پوش به برنچmain، اکشن GitHub Pages به طور خودکار سایت را بیلد کرده و محتوای جدید را منتشر میکند.
در راستای پاکسازی کامل سایت از هرگونه داده ساختگی تم، هویتهای غیرواقعی، و لینکهای شکسته/پوچ، موارد زیر به دقت بررسی و پاکسازی شدند:
| فایل | شماره خط قبلی | محتوای قبلی | اقدام انجامشده |
|---|---|---|---|
src/content/_index.md |
خطوط ۵۴۲ تا ۵۷۴ | ۸ نظر ساختگی با نویسنده «دیوید کامرون»، سمت «مدیرعامل، Nexuspay»، تصاویر /images/user-img/01.jpg تا 08.jpg و متن لورم ایپسوم |
تمام ۸ آیتم جعلی حذف شدند. ساختار testimonial حفظ و list: [] خالی شد. |
src/content/_index.md |
خط ۵۴۱ | description: 'لورم ایپسوم متن ساختگی...' در بخش testimonial |
پاکسازی شد و به رشته خالی تبدیل شد. |
src/content/_index.md |
خط ۴۳۰ | href: '#' در رویداد «یک سالگی هویج تایمز» |
با توجه به عدم وجود صفحه اختصاصی، تگ لینک حذف شد تا دکمه پوچ و گمراهکننده رندر نشود. |
src/content/_index.md |
خط ۴۳۶ | href: '#' در رویداد «تجدید دیدار» |
با توجه به عدم وجود صفحه اختصاصی، تگ لینک حذف شد تا دکمه پوچ و گمراهکننده رندر نشود. |
src/content/_index.md |
خط ۴۴۲ | href: '#' در رویداد «جشن روز برنامهنویس» |
بر اساس محتوای مصاحبه با مجتبی افراز و آرمان علیقنبری به صفحه واقعی گزارش جلسه ۶۰ (/posts/session-60-programmers-day-in-person/) متصل شد. |
src/content/_index.md |
خطوط ۳۲۴، ۳۳۰، ۳۳۶ | لینکهای کارگاههای همایش شیراز به صفحات ناموجود (/events/react-native-conf-2025 و...) |
به صفحه مرجع و مستند همایش ۱۴۰۳ (/conferences/1403/) اصلاح شدند. |
src/content/elements.md |
خط ۱۳۵ | دکمه دمو با href="#" |
به href="/" تغییر یافت تا لینک بدون مقصد در کدهای دمو نماند. |
src/layouts/partials/Testimonial.tsx |
خطوط ۲۷ تا ۳۵ | عدم وجود گارد بررسی لیست خالی نظرات | شرط اضافه شد تا در صورت خالی بودن list، هیچ فضای خالی، تصویر دمو یا تیتر رندر نشود (return null;). |
src/layouts/partials/Features.tsx |
خطوط ۲۶ تا ۳۲ | عدم وجود گارد بررسی لیست خالی ویژگیها | گارد امنیتی اضافه شد تا در صورت خالی بودن list رندر نشود. |
src/layouts/partials/YearFourStats.tsx |
خطوط ۴۵۰ تا ۴۸۰ | رندر بدون شرط دکمه رویدادها حتی در صورت href="#" |
شرط بررسی معتبر بودن لینک و عدم برابری با # اضافه شد و تایپ link? اختیاری شد. |
موارد زیر بخشهایی هستند که ساختار آنها برای توسعه آتی یا در فایل محتوا حفظ شده، اما منتظر ورود داده واقعی از سوی تیم فرانتچپتر هستند:
-
نظرات همراهان (
testimonialدرsrc/content/_index.md):- کلیدهای
titleوsubtitleحفظ شده وlist: []خالی است. - هر زمان نظرات واقعی از اعضای جامعه جمعآوری شد، با فرمت
{ author, avatar, profession, content }به این بخش اضافه خواهد شد. به دلیل شرط امنیتی در کامپوننت، تا زمان ورود داده هیچ فضای خالی در صفحه نمایش داده نمیشود.
- کلیدهای
-
عناصر شروع به کار (
featuresدرsrc/content/_index.md):- فیلد
description(خط ۴۹۵) و فیلدهایcontentدر ۶ آیتم لیست (خطوط ۴۹۹، ۵۰۲، ۵۰۵، ۵۰۸، ۵۱۱، ۵۱۴) همچنان حاوی متن لورم ایپسوم قالب قدیمی هستند. - وضعیت رندر: این بخش در چیدمان جدید صفحه اصلی (
src/app/page.tsx) اصلاً ایمپورت و رندر نمیشود، اما در صورت تصمیم برای استفاده در آینده، نیاز به نگارش محتوای متناسب با خدمات فرانتچپتر دارد.
- فیلد
-
معرفی ویدئویی تم (
introدرsrc/content/_index.md):- فیلد
descriptionحاوی لورم ایپسوم و فیلدvideo_idحاوی شناسه ویدئوی پیشفرض تم (dyZcRRWiuuw) به همراه پوسترvideo-popup.jpgاست. - وضعیت رندر: در صفحه اصلی فعلی رندر نمیشود.
- فیلد
-
ویژگیهای پیشرفته تم (
specialityدرsrc/content/_index.md):- متون ترجمهشده دمو تم (اشاره به نرمافزار ProtoPie و تصاویر استوک
features-01.pngوfeatures-02.png). - وضعیت رندر: در صفحه اصلی فعلی رندر نمیشود.
- متون ترجمهشده دمو تم (اشاره به نرمافزار ProtoPie و تصاویر استوک