Skip to content
Back to skills

Bulk Campaign

ASecurity

Send a bulk SMS campaign in Turkey — balance check, opt-out filter, İYS consent, delivery report

  • 29 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
ai-agentsgoapi

Works with

  • api

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add theYahia/WWmcp --skill bulk-campaign --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bulk Campaign?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bulk Campaign
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/theyahia-bulk-campaign/badge)](https://www.skillsdirectory.com/skills/theyahia-bulk-campaign)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bulk-campaign
description: Send a bulk SMS campaign in Turkey — balance check, opt-out filter, İYS consent, delivery report
argument-hint: <recipients> "<message>" [schedule DD/MM/YYYY HH:MM]
---

# /bulk-campaign — Bulk SMS with pre-flight checks

## Algorithm

1. Call `get_balance`. Compare credits to recipient count times segments per message.
   If short, stop and report the shortfall — a partial send is worse than none.
2. Call `get_blacklist` (paginate with `page` / `row_count`) and remove every blacklisted
   number from the recipient array. Sending to opt-outs is a compliance problem in Turkey.
3. Call `get_sender` and pick an approved sender header (başlık).
4. Marketing content requires İYS consent under Law 6563. Spot-check recipients with
   `iys_check` (brand code + `MESAJ` channel) when the list origin is unclear, and register
   collected consents with `iys_register` before sending.
5. Show the user the final count, the message text, the segment count and the credit cost.
   Get explicit confirmation before sending.
6. Call `send_sms` with `to` as the **array** of numbers, `message`, `sender`, and
   `message_type: "commercial"` for marketing (this sets the İYS flag). Optionally
   `schedule_at` (`DD/MM/YYYY HH:MM`) for a timed send — cancel it later with `cancel_order`.
7. Call `get_report` with the `order_id` from the response to read delivery. Poll again later
   for a settled figure — a report taken immediately is incomplete.

## Response format

```
## Bulk SMS campaign

**Recipients**: 1,240 (18 removed as blacklisted)
**Sender**: SIRKETADI
**message_type**: commercial (İYS flag on)
**Segments per message**: 2 (Unicode — Turkish characters)
**Credits used**: 2,480
**Scheduled**: immediate

### Delivery (order_id 99182)
| State | Count |
|-------|-------|
| DELIVERED (111) | 1,201 |
| UNDELIVERED (112) | 22 |
| WAITING (110) | 17 |
```

## Notes

- Bulk and single sends are the same tool: `send_sms` with `to` as an array (up to 50 000).
- Always subtract the blacklist yourself — the API will not do it for you.
- `get_reports` (plural) lists order summaries over a date range of at most 10 days; use it to
  review past campaigns. `get_report` (singular) drills into one order.
- A scheduled order can be pulled back with `cancel_order` until it is dispatched.

## Examples

```
/bulk-campaign customers.txt "Kampanya: %20 indirim"
/bulk-campaign customers.txt "Yeni urunlerimiz yayinda" 05/09/2026 10:00
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.