Token导航 LogoToken导航TokenDH.com
研究检索权限需确认clawhub未标认证来源可访问clear审计通过

resume-studio简历工作室

Agent Skill

resume-studio 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

3,843

周安装

157

GitHub Stars

公开资料未说明

下载量

1,243
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:resume-studio(简历工作室)
来源仓库:https://github.com/tobewin/resume-studio
安装命令:
openclaw skills install resume-studio
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install resume-studio

简介

多功能专业简历生成平台,支持 Word 与 PDF 双格式输出与个性化定制。

  • 适用于多职位申请场景下的快速简历创建与版本管理需求。
  • 内置丰富模板库,允许用户调整配色、字体与模块顺序以匹配企业文化。
  • 安装前请检查是否具备图形界面渲染能力或命令行生成支持。
  • 注意:部分高级功能可能需要付费订阅,免费版存在导出次数限制。

SKILL.md

name
resume-studio
description
Professional resume generator. Use when user needs to create, optimize, or customize resumes for job applications. Supports Word and PDF output, multiple styles, industry templates, and ATS-friendly formats. 简历生成、求职简历、简历优化。
version
1.0.2
license
MIT-0
metadata
{"openclaw": {"emoji": "📋", "requires": {"bins": ["python3"], "env": []}}}
dependencies
pip install python-docx fpdf2

Resume Studio

Professional resume generator with ATS-friendly templates, multiple styles, and Word/PDF output.

Features

  • 📋 Smart Generation: AI-powered content optimization
  • 🎨 Multiple Styles: Classic, Modern, Creative, Minimal, Academic
  • 📄 Word Output: Professional .docx format
  • 👤 Photo Support: Optional photo area
  • 🌐 Web Research: Query job market trends
  • 📁 File Import: Import existing materials
  • 🎯 ATS-Friendly: Passes Applicant Tracking Systems
  • 🌍 Multi-Language: Chinese and English support
  • 🖥️ Cross-Platform: Windows, macOS, Linux

Trigger Conditions

  • "帮我写简历" / "Help me write a resume"
  • "生成求职简历" / "Generate job resume"
  • "优化我的简历" / "Optimize my resume"
  • "resume-studio"

Resume Styles

Classic (经典)

  • Traditional layout
  • Professional fonts
  • Suitable for: Finance, Law, Government

Modern (现代)

  • Clean design
  • Bold headers
  • Suitable for: Tech, Marketing, Design

Creative (创意)

  • Unique layout
  • Color accents
  • Suitable for: Design, Media, Art

Minimal (极简)

  • Simple structure
  • Focus on content
  • Suitable for: Academic, Research

Information Collection

Agent collects:

1. Basic Info
   - Name
   - Phone
   - Email
   - Location

2. Education
   - School
   - Degree
   - Major
   - GPA (optional)

3. Experience
   - Company
   - Position
   - Duration
   - Responsibilities

4. Skills
   - Technical skills
   - Languages
   - Certifications

5. Target Position
   - Job title
   - Industry
   - Specific requirements

Python Code

from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from fpdf import FPDF
import os

class ResumeGenerator:
    def __init__(self, style='modern'):
        self.style = style
        self.data = {}
    
    def set_basic_info(self, name, phone, email, location=''):
        self.data['name'] = name
        self.data['phone'] = phone
        self.data['email'] = email
        self.data['location'] = location
    
    def add_education(self, school, degree, major, year, gpa=None):
        if 'education' not in self.data:
            self.data['education'] = []
        self.data['education'].append({
            'school': school,
            'degree': degree,
            'major': major,
            'year': year,
            'gpa': gpa
        })
    
    def add_experience(self, company, position, duration, responsibilities):
        if 'experience' not in self.data:
            self.data['experience'] = []
        self.data['experience'].append({
            'company': company,
            'position': position,
            'duration': duration,
            'responsibilities': responsibilities
        })
    
    def set_skills(self, technical=[], languages=[], certifications=[]):
        self.data['skills'] = {
            'technical': technical,
            'languages': languages,
            'certifications': certifications
        }
    
    def generate_docx(self, output_path):
        doc = Document()
        
        # Name
        name_para = doc.add_paragraph()
        name_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
        name_run = name_para.add_run(self.data.get('name', 'Name'))
        name_run.font.size = Pt(24)
        name_run.bold = True
        
        # Contact
        contact = doc.add_paragraph()
        contact.alignment = WD_ALIGN_PARAGRAPH.CENTER
        contact_text = f"{self.data.get('phone', '')} | {self.data.get('email', '')}"
        if self.data.get('location'):
            contact_text += f" | {self.data['location']}"
        contact.add_run(contact_text)
        
        doc.add_paragraph()
        
        # Education
        doc.add_heading('Education', level=2)
        for edu in self.data.get('education', []):
            doc.add_paragraph(f"{edu['school']} - {edu['degree']} in {edu['major']} ({edu['year']})")
        
        # Experience
        doc.add_heading('Experience', level=2)
        for exp in self.data.get('experience', []):
            doc.add_heading(f"{exp['position']} at {exp['company']}", level=3)
            doc.add_paragraph(f"Duration: {exp['duration']}")
            for resp in exp['responsibilities']:
                doc.add_paragraph(f"• {resp}")
        
        # Skills
        doc.add_heading('Skills', level=2)
        skills = self.data.get('skills', {})
        if skills.get('technical'):
            doc.add_paragraph(f"Technical: {', '.join(skills['technical'])}")
        if skills.get('languages'):
            doc.add_paragraph(f"Languages: {', '.join(skills['languages'])}")
        if skills.get('certifications'):
            doc.add_paragraph(f"Certifications: {', '.join(skills['certifications'])}")
        
        doc.save(output_path)
        return output_path
    
    def generate_pdf(self, output_path):
        pdf = FPDF()
        pdf.add_page()
        
        # Name
        pdf.set_font('Helvetica', 'B', 20)
        pdf.cell(0, 15, self.data.get('name', 'Name'), new_x='LMARGIN', new_y='NEXT', align='C')
        
        # Contact
        pdf.set_font('Helvetica', '', 10)
        contact = f"{self.data.get('phone', '')} | {self.data.get('email', '')}"
        pdf.cell(0, 8, contact, new_x='LMARGIN', new_y='NEXT', align='C')
        pdf.ln(10)
        
        # Education
        pdf.set_font('Helvetica', 'B', 14)
        pdf.cell(0, 8, 'Education', new_x='LMARGIN', new_y='NEXT')
        pdf.ln(3)
        pdf.set_font('Helvetica', '', 11)
        for edu in self.data.get('education', []):
            pdf.cell(0, 6, f"{edu['school']} - {edu['degree']}", new_x='LMARGIN', new_y='NEXT')
        
        pdf.ln(8)
        
        # Experience
        pdf.set_font('Helvetica', 'B', 14)
        pdf.cell(0, 8, 'Experience', new_x='LMARGIN', new_y='NEXT')
        pdf.ln(3)
        pdf.set_font('Helvetica', '', 11)
        for exp in self.data.get('experience', []):
            pdf.set_font('Helvetica', 'B', 11)
            pdf.cell(0, 6, f"{exp['position']} at {exp['company']}", new_x='LMARGIN', new_y='NEXT')
            pdf.set_font('Helvetica', '', 10)
            pdf.cell(0, 5, f"Duration: {exp['duration']}", new_x='LMARGIN', new_y='NEXT')
            for resp in exp['responsibilities']:
                pdf.cell(0, 5, f"  • {resp}", new_x='LMARGIN', new_y='NEXT')
            pdf.ln(5)
        
        pdf.ln(8)
        
        # Skills
        pdf.set_font('Helvetica', 'B', 14)
        pdf.cell(0, 8, 'Skills', new_x='LMARGIN', new_y='NEXT')
        pdf.ln(3)
        pdf.set_font('Helvetica', '', 11)
        skills = self.data.get('skills', {})
        if skills.get('technical'):
            pdf.cell(0, 6, f"Technical: {', '.join(skills['technical'])}", new_x='LMARGIN', new_y='NEXT')
        if skills.get('languages'):
            pdf.cell(0, 6, f"Languages: {', '.join(skills['languages'])}", new_x='LMARGIN', new_y='NEXT')
        
        pdf.output(output_path)
        return output_path

# Example
resume = ResumeGenerator('modern')
resume.set_basic_info('John Doe', '13800138000', 'john@example.com', 'Beijing')
resume.add_education('Peking University', 'Bachelor', 'Computer Science', '2020-2024')
resume.add_experience('TechCorp', 'Software Engineer', '2024-present', [
    'Developed AI features',
    'Improved system performance by 50%'
])
resume.set_skills(['Python', 'AI', 'Cloud'], ['Chinese', 'English'], ['AWS Certified'])

resume.generate_docx('resume.docx')
resume.generate_pdf('resume.pdf')

Notes

  • ATS-friendly formatting
  • Professional typography
  • Multi-language support
  • Cross-platform compatible

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

94.47%
按下载量换算1,174

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

权限需确认

当前来源未能明确判断权限范围,默认进入异常复核队列。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills