عدد الكلمات في كل فقرة واكتشاف الفقرات الطويلة أو القصيرة
يكشف عدد الكلمات في كل فقرة إيقاع النص وتوازنه، وهي أمور لا يوضحها مجموع كلمات المستند وحده. ألصقوا نصًا تفصل بين فقراته أسطر فارغة لتحصلوا على عدد كلمات كل فقرة والمجموع والمتوسط. كما تحدد الأداة الفقرات التي تزيد كثيرًا على المتوسط أو تقل عنه، وبذلك يستطيع المحررون والطلاب وفرق المحتوى العثور سريعًا على المقاطع التي تستحق المراجعة من دون عد يدوي.
شغّل الأداة مجانًا
جهزوا النص بحدود واضحة بين الفقرات
ألصقوا نصًا عاديًا واتركوا سطرًا فارغًا بالكامل على الأقل بين كل فقرتين. لا ينشئ الانتقال العادي إلى سطر جديد داخل الفقرة فقرة أخرى، ولذلك تبقى الأسطر الملتفة والفواصل المقصودة ضمن الفقرة نفسها. تُقبل المسافات أو علامات الجدولة في سطر الفصل الفارغ. تُزال المسافات من بداية النص ونهايته قبل التحليل، وتظل الأسطر الفارغة المتتالية حدًا واحدًا فقط. يتعرف العداد إلى تسلسلات الحروف والأرقام بوصفها كلمات، ويُبقي الفواصل العليا والواصلات الداخلية الشائعة متصلة، لذلك تُحسب الكلمات المركبة كلمة واحدة. لا تزيد علامات الترقيم وحدها العدد. قد تظهر فقرة مؤلفة من رموز فقط بعدد يساوي صفرًا إذا وقعت بين حدود صالحة. إذا كان الإدخال كله فارغًا أو لا يضم إلا مسافات، يفشل الطلب لعدم وجود فقرات قابلة للتحليل. تجعل هذه البنية الصريحة النتائج قابلة للتكرار بين المسودات، وتمنع افتراض أن كل سطر ظاهر يمثل فقرة مستقلة.
افهموا المتوسط وعلامات التصنيف
تعد الأداة كلمات جميع الفقرات أولًا، ثم تجمعها لإيجاد مجموع المستند وتقسم المجموع على عدد الفقرات. يُقرب المتوسط المعروض إلى منزلتين عشريتين، أما التصنيف فيستخدم القيمة غير المقربة. لا تُصنف الفقرة أعلى كثيرًا من المتوسط إلا إذا تجاوز عددها 150 بالمئة من المتوسط. ولا تُصنف أدنى كثيرًا منه إلا إذا قل عددها عن 50 بالمئة. تبقى القيم المطابقة لأي من الحدين ضمن النطاق المتوسط، وبذلك تكون القاعدة واضحة ومتوقعة. هذه العلامات مؤشرات وليست أحكامًا على جودة الكتابة. فمن الطبيعي أن تختلف أطوال الحوار والعناوين والانتقالات والأمثلة والخاتمة، وقد تكون الفقرة القصيرة جدًا مقصودة. استخدموا النتيجة لتوجيه الانتباه، ثم اقرأوا المقطع في سياقه. ولأن كل تصنيف يعتمد على المستند الحالي، فقد تؤدي إضافة النص أو حذفه إلى تغيير المتوسط وعدة علامات عند تشغيل التحليل مرة أخرى.
حولوا التقرير إلى مراجعة عملية
ابدؤوا بالفقرات المصنفة أعلى كثيرًا من المتوسط، وتحققوا مما إذا كانت كل فقرة تجمع أفكارًا متعددة ستكون أوضح إذا فُصلت. ابحثوا عن تغير في الموضوع أو مثال طويل أو انتقال يصلح نقطة طبيعية للتقسيم. ثم افحصوا الفقرات المصنفة أدنى كثيرًا من المتوسط. قد تصنع الفقرة القصيرة توكيدًا مفيدًا، لكنها قد تكون أيضًا ادعاءً بلا دليل أو جملة معزولة أو جزءًا ينبغي ضمه إلى فقرة مجاورة. بعد التحرير، شغلوا التحليل على النص الكامل مجددًا بدل مقارنة أعداد منفردة، لأن المتوسط يصف مجموعة الفقرات الحالية. يحافظ الإخراج المرقم على ترتيب المصدر ويسهل العثور على كل نتيجة من دون تكرار نص قد يكون حساسًا. ويمكن للفرق استدعاء API ضمن الفحوص التحريرية أو مسارات النشر أو أدوات التعلم بسعر $0.002 لكل طلب. الخوارزمية حتمية ولا تستخدم نموذجًا أو شبكة، وتعيد التقرير نفسه ما دام الإدخال لم يتغير.
حالات الاستخدام
موازنة مسودة مقال
اعثروا على المقاطع الكثيفة التي قد تحتاج إلى تقسيم، والمقاطع القصيرة التي قد تحتاج إلى دعم.
مراجعة كتابات الطلاب
قدموا للطلاب خريطة موضوعية لأطوال الفقرات قبل مناقشة البنية والأدلة والإيقاع.
أتمتة الفحوص التحريرية
أضيفوا أعدادًا حتمية للكلمات وتنبيهات للقيم المتطرفة إلى مسار النشر أو ضمان الجودة.
الأسئلة الشائعة
ما الذي يفصل بين فقرتين؟
يفصل بين الفقرات سطر فارغ واحد أو أكثر. ويبقى الانتقال إلى سطر جديد من دون سطر فارغ داخل الفقرة نفسها.
متى تُصنف الفقرة أعلى كثيرًا من المتوسط؟
يجب أن يتجاوز عدد كلماتها 150 بالمئة من متوسط المستند غير المقرب.
متى تُصنف الفقرة أدنى كثيرًا من المتوسط؟
يجب أن يقل عدد كلماتها عن 50 بالمئة من المتوسط غير المقرب.
هل تُحسب علامات الترقيم كلمات؟
لا. تُحسب تسلسلات الحروف والأرقام، مع إبقاء الفواصل العليا والواصلات الداخلية الشائعة ضمن الكلمة.
كم تبلغ تكلفة API؟
يكلف كل طلب API مبلغ $0.002. ويمكن تشغيل إصدار المتصفح محليًا مجانًا.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/write/word-count-by-paragraph \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"A short opening paragraph.\n\nThis second paragraph contains several more words so its length can be compared with the opening."}'const res = await fetch("https://api.kit.forhosting.com/write/word-count-by-paragraph", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "A short opening paragraph.\n\nThis second paragraph contains several more words so its length can be compared with the opening."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/write/word-count-by-paragraph",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "A short opening paragraph.\n\nThis second paragraph contains several more words so its length can be compared with the opening."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/write/word-count-by-paragraph", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"A short opening paragraph.\\n\\nThis second paragraph contains several more words so its length can be compared with the opening."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"A short opening paragraph.\n\nThis second paragraph contains several more words so its length can be compared with the opening."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/write/word-count-by-paragraph", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "A short opening paragraph.\n\nThis second paragraph contains several more words so its length can be compared with the opening."
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "write.word_count_by_paragraph",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars | 1000000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |