Paragraph OpenClaw Skill#




Overview#
Paragraph.com reimagines blogging for the decentralized era. Posts are stored onchain, can be minted as NFTs (coins), and communities can own and govern content. This skill gives OpenClaw agents full programmatic access to Paragraph's API, enabling automated publishing workflows, subscriber management, and token-gated content strategies.
Why integrate Paragraph with OpenClaw?#
- Automated content pipelines: Schedule regular posts, cross-post from other platforms, or auto-publish research reports
- Tokenized engagement: Track coin holders, distribute rewards, and build onchain communities
- Newsletter automation: Manage subscriber lists, segment audiences, and trigger send-outs without manual work
- Decentralized permanence: Your content lives on the blockchain, immune to platform takedowns
- Monetization ready: Built-in token economics mean you can launch social tokens around your writing
This skill is production-ready for creators, DAOs, and Web3 projects that want to treat blogging as a protocol, not a siloed service.
Features in Depth#
Post Management#
Create posts with rich Markdown, categories, and optional newsletter dispatch. Paragraph handles onchain anchoring automatically. You can:
- Publish instantly or wait for onchain confirmation (
waitForProcessing)
- Assign categories for discoverability
- Attach images and embedded content via Markdown
- Retrieve posts by ID or human-readable slug
- List recent posts with or without full content
Note: Updating posts isn't supported by Paragraph's API yet. To "edit", you delete and recreate (preserving slug if possible).
Publication Control#
Every Paragraph account has one or more publications (think: multi-author blogs under one roof). This skill can:
- Auto-detect your primary publication using just an API key
- Fetch publication metadata (name, slug, custom domains, settings)
- Look up publications by their ENS-style domain (e.g.,
myblog.paragraph.eth)
Subscriber Relationship Management#
Build and nurture your audience:
- Add subscribers individually via email or wallet address
- Tag subscribers for segmentation (e.g., "premium", "nft-holder", "early-adopter")
- Import bulk lists via CSV (ideal for migrating from Substack, Ghost, etc.)
- Track subscriber count over time
- Double opt-in support for GDPR compliance
CSV format for import:
csv
email,wallet,tags
alice@example.com,,newsletter
bob@example.com,0x123...,nft-holder
Token & Coin Operations#
Paragraph's killer feature: every post can have a coin (social token). This skill exposes:
- Get coin details by ID (supply, holders, price)
- Look up coins by contract address (for external tracking)
- Discover trending/popular coins across the platform
- List coin holders (with pagination) — useful for airdrops or community analysis
Coins enable creators to launch micro-economies around their content. Readers can buy/sell the coin, aligning incentives around the writer's success.
User & Feed Discovery#
- Get user profiles by internal ID or linked wallet
- Fetch the global "For You" feed or get posts filtered by tag
- Combine with coin data to identify influential writers
Setup Guide#
Step 1: Get your Paragraph API key#
- Log into Paragraph
- Navigate to Account Settings → Integrations
- Click "Generate API Key"
- Copy the key (starts with
para_ or similar)
Step 2: Find your publication slug#
Your publication slug is the URL-friendly name used in your blog's address:
- If your blog is
myblog.paragraph.eth, the slug is myblog
- You can also find it in the dashboard under Publication Settings
- Alternatively, set only
PARAGRAPH_API_KEY and call paragraph_getMyPublication to auto-discover
Add to your OpenClaw environment (config file or export):
bash
export PARAGRAPH_API_KEY="pk_live_xxxxxxxx"
export PARAGRAPH_PUBLICATION_SLUG="myblog"
Restart or reload OpenClaw to pick up the variables.
Step 4: Verify#
bash
# In an OpenClaw agent session
tools.paragraph_testConnection({}) # should return success: true
tools.paragraph_getMyPublication({}) # should return your publication data
Real-World Use Cases#
Automated Research Publishing#
If you run a Web3 research DAO, use OpenClaw to:
- Scrape or generate daily market reports
- Format them in Markdown with charts
- Publish to Paragraph via
paragraph_createPost
- Mint a coin for each report to create prediction markets
- Notify subscribers with the new slug
Token-Gated Newsletter#
- Build a list of wallet holders from
paragraph_listCoinHolders
- Export to CSV and import as
premium subscribers
- Create a posts with exclusive insights
- Use
sendNewsletter: true to push to that segment only
- Publish to Paragraph first (onchain timestamp)
- Cross-post to Mirror, Medium, or Twitter with proof of originality
- Track engagement across platforms using coin metrics
Personal Content Archive#
Back up all your blog content to your own knowledge base using OpenClaw's knowledge-management skill alongside this one — parse posts with paragraph_listPosts, extract content, and store locally in a structured format.
Error Handling & Best Practices#
Rate Limits#
Paragraph API has rate limits per API key. If you hit limits:
- Implement exponential backoff (wait 1s, 2s, 4s, 8s...)
- Batch operations (e.g., import subscribers instead of individual adds)
- Cache frequently accessed data (publication info, user profiles)
Onchain Delays#
When waitForProcessing: false, the post returns immediately but the slug may be undefined for a few seconds/minutes while the transaction confirms. Strategies:
- Poll
paragraph_getPostBySlug with the returned id until slug appears
- Or just set
waitForProcessing: true for simpler flow (slower)
CSV Import Quirks#
- File must be UTF-8 plain text
- Headers:
email,wallet,tags (tags are comma-separated within the cell)
- At least one of email or wallet must be present per row
- Duplicate emails/wallets are skipped by Paragraph
Invalid API Keys#
Common causes:
- Key from test environment used in production (or vice versa)
- Key accidentally revoked
- Copy-paste error (extra whitespace)
Use paragraph_testConnection to validate.
Implementation Details#
- Written in pure JavaScript (ES modules)
- Uses Node's built-in
fetch (Node 19+ / OpenClaw's Node 24)
- No external dependencies → minimal attack surface, easy to audit
- Tools are pure functions — easy to test and compose
- Error responses include human-readable messages from Paragraph API
Troubleshooting#
SymptomLikely CauseFixNot logged in from any toolPARAGRAPH_API_KEY missing/invalidSet correct key, restart agentPublication not foundSlug typo or wrong publicationVerify slug via dashboard or getMyPublication``Slug undefined after createwaitForProcessing: false and fast pollingWait a few seconds and retry, or use waitForProcessing: true``Rate limit exceededToo many requests in short timeAdd delays, batch calls, or upgrade Paragraph planCSV import: invalid formatNot CSV, wrong headers, binary modeEnsure UTF-8 text with exact header row
Version History#
- 1.2.0 (2026-03-10) — Republished to ClawHub with comprehensive docs; added LICENSE; minor improvements
- 1.1.0 — Added coin holder listing, enhanced user lookup
- 1.0.0 — Initial public release with posts, publications, subscribers, coins, feed
License#
ISC © Phil (OpenClaw)
Contributing#
This skill lives at: https://github.com/ClaireAICodes/openclaw-skill-paragraph
Issues and PRs welcome. Please test against a Paragraph sandbox account before submitting.