Sultan10 downloadsFinds places in your notes where you mention another note by title without linking it, even when Arabic spelling hides it («وبالكتابةِ» for «الكتابة»), and links them only when you approve.
إضافة لـ Obsidian تدلّك على كل موضع ذكرتَ فيه عنوان ملاحظة دون أن تربطه، حتى لو كتبتَه بسابقة أو تشكيل أو تطويل، وتربطه بموافقتك.
عندك ملاحظة عنوانها «الكتابة». وفي ملاحظات أخرى كتبتَ «وبالكتابةِ أفهم نفسي» و«للكتابة طقوسها» و«الكتـابة» بتطويل. كلها تقصد الملاحظة نفسها، لكنك لم تربطها.
لوحة «الإشارات غير المربوطة» المدمجة في Obsidian تبحث عن الاسم حرفيًا، فلا تلتقط أيًّا من هذه الثلاث. وصل تفتح ملاحظتك الحالية، وتبحث في بقية مجلد ملاحظاتك (Vault) عن عنوانها وأسمائها البديلة، وهي تفهم فروق الكتابة العربية. ثم تعرض كل موضع في جملته مع سبب ظهوره، وأنت تقرر.


لقطتان من مجلد ملاحظات تجريبي بثيم خزف؛ الجمل كلها كُتبت للعرض.
لا تكتب وصل في أي ملف قبل تأكيدك، ولا تربط الكل دفعة واحدة، ولا تضع خطوطًا تحت الكلمات وأنت تكتب. تعمل حين تفتح لوحتها فقط.
يُكتب الرابط حول الكلمة كاملة بما فيها السابقة، وتبقى الكلمة كما كتبتها نصًّا ظاهرًا، فلا تتغير الجملة:
وبالكتابةِ أفهم نفسي ← [[الكتابة|وبالكتابةِ]] أفهم نفسي
ويُكتب النص الظاهر في كل رابط، حتى لو طابقت الكلمة العنوان تمامًا ([[الكتابة|الكتابة]]). لأن Obsidian إن وجد النص الظاهر مساويًا للعنوان حذفه، فإذا أعدتَ تسمية الملاحظة لاحقًا تغيّرت الكلمة داخل جملتك.
وصل تقارن بعناوين ملاحظاتك الموجودة فقط، وبأسمائها البديلة (aliases). لا تحلّل اللغة كلها ولا تستعمل ذكاءً اصطناعيًا. وكل اقتراح معه سببه.
| النوع | ما يُقبل | مثال لملاحظة «الكتابة» | أين يظهر |
|---|---|---|---|
| تطابق | الحروف نفسها بعد تجاهل الحركات والتطويل والعلامات الخفية وأشكال PDF المنسوخة، والأرقام العربية والفارسية، والكاف والياء الفارسيتان، وحالة الأحرف اللاتينية | «الكتابةُ»، «الكتـابة» | المواضع |
| سابقة أو همزة أولى | سابقة من قائمة مغلقة: و/ف ثم ب/ك/ل ثم «ال»، مع «لل». وهمزة أول الكلمة المحذوفة (الانسان ← الإنسان) |
«وبالكتابةِ»، «للكتابة» | المواضع |
| نكرة (اختيارية) | الكلمة بلا «ال»، لكن فقط في ملاحظة طلبتَ لها ذلك (انظر «خيارات الملاحظة») | «كتابة» | المواضع |
| محتمل | لاحقة ضمير («ذاكرته» لملاحظة «الذاكرة»)، أو سابقة من حرف واحد على اسم قصير، أو كلمة بلا تشكيل لعنوان مشكول | «كتابتها» | قسم «مواضع محتملة»، مطوي افتراضيًا |
وتُعرض الأمثلة التالية كما تُعرض في الاستعمال:
| النص | الملاحظة | يُقترح؟ | السبب |
|---|---|---|---|
| الكتابة فعلُ نجاة | الكتابة | نعم | تطابق بعد تجاهل الحركة |
| وبالكتابةِ أفهم نفسي | الكتابة | نعم | سابقة: وبـ |
| للكتابة طقوسها | الكتابة | نعم | لام الجر مع «ال» |
| الجسـد يتذكر | الجسد | نعم | تطويل |
| الانسان في المدينة | الإنسان | نعم | همزة أولى محذوفة |
| قرأتُ الكتابَ | الكتابة | لا | «كتاب» كلمة أخرى |
| أعجبني كتابه | الكتابة | لا | «كتابه» بالهاء ليست «كتابة» |
وصل لا تعدّك بأن تجد كل إشارة. هذه حدودها:
[نص](ملاحظة.md)) حين يطابق النص اسم الملاحظة تمامًا، يعيد Obsidian كتابة النص عند إعادة تسمية الملاحظة. وروابط الويكي ([[ ]]) سليمة.على ٨٤ حالة اختبار عربية اصطناعية قُفلت قبل القياس (منها حالات يجب ألا يُقترح فيها شيء)، وافق ناتج وصل التوقع المقبول في ٨٣ حالة. وفي مجموعة جمل الرواية منها نزلت دقة الطبقة ١ إلى ٩٠٫٩٪، دون عتبتنا ٩٥٪، بسبب النكرة الاختيارية. وهذا لا يعني أن ٩٨٪ من اقتراحاتها صحيحة في ملاحظاتك. ويمكنك إعادة هذا القياس بالأمر npm run metrics.
وفي تجربة على نص رواية عربية واحدة بعناوين مفاهيم افتراضية، كانت المواضع التي تضيفها وصل نحو ٤١٪ من مجموع المواضع الصحيحة (ما تجده الميزة المدمجة في Obsidian مضافًا إليه ما تضيفه وصل). تقدير أولي سبق نواة وصل بصيغتها الحالية. واستُعمل فيها نص خاص، فلا يمكن إعادة هذه التجربة من هذا المستودع.
لم تُقَس دقتها بأرقام في الاستعمال اليومي. استعملتُها أسبوعًا على iPhone وأنا راضٍ عنها، لكن هذا انطباع لا قياس.
تضيف إلى خصائص الملاحظة (Properties) ما يناسبها:
| الخاصية | متى | ماذا تفعل |
|---|---|---|
wasl: exact |
أسماء الأشخاص | يُقبل الاسم نفسه فقط: لا «ال» ولا سابقة ولا همزة مختلفة. فملاحظة «سلطان» لا تلتقط «السلطان». |
wasl: indefinite |
ملاحظات المفاهيم | تلتقط الكلمة بلا «ال» أيضًا: ملاحظة «الكتابة» تلتقط «أحب كتابة الرسائل». لا تفعّلها لملاحظة اسم شيء («اللوحة») لأن «لوحة» كلمة شائعة. |
aliases |
أي ملاحظة | أسماء بديلة يبحث عنها وصل أيضًا، وهي الطريقة لتغطية الجموع والمرادفات. |
من الإعدادات ← وصل:
أ/المعنى لا يُخفي المواضع عن ب/المعنى.وإن كان إعداد Obsidian «تحديث الروابط الداخلية تلقائيًا» مطفأً، تنبّهك وصل إلى ذلك: يسألك Obsidian قبل تحديث الروابط عند إعادة تسمية ملاحظة أو نقلها، وإعادة التسمية من خارج Obsidian تكسر الروابط التي كتبتها وصل.
وصل مكتوبة لتعمل على الهاتف: لا Node ولا مكتبات خارجية، وتظهر لوحتها في الدرج الجانبي. جُرّبت على iPhone (Obsidian 1.14.4): زمن البحث، وشكل الروابط المكتوبة في العرض والتحرير، ثم أسبوع من الاستعمال اليومي. أما أندرويد فلم تُجرَّب بعد، فلا وعد بها.
لا تتصل وصل بالإنترنت ولا ترسل ملاحظاتك إلى أحد. تقرأ ملاحظاتك داخل Obsidian وتكتب فقط ما أكّدتَه.
وتحفظ في ملف إعدادات الإضافة على جهازك ثلاثة أشياء: إعداداتك؛ وقائمة ما تجاهلتَه، وفيها مسارات الملاحظات ونسخة مطبّعة من الكلمة المتجاهَلة وبصمة للسياق القريب؛ وعدّادات أرقام فقط (كم رُبط وكم رُفض) بلا أسماء ولا نصوص. وإن كنتَ تستعمل Obsidian Sync فقد ينقل هذا الملف مع إعدادات إضافاتك. والأمر «تصدير الإحصاءات إلى ملاحظة» يكتب لك أرقام العدّادات في ملاحظة جديدة إن أردت رؤيتها.
ابحث عن «Wasl» في الإعدادات ← الإضافات المجتمعية ← تصفّح. وإن لم تظهر بعد فثبّتها يدويًا:
main.js وmanifest.json وstyles.css من آخر إصدار.wasl داخل .obsidian/plugins/ في مجلد ملاحظاتك، وضع الملفات الثلاثة فيه.يحتاج Node 20 فأحدث.
npm install
npm test
npm run build
MIT.
An Obsidian plugin that finds where you mentioned a note's title without linking it, even when the Arabic is written with a prefix, diacritics or a tatweel, and links it only when you approve.
You have a note titled «الكتابة» ("writing"). In other notes you wrote «وبالكتابةِ أفهم نفسي» ("and by writing I understand myself"), «للكتابة طقوسها» ("writing has its rituals") and «الكتـابة» with a tatweel. All of them mean that note, and you never linked any of them.
Obsidian's built-in unlinked mentions look for the name literally, so it catches none of the three. Wasl takes the note you have open, searches the rest of your vault for its title and aliases, and understands Arabic spelling variation. It shows each mention in its sentence together with the reason it matched, and you decide.


Two screenshots from a demo vault in the Khazaf theme; every sentence was written for the demo.
Wasl writes to no file before you confirm, never links everything at once, and draws no underlines while you type. It works only when its panel is open.
The link wraps the whole word, prefix included, and the word stays as its display text, so your sentence doesn't change:
وبالكتابةِ أفهم نفسي → [[الكتابة|وبالكتابةِ]] أفهم نفسي
The display text is written in every link, even when the word matches the title exactly ([[الكتابة|الكتابة]]). Obsidian drops the display text when it equals the title, and then renaming the note later changes the word inside your sentence.
Wasl compares only against your existing note titles and their aliases. It doesn't analyze the language at large and uses no AI. Every suggestion carries its reason.
| Kind | What is accepted | Example for a note «الكتابة» | Where it appears |
|---|---|---|---|
| Match | The same letters after ignoring diacritics, tatweel, invisible marks, copied PDF presentation forms, Arabic-Indic and Persian digits, Persian kaf and yeh, and Latin case | «الكتابةُ», «الكتـابة» | Mentions |
| Prefix or initial hamza | A prefix from a closed list: و/ف, then ب/ك/ل, then «ال», including «لل». And a dropped hamza at the start of a word (الانسان → الإنسان) |
«وبالكتابةِ», «للكتابة» | Mentions |
| Indefinite (opt-in) | The word without «ال», only for a note you asked for it (see Note options) | «كتابة» | Mentions |
| Possible | An attached pronoun («ذاكرته» for a note «الذاكرة»), a one-letter prefix on a short name, or an unvocalized word for a vocalized title | «كتابتها» | The Possible mentions section, collapsed by default |
Wasl doesn't promise to find every mention. These are its limits:
[text](note.md)), when the text equals the note's name exactly, Obsidian rewrites the text on rename. Wikilinks ([[ ]]) are unaffected.On 84 synthetic Arabic test cases locked before measuring (some of them cases where nothing should be suggested), Wasl's output matched the accepted expectation in 83 cases. On the novel-style sentences among them, layer 1 dropped to 90.9%, below our 95% bar, because of the optional indefinite matching. That does not mean 98% of its suggestions are correct in your notes. You can rerun this measurement with npm run metrics.
In one experiment on a single Arabic novel with placeholder concept titles, what Wasl adds came to about 41% of all the correct mentions (those Obsidian's built-in feature finds plus those Wasl adds). It is a first estimate that predates Wasl's current matching core. That experiment used a private text, so it cannot be reproduced from this repository.
Accuracy in daily use has not been measured in numbers. I used it for a week on an iPhone and I'm happy with it, but that is an impression, not a measurement.
Add what fits the note to its properties:
| Property | When | What it does |
|---|---|---|
wasl: exact |
Names of people | Only the name itself is accepted: no «ال», no prefix, no different hamza. A note «سلطان» won't catch «السلطان». |
wasl: indefinite |
Concept notes | Also catches the word without «ال»: a note «الكتابة» catches «أحب كتابة الرسائل». Don't enable it for a note about a thing («اللوحة», "the painting"), because «لوحة» is a common word. |
aliases |
Any note | Alternative names that Wasl searches for too. This is how you cover plurals and synonyms. |
Under Settings → Wasl:
a/Meaning does not hide mentions for b/Meaning.If Obsidian's Automatically update internal links setting is off, Wasl warns you: Obsidian asks before updating links when you rename or move a note, and renaming outside Obsidian breaks the links Wasl wrote.
Wasl is written to run on a phone: no Node, no external libraries, and its panel appears in the side drawer. It has been tried on an iPhone (Obsidian 1.14.4): search time, how the written links render in reading and editing, and a week of daily use. Android hasn't been tried yet, so there's no promise there.
Wasl doesn't connect to the internet and never sends your notes to anyone. It reads your notes inside Obsidian and writes only what you confirmed.
In the plugin's settings file on your device it keeps three things: your settings; the list of what you ignored, which includes note paths, a normalized copy of each ignored word and a fingerprint of the nearby text; and number-only counters (how many were linked and rejected) with no names and no text. If you use Obsidian Sync, that file may travel with your plugin settings. The command Export statistics to a note writes the counters to a new note if you want to see them.
Search for “Wasl” under Settings → Community plugins → Browse. If it doesn't show up yet, install it manually:
main.js, manifest.json and styles.css from the latest release.wasl inside .obsidian/plugins/ in your vault and put the three files in it.Requires Node 20 or newer.
npm install
npm test
npm run build
MIT.