روتين التوزيع الأسبوعي في مهارة Claude: مسودات الاثنين، وموافقات العملاء، وتقرير النقرات يوم الجمعة

مهارة في Claude Code تدير أسبوع الوكالة في Shager: مسودات من ملفات الخطة، وموافقات العملاء، وجدولة المعتمَد فقط، وتقرير نقرات يوم الجمعة.

روتين التوزيع الأسبوعي مهارة تؤدي المهام الثلاث نفسها كل أسبوع: يوم الاثنين تحوّل خطة المحتوى لكل عميل إلى مسودات في Shager بنص لكل حساب، ثم ترسلها للموافقة؛ وفي منتصف الأسبوع تجدول ما حصل على الموافقة؛ ويوم الجمعة تجلب النقرات لكل حساب وتكتب التقرير. في Claude Code تشغّلها بالأمر /shager-weekly plan أو /shager-weekly report، أو من دون واجهة عبر مُجدوِل مهام مع claude -p. نقاط التحقق البشرية تقع بين كتابة المسودات والجدولة، وهناك تحديدًا تكون أقل كلفة وأكثر قدرة على التقاط الأخطاء.

يبني هذا المقال على مهارة Shager الأساسية. والتركيز هنا على الروتين نفسه: المدخلات، والأوضاع، وضمانات الأمان، وكيف تشغّله دون أن يجلس أحد أمام لوحة المفاتيح.

كيف يبدو الأسبوع فعليًا؟

لنأخذ وكالة لديها ثمانية عملاء ونحو 150 حسابًا مربوطًا. هكذا يبدو أسبوع عملي.

متى الوضع ما تفعله المهارة دور الإنسان
الاثنين 09:00 plan تقرأ ملف خطة كل عميل، وترفع الوسائط، وتنشئ المسودات، وتطلب الموافقة لا شيء خلال التشغيل
من الاثنين إلى الأربعاء يوافق العملاء أو يطلبون تعديلات عبر روابط الموافقة مراجعة العميل
الأربعاء 14:00 schedule تجدول كل منشور حصل على الموافقة في موعده المخطط يلقي مسؤول العميل نظرة على الملخص
الجمعة 15:00 report تجلب النقرات لكل حساب ولكل منشور، وتكتب تقريرًا لكل عميل يرسله مسؤول العميل

لا يخترع الروتين مواضيع الأسبوع أبدًا. إنه يعمل من ملف خطة يكتبه إنسان، لأن الاستراتيجية مهمة الوكالة. وما يزيله هو الجزء الآلي: أربعون صيغة للنص، وروابط متتبَّعة، واختيار الصيغ، والمتابعة.

بنية مجلد المهارة: ملف SKILL.md يتضمن الاسم والوصف وتعليمات العمل مع Shager.
مهارة واحدة تعلّم الوكيل الروتين كله، في كل مرة.

كيف يبدو ملف الخطة؟

ملف Markdown واحد لكل عميل في كل أسبوع، داخل مستودع تستطيع المهارة قراءته:

# Harbor Fitness, week 2026-W43
workspace: Harbor Fitness
timezone: America/New_York

## Post 1
when: 2026-10-20 07:00
target: group "All studios"
format: REEL
media: https://cdn.harborfitness.example/w43/6am-class.mp4 (1080x1920, 28s)
brief: New 6am strength class starts Monday. Free first session.
link: https://harborfitness.example/6am
first comment: Book your free first session

## Post 2
when: 2026-10-23 12:00
target: group "Downtown studios"
format: FEED
media: https://cdn.harborfitness.example/w43/smoothie-bar.jpg
brief: Smoothie bar reopens after renovation. 20% off this week.
link: https://harborfitness.example/smoothie

نص عادي تحلّله المهارة، وملف يستطيع أي مسؤول عميل تعديله دون تعلّم أداة جديدة.

ملف SKILL.md

---
name: shager-weekly
description: Run the agency's weekly Shager distribution routine. Use for "/shager-weekly plan", "/shager-weekly schedule" or "/shager-weekly report", or when asked to prepare, schedule or report this week's client posts from the plans folder.
argument-hint: "plan | schedule | report [client]"
disable-model-invocation: true
allowed-tools: Read Glob Write mcp__shager__whoami mcp__shager__list_workspaces mcp__shager__list_channels mcp__shager__list_groups mcp__shager__list_posts mcp__shager__get_post mcp__shager__get_analytics mcp__shager__upload_media_from_url mcp__shager__create_post mcp__shager__request_approval mcp__shager__schedule_post
---

# Shager weekly routine

Plans live in plans/<ISO week>/<client>.md. Reports go to reports/<ISO week>/.
Mode is the first argument. Process every client unless one is named.

## plan
For each post in each plan file:
1. Resolve workspace, group and channels. Skip channels not ACTIVE and list them.
2. upload_media_from_url with width, height and duration_ms from the plan.
3. create_post WITHOUT schedule_at: per_channel captions written from the
   brief (same facts, different wording, local detail from channel name),
   cta_url = link, campaign = "<client-slug>-<iso-week>-<n>",
   first_comment = "<first comment>: <link>", label = "W43 Post 1".
4. request_approval with the client's reviewer from plans/reviewers.md.
Write a summary: client, post label, post id, accounts, approval_url.

## schedule
For each client: list_posts with status APPROVED. For each, find its
planned time in the plan file by label and call schedule_post with
schedule_at in ISO 8601 with the workspace offset. Never schedule a post
that is not APPROVED. Never schedule a time in the past; list it instead.

## report
For each client: get_analytics from last Monday 00:00 to now (with offset).
Write reports/<week>/<client>.md with a table of clicks by account,
highest first, and the top three posts with their labels.
State plainly that these are link clicks, not leads.

## Errors
Stop the current client on 401 or 403 and record the code. On 422, record
the message against the post and continue. On 429, wait 60 seconds.

لماذا وُضع كل ضمان من هذه الضمانات

تعني disable-model-invocation: true أن Claude لن يبدأ هذا الروتين من تلقاء نفسه لمجرد أن محادثة ذكرت «منشورات هذا الأسبوع». ووفق وثائق مهارات Claude Code، يمنع هذا الحقل التحميل التلقائي، فلا يعمل الروتين إلا حين يكتب شخص أو برنامج الأمر.

قائمة allowed-tools تكفي للمهمة ولا تزيد عليها. لا يوجد فيها cancel_post، ولا create_connect_link، ولا create_workspace. الروتين الذي يعمل دون واجهة يجب ألا يستطيع فعل أشياء لم يخطط لها إنسان.

ولا تمس الجدولة إلا المنشورات في حالة APPROVED، وهذه الحالة لا توجد إلا بعد أن يوافق العميل عبر رابطه. وإن لم يوافق العميل أبدًا، فلن يُنشر المنشور ببساطة، وسيذكر ملخص الأربعاء ذلك. والمنطق وراء وضع الموافقة في هذه النقطة بالذات مشروح في مسار موافقة العملاء للوكالات.

أي مفتاح يجب أن يستخدمه الروتين؟

هذا هو القرار الذي يحدد مقدار ثقتك بالروتين.

الإعداد صلاحيات المفتاح النتيجة
مسودات فقط read، write يعمل plan وreport؛ ويجدول إنسان المنشورات في Shager
مشروط بالموافقة read، write، publish مع اشتراط الموافقة في كل مساحة عمل لا يجدول الروتين إلا ما وافق عليه العملاء
طيار آلي كامل read، write، publish، دون موافقة فقط للمحتوى المتكرر منخفض المخاطر الذي كنت ستنشره دون مراجعة على أي حال

الصف الثاني هو ما نوصي به لمعظم الوكالات. تُمنح صلاحية publish لمفتاح واحد، يُنشأ لهذا الروتين وحده على https://app.shager.ai/dashboard/agents، فيعرض سجل التدقيق هناك كل استدعاء أجراه الروتين ولا شيء غيره. وإن بدا شيء غير سليم، تلغي هذا المفتاح وتستمر كل عمليات الربط الأخرى في العمل.

مخطط: تُرسل المسودة إلى العميل كرابط لا يتطلب تسجيل الدخول، فيوافق العميل أو يطلب تعديلات، ثم يُجدول المنشور المعتمد.
أي تعديل على المحتوى بعد الموافقة يلغيها. لا يُنشر شيء لم يره العميل.

كيف تشغّله دون فتح الطرفية؟

الوضع غير التفاعلي في Claude Code يشغّل المهارة من سكربت. تنص وثائق التشغيل دون واجهة على أن المهارات التي يستدعيها المستخدم تعمل في وضع -p حين تُضمّن /skill-name في الطلب، وأن --allowedTools يوافق مسبقًا على الأدوات بصياغة قواعد الأذونات. وتصف أيضًا --permission-mode dontAsk، الذي يرفض كل ما كان سيطلب إذنًا، فيفشل أي استدعاء أداة غير متوقع بدلًا من أن يعلق.

#!/usr/bin/env bash
# run-weekly.sh  (called by cron or your CI scheduler)
set -euo pipefail
cd /srv/agency-content
export SHAGER_API_KEY="$(cat /run/secrets/shager_weekly_key)"

claude -p "/shager-weekly $1" \
  --permission-mode dontAsk \
  --allowedTools "Read,Glob,Write(reports/**),mcp__shager__whoami,mcp__shager__list_workspaces,mcp__shager__list_channels,mcp__shager__list_groups,mcp__shager__list_posts,mcp__shager__get_post,mcp__shager__get_analytics,mcp__shager__upload_media_from_url,mcp__shager__create_post,mcp__shager__request_approval,mcp__shager__schedule_post" \
  --output-format json > "logs/weekly-$1-$(date +%F).json"

وهذا ملف crontab، بالتوقيت المحلي للخادم:

0 9 * * 1   /srv/agency-content/run-weekly.sh plan
0 14 * * 3  /srv/agency-content/run-weekly.sh schedule
0 15 * * 5  /srv/agency-content/run-weekly.sh report

يفترض ذلك أن خادم MCP الخاص بـ Shager مسجَّل في ملف .mcp.json للمشروع مع قراءة المفتاح من SHAGER_API_KEY، كما يوضح مقال ربط Shager بـ Claude Code. ويمنحك مخرج JSON معرّف الجلسة والملخص النهائي، وهو ما سترسله إلى قناة الفريق.

ما الذي لا يزال يحتاج إلى إنسان كل أسبوع؟

ثلاثة أمور، والروتين مصمم حولها لا ضدها.

  1. كتابة ملف الخطة. المواضيع والعروض والتوقيت استراتيجية.
  2. قراءة ملخص الأربعاء. يسرد كل ما لم يحصل على موافقة، والحسابات التي تم تخطيها، ورفض 422. خمس دقائق.
  3. إرسال تقرير الجمعة مع السياق. النقرات لكل حساب حقيقة؛ أما ما تعنيه للعميل فحديث آخر. ذكّر العملاء بأن النقرات على الروابط ليست عملاء محتملين، ووجّههم إلى نسبة العملاء المحتملين إلى كل حساب إن أرادوا سد هذه الفجوة في نظام CRM لديهم.

أسئلة شائعة

ماذا لو وافق العميل بعد الأربعاء؟

شغّل /shager-weekly schedule مرة أخرى، يدويًا أو من سطر cron ثانٍ يوم الخميس. هذا الوضع لا يجدول إلا منشورات APPROVED غير المجدولة بعد، ويرفض الأوقات الماضية، لذا فتشغيله مرتين آمن.

هل يستطيع الروتين ربط حسابات جديدة حين يضيف العميل فرعًا؟

لا، وذلك عن قصد. تُركت create_connect_link خارج الأدوات المسموح بها لأن ربط الحسابات يشمل العميل ويجب أن يكون إجراءً بشريًا مقصودًا. حين يُضاف فرع، يرسل مسؤول العميل رابط ربط ويضيف الحساب الجديد إلى المجموعة المناسبة؛ ويلتقطه التشغيل التالي تلقائيًا.

هل يعمل هذا مع Codex أو Cursor بدلًا من Claude Code؟

ملفات الخطة والأوضاع والضمانات تنتقل كما هي، لأن أدوات Shager واحدة في كل عملاء MCP. أما مقدمة SKILL.md واستدعاء claude -p فخاصان بـ Claude Code؛ وفي غيره تحتفظ بالتعليمات في ملف طلب وتشغّله بأدوات الأتمتة الخاصة بذلك العميل.

الخطوة التالية

الروتين يتولى الأسبوع؛ أما خط محتوى الوكيل من البداية إلى النهاية فيعرض السلسلة الكاملة حوله، من موجز العميل مرورًا بالوسائط والنصوص المولَّدة وصولًا إلى المنشورات المنشورة والنقرات المقيسة، مع كل استدعاء في Shager بالترتيب.

جرّبه على حساباتك.

مجانًا خلال فترة الإطلاق، دون بطاقة. اربط حساباتك، واكتب مرة واحدة، وShager ينشر ويقيس.