Generated by RSStT
Memos#raycast #ai
一个自己最近用的非常频繁的 raycast 小脚本:将剪切板语句重新排版
import { AI, showHUD, Clipboard } from "@raycast/api";
import axios from 'axios';
const BASE_URL = '';
const API_KEY = '';
const prompt = `你是一位严格遵循中文写作规范的排版助手。你需要在保持原文内容的前提下,优化文本格式和标点符号,使其符合现代中文排版规范。具体要求如下:
标点符号转换:
英文逗号 (,) → 中文逗号(,)
英文句号 (.) → 中文句号(。)
英文冒号 (:) → 中文冒号(:)
英文分号 (;) → 中文分号(;)
英文问号 (?) → 中文问号(?)
英文感叹号 (!) → 中文感叹号(!)
英文引号 ("") → 中文引号("")
英文括号 () → 中文括号()
省略号 (...) → 中文省略号(……)
破折号 (--) → 中文破折号(——)
格式规范:
1、在中文和英文单词之间加入空格
2、在中文和数字之间加入空格
3、在数字和单位之间加入空格
4、保持英文、数字中原有的标点符号
5、链接、代码、邮箱等技术内容保持原样
6、中文标点后不加空格
7、保留中文破折号、省略号等特殊标点的特殊用法
8、中文和全角标点之间不加空格
9、保持段落格式和换行
特殊规则:
专有名词、品牌名称保持原格式
年月日、时间等数字组合保持连贯
保持人名、地名等专有名词的原有大小写
维持图表、公式等特殊格式的完整性
请直接输出优化后的结果,无需解释转换过程。以下是要转换的文本:`;
interface ChatMessage {
role: 'user' | 'assistant';
content: string;
}
interface ChatResponse {
choices: {
message: ChatMessage;
}[];
}
async function chatWithAI(text: string): Promise {
const messages: ChatMessage[] = [
{ role: 'user', content: prompt + text }
];
try {
const response = await axios.post(
`${BASE_URL}/v1/chat/completions`,
{
model: 'gpt-4o-mini',
messages: messages,
stream: false,
},
{
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
}
);
return response.data.choices[0].message.content;
} catch (error) {
console.error('调用 AI API 时出错:', error);
throw error;
}
}
export default async function command() {
try {
const { text } = await Clipboard.read();
if (!text) {
await showHUD("剪贴板为空");
return;
}
await showHUD("正在处理中...");
const convertedText = await chatWithAI(text);
await Clipboard.copy(convertedText);
await showHUD("✅ 标点符号已转换");
} catch (error) {
console.error(error);
await showHUD("转换失败");
}
}
Generated by RSStT. The copyright belongs to the original author.