Paragraph Test
by @claireaicodes
Access and manage Web3-native blogging on Paragraph.com with onchain posts, tokenized content, subscriber management, and automated publishing via API.
clawhub install paragraph-testπ About This Skill
name: paragraph description: OpenClaw skill for Paragraph.com β Web3-native blogging with tokenization, onchain storage, and community features version: 1.2.0 author: Phil (OpenClaw) license: ISC homepage: https://github.com/ClaireAICodes/openclaw-skill-paragraph metadata: { "openclaw": { "emoji": "π", "requires": { "env": ["PARAGRAPH_API_KEY", "PARAGRAPH_PUBLICATION_SLUG"] } } }
Skill type
type: toolMain entry point
main: skill.jsEnvironment variables required
env: - name: PARAGRAPH_API_KEY description: Paragraph API authentication key required: true - name: PARAGRAPH_PUBLICATION_SLUG description: Publication slug for URL building (required). Example: "myblog" or "jonathancolton.eth" required: true - name: PARAGRAPH_PUBLICATION_ID description: Default publication ID (optional, not needed if slug is set) required: false - name: PARAGRAPH_API_BASE_URL description: Custom API base URL (for testing) required: falseTools provided
tools: - paragraph_testConnection - paragraph_createPost - paragraph_getPost - paragraph_getPostBySlug - paragraph_listPosts - paragraph_getPublication - paragraph_getPublicationByDomain - paragraph_getMyPublication - paragraph_addSubscriber - paragraph_listSubscribers - paragraph_importSubscribers - paragraph_getFeed - paragraph_getPostsByTag - paragraph_getCoin - paragraph_getCoinByContract - paragraph_getPopularCoins - paragraph_listCoinHolders - paragraph_getUser - paragraph_getUserByWallet - paragraph_getSubscriberCountDependencies
dependencies: [] # Uses native fetch, no external depsTags for discovery
tags: - blogging - web3 - nft - tokens - publishing - content - openclaw - openclaw-skill - paragraph - decentralized - onchain - social - creator-economy - content-automationDocumentation
documentation: README.mdSetup instructions
setup: - name: Get API key description: Go to Paragraph account settings β Integrations β Generate API key - name: Get publication slug description: Find your publication slug in your Paragraph dashboard (e.g., "myblog" or "jonathancolton.eth") - name: Set environment variables description: Add PARAGRAPH_API_KEY and PARAGRAPH_PUBLICATION_SLUG to OpenClaw environment - name: (Optional) Set default publication ID description: Set PARAGRAPH_PUBLICATION_ID if you prefer using ID over slug (slug is recommended)Example usage
examples: - description: Test Paragraph connection call: paragraph_testConnection - description: Get current publication (auto-discovers ID and slug) call: paragraph_getMyPublication - description: Create a blog post (fast response by default) call: paragraph_createPost params: title: "My Web3 Blog Post" markdown: "# Hello\n\nThis is my first post on Paragraph." sendNewsletter: false categories: ["web3", "blockchain"] # waitForProcessing defaults to false β returns immediately; set true to wait for slug/url - description: List recent posts in publication (auto-discovers ID) call: paragraph_listPosts params: limit: 10 includeContent: false - description: Get token data for a coined post call: paragraph_getCoin params: coinId: "coin_123"Implementation notes
notes: - Uses native fetch API (Node 19+). No additional dependencies. - All tools return standardized { success, data, error } format. - Rate limiting: Implement retry/backoff in agent if needed. - CSV import expects text/csv raw bytes (see README for format). - Post updates (PUT) are not supported by the Paragraph API at this time. - Posts are published onchain immediately upon creation; slug and URL may be undefined until onchain processing completes.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?
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:
waitForProcessing)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:
myblog.paragraph.eth)Subscriber Relationship Management
Build and nurture your audience:
CSV format for import:
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:
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
Setup Guide
Step 1: Get your Paragraph API key
1. Log into Paragraph
2. Navigate to Account Settings β Integrations
3. Click "Generate API Key"
4. 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:
myblog.paragraph.eth, the slug is myblogPARAGRAPH_API_KEY and call paragraph_getMyPublication to auto-discoverStep 3: Configure OpenClaw
Add to your OpenClaw environment (config file or export):
export PARAGRAPH_API_KEY="pk_live_xxxxxxxx"
export PARAGRAPH_PUBLICATION_SLUG="myblog"
Restart or reload OpenClaw to pick up the variables.
Step 4: Verify
# 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:
1. Scrape or generate daily market reports
2. Format them in Markdown with charts
3. Publish to Paragraph via paragraph_createPost
4. Mint a coin for each report to create prediction markets
5. Notify subscribers with the new slug
Token-Gated Newsletter
1. Build a list of wallet holders from paragraph_listCoinHolders
2. Export to CSV and import as premium subscribers
3. Create a posts with exclusive insights
4. Use sendNewsletter: true to push to that segment only
Cross-Platform Syndication
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:
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:
paragraph_getPostBySlug with the returned id until slug appearswaitForProcessing: true for simpler flow (slower)CSV Import Quirks
email,wallet,tags (tags are comma-separated within the cell)Invalid API Keys
Common causes:
Use paragraph_testConnection to validate.
Implementation Details
fetch (Node 19+ / OpenClaw's Node 24)Troubleshooting
| Symptom | Likely Cause | Fix |
|---------|-------------|-----|
| Not logged in from any tool | PARAGRAPH_API_KEY missing/invalid | Set correct key, restart agent |
| Publication not found | Slug typo or wrong publication | Verify slug via dashboard or getMyPublication |
| Slug undefined after create | waitForProcessing: false and fast polling | Wait a few seconds and retry, or use waitForProcessing: true |
| Rate limit exceeded | Too many requests in short time | Add delays, batch calls, or upgrade Paragraph plan |
| CSV import: invalid format | Not CSV, wrong headers, binary mode | Ensure UTF-8 text with exact header row |
Version History
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.
π Tips & Best Practices
| Symptom | Likely Cause | Fix |
|---------|-------------|-----|
| Not logged in from any tool | PARAGRAPH_API_KEY missing/invalid | Set correct key, restart agent |
| Publication not found | Slug typo or wrong publication | Verify slug via dashboard or getMyPublication |
| Slug undefined after create | waitForProcessing: false and fast polling | Wait a few seconds and retry, or use waitForProcessing: true |
| Rate limit exceeded | Too many requests in short time | Add delays, batch calls, or upgrade Paragraph plan |
| CSV import: invalid format | Not CSV, wrong headers, binary mode | Ensure UTF-8 text with exact header row |