🧪 Skills

clawbox-link-to-docs

Turn a user shared web link into two Feishu docs: (1) full original text archive with minimal loss and clear source metadata, and (2) structured analysis sum...

v1.0.0
❤️ 0
⬇️ 152
👁 1
Share

Description


name: clawbox-link-to-docs description: "Turn a user shared web link into two Feishu docs: (1) full original text archive with minimal loss and clear source metadata, and (2) structured analysis summary. Use when the user sends an article/report/blog URL and asks for full text plus analysis, web archive plus brief, or link to knowledge capture."

ClawBox Link to Docs

Execute this workflow when user sends a URL and expects both source doc and analysis doc.

Workflow

  1. Fetch source content

    • Try readable extraction from the URL.
    • If redirected or homepage only content is returned, switch to alternative extraction path (browser or manual source capture) before proceeding.
    • Preserve original language and paragraph order.
  2. Create or update two Feishu docs

    • Doc A: [Source] </li> <li>Doc B: [Analysis] <title></li> </ul> </li> <li> <p>Write Source doc (complete first)</p> <ul> <li>Include source URL and capture time.</li> <li>Write full original text with paragraph breaks.</li> <li>Do not replace with short summary.</li> <li>If extraction is partial, label clearly: Partial Capture plus missing scope note.</li> </ul> </li> <li> <p>Write Analysis doc (structured)</p> <ul> <li>Use the template in references/analysis-template.md.</li> <li>Keep concise and decision oriented.</li> </ul> </li> <li> <p>Quality gates (required)</p> <ul> <li>Read back both docs after write.</li> <li>Source doc fails if it is one line, too short, or clearly summary like.</li> <li>If fail, rewrite once with better segmentation/chunking.</li> </ul> </li> <li> <p>Report back to user</p> <ul> <li>Return two doc links.</li> <li>State completion status: Full Capture or Partial Capture.</li> </ul> </li> </ol> <h2>Non-negotiables</h2> <ul> <li>Default output is always two docs for a link task.</li> <li>Source doc priority is fidelity over formatting.</li> <li>Never claim full if content is truncated or fallback source is incomplete.</li> </ul> </div></section><!-- Changelog --><!-- Version History --><!-- Reviews --><div id="reviews-section"><section><h2 class="text-lg font-semibold text-gray-900 mb-4">Reviews (0)</h2><!-- Sign in prompt --> <div class="bg-gray-50 rounded-lg p-4 mb-6 text-sm text-gray-500"><a href="/auth/login" class="text-brand-600 hover:text-brand-700 font-medium">Sign in</a> to write a review.</div><!-- Empty state --> <div class="bg-gray-50 rounded-xl p-8 text-center"><p class="text-sm text-gray-500">No reviews yet. Be the first to review!</p></div></section></div><!-- Comments --><div id="comments-section"><section><h2 class="text-lg font-semibold text-gray-900 mb-4" id="comments">Comments (0)</h2><div class="bg-gray-50 rounded-lg p-4 mb-6 text-sm text-gray-500"><a href="/auth/login" class="text-brand-600 hover:text-brand-700 font-medium">Sign in</a> to join the discussion.</div><div class="bg-gray-50 rounded-xl p-8 text-center"><p class="text-sm text-gray-500">No comments yet. Be the first to share your thoughts!</p></div></section></div></div><!-- Sidebar (1/3) --><div class="space-y-6"><!-- Platforms --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Compatible Platforms</h3><div class="flex flex-wrap gap-2"></div></div><!-- Tags --><!-- Links --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Links</h3><div class="space-y-2"><a href="https://clawhub.ai/skills/clawbox" target="_blank" rel="noopener noreferrer" class="flex items-center gap-2 text-sm text-brand-600 hover:text-brand-700">📂 Source Code</a> </div></div><!-- Pricing (DISABLED: free-only mode — always show Free) --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Pricing</h3><span class="text-sm font-medium text-green-700 bg-green-50 px-3 py-1 rounded-full">Free</span></div></div></div><!-- Related Items --><section class="mt-12"><h2 class="text-xl font-bold text-gray-900 mb-6">Related Configs</h2><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"><div class="relative"><a href="/item/skill-self-improving-agent" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">self-improving-agent</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Clau...</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 2.0k</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 218k</span></div></div></a> <button data-compare-slug="skill-self-improving-agent" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/self-improving-agent" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Self Improving Agent</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Captures learnings, errors, and corrections to enable continuous improvement. And also 50+ models for image generation, video generation, text-to-speech, spe...</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 2.0k</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 206k</span></div></div></a> <button data-compare-slug="self-improving-agent" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/find-skills" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Find Skills</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Search, discover, and install skills from the open agent skills ecosystem to extend agent capabilities for specific tasks or domains.</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 814</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 199k</span></div></div></a> <button data-compare-slug="find-skills" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/skill-summarize" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Summarize</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">--- name: summarize description: Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube). homepage: https://summarize.sh metadata: {"clawdbot":{"emoji":"🧾","requires":{"b</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 609</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 160k</span></div></div></a> <button data-compare-slug="skill-summarize" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div></div></section></div></main><footer class="bg-white border-t border-gray-200 mt-16"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12"><div class="grid grid-cols-2 md:grid-cols-5 gap-8"><!-- Brand --><div class="col-span-2 md:col-span-1"><a href="/" class="flex items-center gap-2 text-lg font-bold text-brand-600"><span>☕</span> <span>Skillbrew</span></a><p class="mt-2 text-sm text-gray-500">Brew your perfect agent</p></div><!-- Product --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Product</h3><ul class="space-y-2"><li><a href="/browse" class="text-sm text-gray-500 hover:text-gray-700">Browse</a></li><li><a href="/collections" class="text-sm text-gray-500 hover:text-gray-700">Collections</a></li><li><a href="/weekly" class="text-sm text-gray-500 hover:text-gray-700">Weekly</a></li><li><a href="/submit" class="text-sm text-gray-500 hover:text-gray-700">Submit</a></li></ul></div><!-- Community --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Community</h3><ul class="space-y-2"><li><a href="https://github.com/skillbrew-dev" target="_blank" rel="noopener" class="text-sm text-gray-500 hover:text-gray-700">GitHub</a></li><li><a href="https://discord.gg/zuXQfjUW" target="_blank" rel="noopener" class="text-sm text-gray-500 hover:text-gray-700">Discord</a></li><li><a href="mailto:skillbrew@skillbrew.dev" class="text-sm text-gray-500 hover:text-gray-700">Email</a></li></ul></div><!-- Resources --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Resources</h3><ul class="space-y-2"><li><a href="/api/docs" class="text-sm text-gray-500 hover:text-gray-700">API Docs</a></li><li><a href="/feed.xml" class="text-sm text-gray-500 hover:text-gray-700">RSS Feed</a></li></ul></div><!-- Legal --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Legal</h3><ul class="space-y-2"><li><a href="/about" class="text-sm text-gray-500 hover:text-gray-700">About</a></li><li><a href="/privacy" class="text-sm text-gray-500 hover:text-gray-700">Privacy Policy</a></li><li><a href="/terms" class="text-sm text-gray-500 hover:text-gray-700">Terms of Service</a></li></ul></div></div><div class="mt-8 pt-8 border-t border-gray-200"><p class="text-sm text-gray-400 text-center">© 2026 Skillbrew. All rights reserved.</p></div></div></footer><!-- Compare floating bar --><div id="compare-bar" class="fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 shadow-lg py-3 px-4 z-50 hidden"><div class="max-w-7xl mx-auto flex items-center justify-between"><span class="text-sm text-gray-700"><strong id="compare-count">0</strong> items selected for comparison</span><div class="flex items-center gap-2"><button onclick="clearCompareSet()" class="px-3 py-1.5 text-sm text-gray-500 hover:text-gray-700 transition-colors">Clear</button> <button onclick="goCompare()" class="px-4 py-1.5 text-sm font-medium text-white bg-brand-600 rounded-lg hover:bg-brand-700 transition-colors">Compare Now</button></div></div></div><script> document.body.addEventListener('htmx:responseError', function(event) { if (event.detail.xhr.status === 401) { window.location.href = '/auth/login?return_url=' + encodeURIComponent(window.location.pathname); } }); // Include CSRF token in all HTMX requests document.body.addEventListener('htmx:configRequest', function(evt) { var meta = document.querySelector('meta[name="csrf-token"]'); if (meta) { evt.detail.headers['X-CSRF-Token'] = meta.content; } }); // Compare set (localStorage) function getCompareSet() { try { return JSON.parse(localStorage.getItem('sb_compare') || '[]'); } catch { return []; } } function saveCompareSet(set) { localStorage.setItem('sb_compare', JSON.stringify(set)); updateCompareBar(); } function toggleCompare(slug) { let set = getCompareSet(); const idx = set.indexOf(slug); if (idx >= 0) { set.splice(idx, 1); } else { if (set.length >= 3) { set.shift(); } set.push(slug); } saveCompareSet(set); updateCompareButtons(); } function clearCompareSet() { saveCompareSet([]); updateCompareButtons(); } function goCompare() { const set = getCompareSet(); if (set.length >= 2) { window.location.href = '/compare?items=' + set.join(','); } } function updateCompareBar() { const set = getCompareSet(); const bar = document.getElementById('compare-bar'); const count = document.getElementById('compare-count'); if (bar) { if (set.length >= 2) { bar.classList.remove('hidden'); } else { bar.classList.add('hidden'); } if (count) count.textContent = set.length; } } function updateCompareButtons() { const set = getCompareSet(); document.querySelectorAll('[data-compare-slug]').forEach(btn => { const slug = btn.dataset.compareSlug; if (set.includes(slug)) { btn.classList.add('bg-brand-50', 'text-brand-600', 'border-brand-300'); btn.classList.remove('text-gray-400', 'border-gray-200'); btn.title = 'Remove from comparison'; } else { btn.classList.remove('bg-brand-50', 'text-brand-600', 'border-brand-300'); btn.classList.add('text-gray-400', 'border-gray-200'); btn.title = 'Add to comparison'; } }); } document.addEventListener('DOMContentLoaded', function() { updateCompareBar(); updateCompareButtons(); }); document.body.addEventListener('htmx:afterSwap', function() { updateCompareButtons(); }); </script></body></html>